|
|
|
| Здравствуйте,
Столкнулся с такой проблемой, на сайте есть форма авторизации, после авторизации данные пишутся в сесию и всё вроде нормально, но вот после редиректа:
<?
header("Location: http://".$_SERVER['HTTP_HOST']."/");
exit;
?>
|
Сесия слетает, хотя на домашнем серваке все работает, phpinfo:
http://parfum.sport-net.ru/t.php
Что тут можно сделать ??? | |
|
|
|
|
|
|
|
для: namo
(25.11.2005 в 14:20)
| | Попробуйте использовать или яваскрипт:
<body onload="history.back();">
|
Или такую переадресацию:
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=".@urldecode($_SERVER["HTTP_REFERER"])."'>";
|
| |
|
|
|
|
|
|
|
для: namo
(25.11.2005 в 14:20)
| | фцнкцию exit можешь убрать так как она тут совсем не нужна
сессия не должна впринцепе слетать если перед авторизаций и после прописано session_start();
а с редирктом попробуй
header("Location:".$_SERVER['PHP_SELF']."");
|
или
$location = "имя твоего хоста с http://";
header("Location:$location');
|
| |
|
|
|
|
|
|
|
для: Ressfourt
(25.11.2005 в 15:53)
| | exit убирать нельзя, так как это функция которая вырубает код исли что не так...
<?
function Redirect($goto)
{
header("Location: http://".$_SERVER['HTTP_HOST']."/".$goto);
exit;
}
?>
|
а вот чё сесия летит просто непонимаю, вроде свё нормально работает на localhost....
может есть более интересные способы ??? | |
|
|
|
|
|
|
|
для: namo
(25.11.2005 в 16:01)
| | а зачем использовать exit если авторизация не прошла выведи ошибку типо логин и пароль введен не верно и покажи ему снова логин форму а если прошла делай редирект... | |
|
|
|
|
|
|
|
для: Ressfourt
(25.11.2005 в 16:03)
| | так все и происходит, вот только после редиректа сесия слетает....
функция находится в классе и exit здесь не обязателен, зато в других частях кода очень желателен, так что я сразу его туда вписал, чтоб потом не гимороится... | |
|
|
|
|
|
|
|
для: namo
(25.11.2005 в 16:07)
| | кхм но в данном случае exit убери так как он все равно не используется после header он все равно ексит не видит...
у тебя session_start() прописан в самом начале кода на всех страницах?
так как у тебя на локалке возможно в php_ini прописано session_auto_start = On а на сервере твоем OFF и если session_start() у тебя нигде не прописан есстественно сессии включатся не будут | |
|
|
|
|
|
|
|
для: Ressfourt
(25.11.2005 в 16:12)
| | >у тебя session_start() прописан в самом начале кода на всех страницах?
конечно
>в данном случае exit убери
могу и убрать, разве это так необходимо ???? | |
|
|
|
|
|
|
|
для: namo
(25.11.2005 в 16:13)
| | кхм если везде прописано тогда где то ошибка кода может где то не так используешь переменные | |
|
|
|
|
|
|
|
для: Ressfourt
(25.11.2005 в 16:15)
| | ошибки быть не может, все нормально работает на localhost ! после редиректа сессия сохраняется, а вот на mastehost она падает, ну да ладно, посмотрю чё ещё можно сделать... | |
|
|
|
|
|
|
|
для: namo
(25.11.2005 в 16:19)
| | покажи часть кода самой авторизации и часть кода уже после авторизации чтоб посмотреть как задействовано у тебя может найдем почему падает сессия | |
|
|
|
|
|
|
|
для: Ressfourt
(25.11.2005 в 16:23)
| | эх... открываю комерческую тайну :)
это инклюдный файл session_start в другом файле...
<?
if( isset($_POST['submit']) )
{
$email = null;
$pass = null;
$email = $util->ClearVar($_POST['login']);
$pass = $util->ClearVar($_POST['pass']);
$mysql = mysql_query("SELECT * FROM 'shop_users' WHERE 'email' = '$email' AND 'pass' = '$pass'");
if( $mysql && mysql_num_rows($mysql) > 0 )
{
$_SESSION['user']['login'] = $email;
$_SESSION['user']['pass'] = $pass;
$util->Redirect('?');
}
else
{
$smarty->assign("ABC", "main");
$smarty->assign('file', '_login.html');
$smarty->assign('title', 'Parfum.ru - Вход');
$smarty->display('index.html');
}
}
else
{
$util->Redirect('?');
}
?>
|
| |
|
|
|
|
|
|
|
для: namo
(25.11.2005 в 16:30)
| | попробуй SELECT * FROM shop_users WHERE email = '$email AND pass = '$pass'
а вобще сделай тест после авторизации не делай редирект а сделай так print_r($_SESSION) и посмотри зайдествованы ли они | |
|
|
|
|
|
|
|
для: Ressfourt
(25.11.2005 в 16:49)
| | print_r($_SESSION) уже делал, переменные создаются, вот только после редиректа они исчезают... | |
|
|
|
|
|
|
|
для: namo
(25.11.2005 в 16:55)
| | кхм покажи теперь часть кода где проверяются задействованы ли сесси после редиректа | |
|
|
|
|
|
|
|
для: Ressfourt
(25.11.2005 в 17:01)
| | сорри за мозгое....во, забыл на мастерхосте прописать session_start(); | |
|
|
|
|
|
|
|
для: namo
(25.11.2005 в 17:10)
| | главное что заработало и все таки обнаружил ... остальное не важно у всех у нас бывает мозги устают :))) | |
|
|
|