2013-12-06 7 views
0

Я новичок в php, и я делаю основной сценарий входа. Все, что я хочу сделать, это войти в систему и сохранить файл cookie для моего user_id. Он работает на всех моих других страницах, кроме моей индексной страницы, которая представляет собой один каталог вверх.Страница PHP не хранит файлы cookie

Так что на моей странице индекса, у меня есть это, если заявление:

<?php 

if (!isset($_COOKIE['user_id'])) { 

    sign_in(); 
} else { 
    echo "You're already logged in!"; 
} 

?> 

Независимо от того, что я делаю, то sign_(); функция всегда показывает.

Но вот парадокс: На мой сценарий входа, все это проходит, как если бы я успешно вошел в я отправить его обратно на эту страницу с помощью:.

header("Location: ../index.php"); 

(Это до одной директории) Однако, когда я делаю ссылку на страницу в том же каталоге, она регистрирует файл cookie, и все в порядке.

header("Location: show_user.php"); 

Если вы хотите руки на виду, вы можете пойти в http://patti-bee2.dcccd.edu/coleman/wonder%20penguin/php/signup.php сделать свой счет. И http://patti-bee2.dcccd.edu/coleman/wonder%20penguin/php/show_user.php для его просмотра. И обратите внимание, как страница индекса не регистрирует файл cookie.

Как я пытался установить печенье:

if (isset($_POST['usernamelogin'])) { 
     $user_login = $_REQUEST['usernamelogin']; 
     $pass_login = $_REQUEST['passwordlogin']; 
     $pass_login = trim(crypt($pass_login, $user_login)); 
     $login_query = sprintf("SELECT username, user_id FROM user WHERE username = '%s' and password = '%s';", mysql_real_escape_string($user_login), mysql_real_escape_string($pass_login)); 
     $loginresult = mysql_query($login_query, $dbConn); 

     echo $login_query; 
     if (mysql_num_rows($loginresult) == 1) { 
     $userinfo = mysql_fetch_array($loginresult); 
     $username = $userinfo['username']; 
     $userid = $userinfo['user_id']; 
     setcookie('username', $username); 
     setcookie('user_id', $userid); 
     header("Location: show_user.php"); 
     exit(); 
     } else { 
      echo "Couldn't find your account!"; 
     } 
    } 

Пожалуйста, простите мою нерафинированное страницу и любительские ошибки. У меня есть чему поучиться.

Любые идеи?

Спасибо за ваше время.

+0

нужно больше кода - то, что в 'sign_in()' или более конкретно, как вы пытаетесь установить/определить печенье 'user_id'? – zamnuts

+0

@zamnuts, sign_in() просто показывает ссылку на страницу входа ... и позвольте мне опубликовать код, как я установил cookie. –

+1

похоже, что вы правильно настраиваете файл cookie с поверхности. убедитесь, что вы действительно добираетесь до точки, в которой вызывается 'setcookie'. также проверьте, что ваш браузер хранит файл cookie после входа в систему: откройте инструменты разработки и проверьте заголовок «Cookie» HTTP-запроса. http://stackoverflow.com/questions/3467114/how-are-cookies-passed-in-the-http-protocol – zamnuts

ответ

1

Проверьте, если у вас есть печенье со следующей

<?php 

var_dump($_COOKIE); 

//if (!isset($_COOKIE['user_id'])) 
if (empty($_COOKIE['user_id'])) 
{ 
    sign_in(); 
} 
else { 
    echo "You're already logged in!"; 
} 

?> 
+0

Я отозвал Cookie на индексной странице, и он говорит, что у меня есть неопределенный индекс. И я повторил его на странице, на которой он работает, и появляется печенье. –

+1

Существуют параметры cookie, которые ограничивают доступ к определенным субдоменам или каталогам. Проверьте параметр пути или параметр домена. Поделитесь им, если вы можете –

+0

У вас установлен firebug? –

Смежные вопросы