2011-12-26 2 views
1

Код ниже. У меня была эта проблема с самой последней версией firefox. Я проверил другие форумы и не нашел никакого решения. Кажется, я что-то делаю неправильно? Как вы, наверное, можете сказать, я немного новичок в php.Проблемы с распознаванием куки

Кроме того, я знаю, что мой подход немного неортодоксален для многих других вещей в этом коде. Тем не менее, проблема, которую я пытаюсь решить, - это test-test if, где он проверяет, установлен ли $ _COOKIE ['auth']. Я проверил свои файлы cookie, и он установлен. Я тестировал некоторые высказывания die(), и он не подбирается. Любая помощь?

<?php 


//THIS IS WHERE THE PROBLEM EVIDENTLY OCCURS 
if (isset($_COOKIE['auth'])){ 
if ($_SESSION['auth'] > 0){ 
    header ("Location: /members/index.php"); 
} else { 
    setcookie ('auth', '', time() - 3600, "/", "www.domain-here.com"); 
} 
} else { 
$old_url = $_SERVER['HTTP_REFERER']; 
$username = ""; 
$password = ""; 

if ($_POST['username'] != "" && $_POST['password'] != ""){ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $expire = 0; 
    if ($_POST['save'] == "checked"){ 
     $expire = time()+60*60*24*14; 
    } 

    //$result = db query to check if user exists 

    if ($result) { 
     if (mysql_num_rows($result) > 0){ 
      session_start(); 
      setcookie("auth", $sid, $expire, "/", "www.domain-here.com"); //here I am setting the cookie to allow users to stay logged on 
      header ("Location: $old_url"); 
     } else { 
      session_start(); 
      $_SESSION['auth'] = "0"; 
      die(alert("Invalid username or password.", "login.php")); 
     } 
    } else { 
     die(alert("Invalid username or password.", "login.php")); 
    } 
} 
} 
?> 
+2

Удалите весь код, не имеющий отношения к проблеме, и попробуйте снова спросить. Сессия и база данных не имеют смысла в вопросах, связанных с кукисом. – zerkms

+0

^^ Он был отредактирован. Я вытащил большую часть несвязанного материала session/db. – user1115853

+0

Что вы на самом деле пытаетесь сделать здесь? Похоже, что вы просто выполняете обработку сеанса, и в этом случае я не понимаю, почему вам нужно хранить файл 'auth'. – declan

ответ

0

ОК сначала вы используете время() - 3600, что означает, что ваш файл cookie меньше 0? следующий. вам нужно придать ему значение, иначе он не будет устанавливать cookie. вот исправленный код.

if (isset($_COOKIE['auth'])){ 
if ($_SESSION['auth'] > 0){ 
    header ("Location: /admin/itemdev.php"); 
} else { 
    setcookie ('auth', 'my value', time() + 3600, "/", "localhost"); 

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