Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Слетает сессия !?
 
 автор: namo   (25.11.2005 в 14:20)   письмо автору
 
 

Здравствуйте,

Столкнулся с такой проблемой, на сайте есть форма авторизации, после авторизации данные пишутся в сесию и всё вроде нормально, но вот после редиректа:

<?
header
("Location: http://".$_SERVER['HTTP_HOST']."/");
exit;
?>

Сесия слетает, хотя на домашнем серваке все работает, phpinfo:
http://parfum.sport-net.ru/t.php

Что тут можно сделать ???

   
 
 автор: cernos   (25.11.2005 в 15:46)   письмо автору
 
   для: namo   (25.11.2005 в 14:20)
 

Попробуйте использовать или яваскрипт:

<body onload="history.back();">


Или такую переадресацию:

echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=".@urldecode($_SERVER["HTTP_REFERER"])."'>";

   
 
 автор: Ressfourt   (25.11.2005 в 15:53)   письмо автору
 
   для: namo   (25.11.2005 в 14:20)
 

фцнкцию exit можешь убрать так как она тут совсем не нужна
сессия не должна впринцепе слетать если перед авторизаций и после прописано session_start();
а с редирктом попробуй

header("Location:".$_SERVER['PHP_SELF']."");


или


$location = "имя твоего хоста с http://";
header("Location:$location');

   
 
 автор: namo   (25.11.2005 в 16:01)   письмо автору
 
   для: Ressfourt   (25.11.2005 в 15:53)
 

exit убирать нельзя, так как это функция которая вырубает код исли что не так...

<?
function Redirect($goto)
{
        
header("Location: http://".$_SERVER['HTTP_HOST']."/".$goto);
        exit;
}
?>

а вот чё сесия летит просто непонимаю, вроде свё нормально работает на localhost....
может есть более интересные способы ???

   
 
 автор: Ressfourt   (25.11.2005 в 16:03)   письмо автору
 
   для: namo   (25.11.2005 в 16:01)
 

а зачем использовать exit если авторизация не прошла выведи ошибку типо логин и пароль введен не верно и покажи ему снова логин форму а если прошла делай редирект...

   
 
 автор: namo   (25.11.2005 в 16:07)   письмо автору
 
   для: Ressfourt   (25.11.2005 в 16:03)
 

так все и происходит, вот только после редиректа сесия слетает....
функция находится в классе и exit здесь не обязателен, зато в других частях кода очень желателен, так что я сразу его туда вписал, чтоб потом не гимороится...

   
 
 автор: Ressfourt   (25.11.2005 в 16:12)   письмо автору
 
   для: namo   (25.11.2005 в 16:07)
 

кхм но в данном случае exit убери так как он все равно не используется после header он все равно ексит не видит...

у тебя session_start() прописан в самом начале кода на всех страницах?

так как у тебя на локалке возможно в php_ini прописано session_auto_start = On а на сервере твоем OFF и если session_start() у тебя нигде не прописан есстественно сессии включатся не будут

   
 
 автор: namo   (25.11.2005 в 16:13)   письмо автору
 
   для: Ressfourt   (25.11.2005 в 16:12)
 

>у тебя session_start() прописан в самом начале кода на всех страницах?
конечно

>в данном случае exit убери
могу и убрать, разве это так необходимо ????

   
 
 автор: Ressfourt   (25.11.2005 в 16:15)   письмо автору
 
   для: namo   (25.11.2005 в 16:13)
 

кхм если везде прописано тогда где то ошибка кода может где то не так используешь переменные

   
 
 автор: namo   (25.11.2005 в 16:19)   письмо автору
 
   для: Ressfourt   (25.11.2005 в 16:15)
 

ошибки быть не может, все нормально работает на localhost ! после редиректа сессия сохраняется, а вот на mastehost она падает, ну да ладно, посмотрю чё ещё можно сделать...

   
 
 автор: Ressfourt   (25.11.2005 в 16:23)   письмо автору
 
   для: namo   (25.11.2005 в 16:19)
 

покажи часть кода самой авторизации и часть кода уже после авторизации чтоб посмотреть как задействовано у тебя может найдем почему падает сессия

   
 
 автор: namo   (25.11.2005 в 16:30)   письмо автору
 
   для: 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) > )
    {
        
$_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('?');
}
?>

   
 
 автор: Ressfourt   (25.11.2005 в 16:49)   письмо автору
 
   для: namo   (25.11.2005 в 16:30)
 

попробуй SELECT * FROM shop_users WHERE email = '$email AND pass = '$pass'


а вобще сделай тест после авторизации не делай редирект а сделай так print_r($_SESSION) и посмотри зайдествованы ли они

   
 
 автор: namo   (25.11.2005 в 16:55)   письмо автору
 
   для: Ressfourt   (25.11.2005 в 16:49)
 

print_r($_SESSION) уже делал, переменные создаются, вот только после редиректа они исчезают...

   
 
 автор: Ressfourt   (25.11.2005 в 17:01)   письмо автору
 
   для: namo   (25.11.2005 в 16:55)
 

кхм покажи теперь часть кода где проверяются задействованы ли сесси после редиректа

   
 
 автор: namo   (25.11.2005 в 17:10)   письмо автору
 
   для: Ressfourt   (25.11.2005 в 17:01)
 

сорри за мозгое....во, забыл на мастерхосте прописать session_start();

   
 
 автор: Ressfourt   (25.11.2005 в 17:17)   письмо автору
 
   для: namo   (25.11.2005 в 17:10)
 

главное что заработало и все таки обнаружил ... остальное не важно у всех у нас бывает мозги устают :)))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования