Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > header


Автор: anti_snayper 12.10.2007, 01:16
Проблема такая:
я авторизируюсь на странице http://localhost/..../history.php?id_grypi=1&id_menu=1
после входа он меня кидает на  http://localhost/..../history.php
А т.к. вксь сайт динамический, то без этих параметров ( id_grypi=1&id_menu=1 ) вся страница сплошь в ошибках.
вот часть кода:
Код

<?php
session_start();
?>
...........
<?php
    include_once("auhtorization.inc");
    $php_self = $_SERVER['PHP_SELF'];
    $regstr = "
           <FORM action=\"{$php_self}\" method=\"post\" border=5>
           <TABLE>
                <COL align=\"right\"> <COL align=\"left\">
                 <TR>
                        <TD>логин:</TD>
                        <TD><INPUT type=\"text\" name=\"user\" value=\"\"></TD>
                </TR>
         <TR>
               <TD>пароль:</TD>
               <TD><INPUT type=\"password\" name=\"pass\" value=\"\"></TD>
        </TR>
        <TR>
                 <TD colspan = 2><INPUT type=\"submit\" name=\"submit\" value=\"Войти\"></TD>
       </TR>
    </TABLE>
     </FORM>";
echo($regstr);
?>


а это auhtorization.inc
[code=php]
...........
<?php
// булева переменная $vhod определяет выполнены условия для входа или нет
if ($vhod) {
    $_SESSION["username"] = $user;
        $url = "index.php";
        header('Location: ' . $url . "?" . session_name() . "=" . session_id());  
}
?>
/code]
нужно чтобы после входа, пользователь перенаправлялся index.php
либо оставался на этой же странице но параметры передаваемые через GET не исчезали.
В приведенном коде 2й вариант я срезал, так как даже на index.php 
в чем ошибка может кто-нить подсказать?

Автор: rMaveric 12.10.2007, 08:35
Ты же сам передаешь URL страницы для редиректа а именно 
Код
header('Location: ' . $url . "?" . session_name() . "=" . session_id());


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

<?php
// булева переменная $vhod определяет выполнены условия для входа или нет

$id_grypi=$_GET['id_grypi'];
$id_menu=$_GET['id_menu'];
if ($vhod)
    $_SESSION["username"] = $user;
$url = "index.php";
header('Location: index.php'. session_name() . '=' . session_id()."&d_grypi=$d_grypi&id_menu=$id_menu");  
?>


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

Автор: anti_snayper 12.10.2007, 12:53
Этот адрес я привел  в качестве примера, форма авторизации у меня если на многих страницах сайта и  параметры на них - разные.
Можно ли как-нибудь передать в переменную адрес текущий страницы вместе со всеми параметрами?




Автор: rMaveric 12.10.2007, 21:36
Можно, все зависит от того какой скрипт у тебя отвечает за авторизацию, если отдельный, то он может проверить реферальскую ссылку, если текущий, то может просто проанализировать УРЛ

Автор: anti_snayper 12.10.2007, 21:46
Все , сделал.
Проблему обошел примерно таким кодом:
Код

 $url = $_SERVER['HTTP_REFERER'];
                                  foreach($_GET as $key => $value) {
                                   if (strstr($url,"?")) {
                                       $url .='&'.$key. '=' .$value;
                                   }
                                   else
                                   {
                                       $url .='&'.$key. '=' .$value;
                                   }
                                  }

Всем спасибо
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)