Есть файл dblib.php: Код (Text): <?php session_start(); function cleanMemberSession($id,$login,$pass) { session_unset(); session_register("login"); $_SESSION[login]=$login; session_register("password"); $_SESSION[password]=$pass; session_register("iid"); $_SESSION[iid]=$id; session_register("logged_in"); $_SESSION[logged_in]=true; } function checkUser() { $_SESSION['logged_in']=false; $club_row=getrow("users","id",$_SESSION['iid']); if(!(!$club_row || $club_row[nik] != $_SESSION['login'] || $club_row[password] != $_SESSION['password'])) //print $_SESSION[login]." - ".$_SESSION[password]; //header("Location: login.php?err=1"); $_SESSION['logged_in']=true; return $club_row; } и файл login.php: этот файл инклюдится в каждую страницу сайт. Код (Text): <?php $err= $_REQUEST['err']; $login= $_REQUEST['login']; $password= $_REQUEST['password']; $actionflag= $_REQUEST['actionflag']; $logout= $_REQUEST['logout']; connectToDB(); $message=""; if ($logout) session_unset(); if ( isset($actionflag) && $actionflag=="login") { if(empty($login) || empty($password)) $message .=" Заполните все поля!"; else { $val=mysql_query("SELECT id FROM users WHERE nik='$login'",$link); if(!$val) $message .=" Ник или пароль неправильные"; else { $val=mysql_fetch_array($val); cleanmembersession($val[0],$login,$password); $club_row=checkUser(); if (!$_SESSION['logged_in']) $message .=" Ник или пароль неправильные"; } } } //include("top.inc"); print $_SESSION['login']; if(!$_SESSION['logged_in']) print "<br><p><form action='".$PHP_SELF."' method='post'> <input type='hidden' name='actionflag' value='login'> <input type='hidden' name='".session_name()."' value='".session_id()."'> Ник: <input type='text' name='login' value='$login' maxlength=20> Пароль: <input type='password' name='password' value='' maxlength=50> <input type='submit' value='Войти'> </form>"; else { $message="Добро пожаловать ".$login." <a href='$PHP_SELF?logout=true'>выйти</a>"; } print "<b>$message</b>"; ?> эти оба файла инклюдятся на каждой странице сайта, проблема состоит в том что когда я логинюсь, то сразу после создается сессия, все нужные переменные, но как только я перехожу на другую страницу сессия исчезает и он опять просит ввести логин и пароль....
Я уже пытался найти ошибку - не получилось - прошу помощи.... доступа к рнр.ини у меня нет, а другими средствами не получилось найти причину....
А файл dblib.php тоже в каждую страницу инклудится? Если нет - надо фразу session_start(); написать в login.php, а не в dblib.php.
Не уверен, но попробуйте вот в этой строчке: PHP: if(!(!$club_row || $club_row[nik] != $_SESSION['login'] || $club_row[password] != $_SESSION['password'])) убрать первый "!" - то есть, получится: PHP: if((!$club_row || $club_row[nik] != $_SESSION['login'] || $club_row[password] != $_SESSION['password']))
Код (Text): session_unset(); session_register("login"); $_SESSION[login]=$login; session_register("password"); $_SESSION[password]=$pass; session_register("iid"); $_SESSION[iid]=$id; session_register("logged_in"); $_SESSION[logged_in]=true; у меня такое жопное подозрение что при таком именовании ты не передаешь имя ключа в массиве а говоришь в какой константе это искать. по идее работать НЕ должно. Код (Text): $_SESSION['login'] а так должно сейшн_старт не нужно пихать во все скрипты. нужно ПЕРЕД первой операцией с глобальным массивом $_SESSION для самостоятельной отладки сценария в начале скрипта можно прописать error_reporting(E_ALL) RomanBush учи матлогику. убрав ! ты меняешь смысл условия на противоположное
Не помогло. сделал еррор_репортинг, выдало: Код (Text): Notice: Undefined index: err in /www/my2gig.com/r/o/a/roadtrip/htdocs/login.php on line 2 Notice: Undefined index: login in /www/my2gig.com/r/o/a/roadtrip/htdocs/login.php on line 3 Notice: Undefined index: password in /www/my2gig.com/r/o/a/roadtrip/htdocs/login.php on line 4 Notice: Undefined index: actionflag in /www/my2gig.com/r/o/a/roadtrip/htdocs/login.php on line 5 Notice: Undefined index: logout in /www/my2gig.com/r/o/a/roadtrip/htdocs/login.php on line 6 Notice: Undefined variable: _SESSION in /www/my2gig.com/r/o/a/roadtrip/htdocs/login.php on line 32 Notice: Undefined variable: PHP_SELF in /www/my2gig.com/r/o/a/roadtrip/htdocs/login.php on line 34
такс, строки 2-6 понятны 32: отсутствие _SESSION может обуславливаться запретом на исопльзование сессий. сделийте вывод phpinfo(); exit; после session_start(); и попробуйте найти про сессии 34: погуглив можно заметить что такая переменная доступна только если register_globals = on. в твоем случае оно скорее всего off и переменной нет, зато ее можно попробовать достать так - $_SERVER['PHP_SELF']
Логично. Я для этого и сказал ему убрать "!". Просто с ходу не пойму, правильна ли логика данного ифа, а ковыряться не охота - проще инвертировать и посмотреть - вдруг заработает.