Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Автоматический переход на страницу, как лучше его реализовать? 
:(
    Опции темы
Vigoroso
Дата 25.7.2006, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



к примеру у меня ситуация со входом(регистрации т.п.) на сайт, я хочу чтобы у меня отдельный php файл обрабатывал полученные переменные из формы, но если возможно так:
 - незаметно для пользователя, т.е. только на сервере, а потом выдавал результат работы на главную страницу
 - или же просто на странице отображались результаты работы... и потом он автоматически переходил на главную... 
PM MAIL   Вверх
BobiKK
Дата 25.7.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: 4
Всего: 16



1) Чтобы было совсем незаметно, надо использовать AJAX
2) Второй вариант гораздо проще. Данные обрабаываешь, а потом переадресовываешь любым известным тебе способом 
PM MAIL   Вверх
Vigoroso
Дата 25.7.2006, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



про 2ой вариант, именно, чтобы автоматически передавлись данные, без учестия пользователя... подскажите как реализовать? 
PM MAIL   Вверх
BobiKK
Дата 25.7.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: 4
Всего: 16



В смысле автоматически без участия пользователя? Немного не понял
Пользователь заполняет форму, жмет на кнопочку "Войти", скрипт обрабатывает даныне и перенаправляет куда надо? 
PM MAIL   Вверх
Vigoroso
Дата 25.7.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



не совсем так...
к примеру в файле input.php - форма с полями, все данные она отправляет в work.php - который обрабатывает запрос  и потом work.php автоматически перехожит на index.php если вход был ужачным или же о5 на input.php если встретились какого-то рода ошибки 
PM MAIL   Вверх
AztEK
Дата 25.7.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Код

header('Location: index.php');
 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Vigoroso
Дата 25.7.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



Цитата(AztEK @ 25.7.2006,  12:53)
Код

header('Location: index.php');

спасибо, сейчас попробую 
PM MAIL   Вверх
Mal Hack
Дата 25.7.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



exit() после header'a не забываем ставить. 
PM ICQ   Вверх
quarz
Дата 25.7.2006, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 7.1.2005

Репутация: 1
Всего: 3



Vigoroso, если ты хочешь именно так как написал - 
Цитата(Vigoroso @  25.7.2006,  15:40 Найти цитируемый пост)
к примеру в файле input.php - форма с полями, все данные она отправляет в work.php - который обрабатывает запрос  и потом work.php автоматически перехожит на index.php если вход был ужачным или же о5 на input.php если встретились какого-то рода ошибки  


то переход можно сделать с помощью <Meta http-equiv=refresh content='0; URL=your_script.php?param=$param'>
эту строчку ты соответственно вписываешь в work.php с переадресацией на index.php если авторизация прошла успешно и на input.php?err="Login error" при ошибке авторизации. 
PM MAIL   Вверх
Vigoroso
Дата 25.7.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



а как установить время задержки? 
PM MAIL   Вверх
Vigoroso
Дата 25.7.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



это index.php
Код

        require 'functions.php';
    
    if(!(isset($_REQUEST[session_name()]))){
        $error = p_POST('login_error');
        if(!empty($error)) echo $error;
        require 'login.php';
    }
    else{
        session_start();
        echo "U are logged as $_SESSION('login')";
    }


а вот это файл logindone.php на который ссылается login.php и которому передаются логин и пароль.
я хочу чтобы он отработал так: если такой пользователь есть, то он стартует сессию и все ок, если нет, то мы в посте в переменной login_error помещаем причину ошибки и в index.php она выводится.
Код

require 'config.php';
    require 'functions.php';
    
    if (!isset($_POST('login_error'))) $_POST('login_error')="";
    
    $login = p_POST('login');
    $pass = p_POST('pass');
    
    if (!empty($login) && !empty($password)){
        query = "    SELECT client_Status 
                    FROM Client 
                    WHERE client_Login='$login' AND client_Password='$pass'
                ";
        $result = mysql_query($query);
        $status = mysql_fetch_row($result);
        
        if (empty($status[0])){
            echo " There is no registered user as $login ";
        }
        else{
            switch ($status[0]){
                0:1:
                    session_start();
                    $_SESSION('login')=$login;
                    $_SESSION('status')=$status[0];
                    //echo " You are logged successfully as $login";
                break;
                2: $_POST('login_error')="You account $login is banned";
                break;
            }
        }
    }
    else{
        $_POST('login_error')="The login or password is incorrect";
    }
    
    header('Location: index.php');
    exit();

на данный момент у меня БД пуста, т.е. после ввода пароля и логина я должен вернуться на главную страницу с сообщением что такого пользователя нет и ещё раз увидеть форму для входа в систму, это теоретически, практически оно так не работает  

Это сообщение отредактировал(а) Vigoroso - 25.7.2006, 20:20
PM MAIL   Вверх
Vigoroso
Дата 25.7.2006, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



мне кажется это header не так должен работать... или что? 
PM MAIL   Вверх
szz
Дата 25.7.2006, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Что за прикол:
Цитата
$_POST('login_error')


Разве так можно обращаться к массиву - индекс в скобки ставить? Впервые вижу...
  Шас проверил - ругается...

Как это у тебя вообще работает?

Добавлено @ 22:27 
Код

 switch ($status[0]){
                0:1:


    Оёёй!   а почему не 
Код

 switch ($status[0]){
                case 0: case 1:

???

   Как у тебя это вообще запускается, ума не приложу!!!

Добавлено @ 22:31 
Цитата
мне кажется это header не так должен работать... или что?  



 К массивам обращаемся не так:
Код

$some_array('sme_index')

 а так:
Код

$some_array['sme_index']

  обрати внимание на квадратные скобки вместо круглых.
    Иначе - фатальная ошибка!

 case проставь в switch!

  Что такое p_POST() - это у тебя функция своя - обертка для $_POST или ты ошибся, написав букву "p" вместо "$"?


  Вот потом посмотри будет ли работать, если нет - опять приводи уже _исправленный_ код и будет дальше лечить. 


--------------------
PM   Вверх
BobiKK
Дата 25.7.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: 4
Всего: 16



display_errors off наверное smile 
PM MAIL   Вверх
Vigoroso
Дата 25.7.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



Цитата(szz @ 25.7.2006,  22:23)
Что за прикол:
Цитата
$_POST('login_error')


Разве так можно обращаться к массиву - индекс в скобки ставить? Впервые вижу...
  Шас проверил - ругается...

Как это у тебя вообще работает?

Добавлено @ 22:27 
Код

 switch ($status[0]){
                0:1:


    Оёёй!   а почему не 
Код

 switch ($status[0]){
                case 0: case 1:

???

   Как у тебя это вообще запускается, ума не приложу!!!

Добавлено @ 22:31 
Цитата
мне кажется это header не так должен работать... или что?  



 К массивам обращаемся не так:
Код

$some_array('sme_index')

 а так:
Код

$some_array['sme_index']

  обрати внимание на квадратные скобки вместо круглых.
    Иначе - фатальная ошибка!

 case проставь в switch!

  Что такое p_POST() - это у тебя функция своя - обертка для $_POST или ты ошибся, написав букву "p" вместо "$"?


  Вот потом посмотри будет ли работать, если нет - опять приводи уже _исправленный_ код и будет дальше лечить.

это просот капец... я сутки за компом... это результаты...
снкс 
PM MAIL   Вверх
szz
Дата 25.7.2006, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Проспись, monsir!   smile  smile  smile   Завтра продолжим 

Это сообщение отредактировал(а) szz - 25.7.2006, 22:34


--------------------
PM   Вверх
Vigoroso
Дата 25.7.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



Код

require 'config.php';
    require 'functions.php';
    
    if (!isset($_POST['login_error'])) $_POST['login_error']="";
    
    $login = p_POST('login');
    $pass = p_POST('pass');
    
    if (!empty($login) && !empty($password)){
        query = "    SELECT client_Status 
                    FROM Client 
                    WHERE client_Login='$login' AND client_Password='$pass'
                ";
        $result = mysql_query($query);
        $status = mysql_fetch_row($result);
        
        if (empty($status[0])){
            echo " There is no registered user as $login ";
        }
        else{
            switch ($status[0]){
                case 0: case 1:
                    session_start();
                    $_SESSION['login']=$login;
                    $_SESSION['status']=$status[0];
                    //echo " You are logged successfully as $login";
                break;
                case 2: $_POST['login_error']="You account $login is banned";
                break;
            }
        }
    }
    else{
        $_POST['login_error']="The login or password is incorrect";
    }
    
    header('Location: index.php');
    exit();

как бы все исправлено... но все равно скрипт не выболняет поставленной задачи 
p_POST это я не перепутал, как ты выразился - это обертка для $_POST 

Это сообщение отредактировал(а) Vigoroso - 25.7.2006, 23:07
PM MAIL   Вверх
S.A.P.
Дата 25.7.2006, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 3
Всего: 71



Vigoroso, убери пока редирект и смотри какие ошибки валятся. С ходу уже вижу, что переменная query записана без доллара. 
PM MAIL   Вверх
szz
Дата 26.7.2006, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



  Например вот так попробуй:

Код

       ...
        if (empty($status[0])){
            $the_message =  " There is no registered user as $login ";
        }
        else{
            switch ($status[0]){
                case 0: case 1:
                    session_start();
                    $_SESSION['login']=$login;
                    $_SESSION['status']=$status[0];
                    $the_message = " You are logged successfully as $login";
                break;
                case 2: $the_message = "You account $login is banned";
                break;
            }
        }
    }
    else{
        $the_message = "The login or password is incorrect";
    }
    
    header('Location: index.php?login_error='.urlencode($the_message));


   Что-то в этом роде. 


--------------------
PM   Вверх
jzZ
Дата 26.7.2006, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 17.7.2006

Репутация: 1
Всего: 2



Скрипту отправляются пост данные, значит заголовки уже отправлены, следовательно никаких header()... smile 
Значит можно так:
Код

echo "<script language='JavaScript'> document.location.href = 'http://forum.vingrad.ru/index.php?showtopic=105451&st=15';</script>";

 
PM MAIL   Вверх
szz
Дата 26.7.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Цитата
Скрипту отправляются пост данные, значит заголовки уже отправлены, следовательно никаких header()...


  С каких это пор хедеры нельзя выводить из-за пост данных?
    Насколько я знаю - главное в output ничего не вывести перед хедерами. А пост-данные вполне можно отправлять - сколько раз я такое делал - получал пост данные, обрабатывал их и затем хедером редиректил! 


--------------------
PM   Вверх
jzZ
Дата 26.7.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 17.7.2006

Репутация: 1
Всего: 2



szz
Ах да ссорри обшибся, я в сценарии накосячил с хтмл )

Добавлено @ 12:28 
не судите строго тока учусь ) 
PM MAIL   Вверх
Vigoroso
Дата 26.7.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



Ты предлагаешь передать сообщение об ошибке через Get... а через POST никак не получится?...
твой варинт сработал, просот я не хочу чтобы пользователь в адресной строке видел какие-либо переменные. 
мой прежний вариент с постом не работает... =\ 

Это сообщение отредактировал(а) Vigoroso - 26.7.2006, 12:30
PM MAIL   Вверх
szz
Дата 26.7.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Что-что-что?! У тебя работает если передавалось через гет?!
Закомменть хедер, посмотри, выпадают ли ошибки!

Добавлено @ 12:58 
Нельзя передавать логин и ПАРОЛЬ через гет, что за бред?!  


--------------------
PM   Вверх
Vigoroso
Дата 26.7.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



Кажись не правильно работает запрос 
-----------------
я не передаю пароль и логин через гет, это все через пост, ты мне предложил сообщение об ошибке, если таковая имеется передавать через гет, я вообще не люблю гет... стоит им пользоваться только в крайних случаях

Добавлено @ 13:18 
по идее он как минимум должен был мне вывести "Array", но в ответ тишина
Код

$status = mysql_fetch_array($result,MYSQL_ASSOC);
echo $status;
 

Это сообщение отредактировал(а) Vigoroso - 26.7.2006, 13:07
PM MAIL   Вверх
szz
Дата 26.7.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Цитата
гет... стоит им пользоваться только в крайних случаях

   Нет, бывают случаи, когда он нужен - например для того, чтоб ссылку сделать. Представь себе в этом форуме все эти переменные, которые через гет - передавались бы через пост - тогда бы я не мог никому кинуть ссылку на конкретный топик.

  А редирект через хедер придется через гет пускать, другого способа я не знаю. Ну разве что следать скрытую форму и жаваскриптом засубмитить, например так:
вместо header('Location: index.php?login_error='.urlencode($the_message));
Код

echo "
<form action=index.php method=post name=submitbypost>
<input type=hidden name=login_error value='".htmlspecialchars($the_message)."'>
</form>
<script>document.submitbypost.submit()</script>
";


  Но это все таки извращение какое-то получается. Впрочем, дело вкуса - если уж настолько не любишь гет...  smile

Добавлено @ 13:26 
Цитата

echo $status;

  вообще чтоб дебагить используй 
Код

echo '<pre>';ver_dump(status);echo '</pre>';

   Так ты точно увидишь что там в переменной, даже если тишина - то и ее увидишь smile

Цитата
должен был мне вывести "Array"

   Ну почему же, если ничего не выбралось, то и ничего и не вернулось 


--------------------
PM   Вверх
Vigoroso
Дата 26.7.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



Всем спасибо за помощь, во всем разобрался 
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0912 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.