2013-02-27 4 views
0

Короткие: По какой-то причине cookie '_sid' не извлекается некоторыми браузерами/компьютерами. Long: У меня есть 3 файла, которые я использую. /index.php, /scripts/login.php и /iframes/register.php. Теперь, когда вводится информация для входа, появляется куча стандартного материала, и пользователь входит в систему. Создается файл cookie с именем «_sid», а значение хранится в таблице mySQL.Проблемы с php isset cookie

login.php:

setcookie("_sid", $sid, 0, '/'); ?> 

Теперь все компьютеры получает это печенье - я проверил на более чем 15, все прошло. Просто хотел показать вам, как я установил cookie.

Проблема заключается в index.php:

<?php 
$username="x"; $password="y"; $database="z"; 
mysql_connect(localhost,$username,$password); 

@mysql_select_db($database) or die("Unable to select database"); 
$loggedin=false; $team="none"; 
if(isset($_COOKIE['_sid'])){ //error happens here 
    print_r("test"); 
    $session_id=$_COOKIE['_sid']; 

Теперь ошибка происходит на комментировал линии. Исет возвращает false. Теперь обычно это будет своего рода полезный индикатор. Однако ...

Третий файл, register.php, дает пользователю возможность регистрировать других людей (не имеет значения). Важно отметить, что начало файла является таким же, как index.php.

<?php 
$username="x"; $password="y"; $database="z"; 
mysql_connect(localhost,$username,$password); 

@mysql_select_db($database) or die("Unable to select database"); 
$loggedin=false; $team="none"; 
if(isset($_COOKIE['_sid'])){ 
    print_r("test"); 
    $session_id=$_COOKIE['_sid']; 

Этот файл, однако, работает. Правильно, isset работает. Этот файл также работает на всех 15/15 компьютерах.

Теперь, чтобы сделать это все более запутанным, index.php работает примерно с 10 из 15 компьютеров. Ошибка всегда возникает на mac (chrome, ff, safari) и Linux (проверена ff, но справедливо предположить, что хром тоже). Он работает на большинстве окон (7 + 8 с использованием chrome, ff). Однако при использовании идентичных двойных компьютеров (на призрачных os) один компьютер работал, а другой сбой (с использованием ff).

Я был на эту проблему в течение 2 дней в настоящее время, и действительно понятия не что делать ...

+0

Является ли cookie только для входа в login.php, или есть другой файл, в котором может быть установлен файл cookie. Причина для запроса: cookie может быть специфичным для каталогов. –

+1

Просто из любопытства, в чем причина не использовать Обработка встроенного сеанса PHP? – hank

+0

У вас такая же проблема, когда вы используете пустой, а не isset? Есть небольшая разница, но вы можете попробовать ... –

ответ

0

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

Необходимо проверить, что login.php вызывается браузером BEFORE index.php и NOT в том же запросе.

  1. login.php - браузер не отправлять не печенье, но получить запрос, чтобы установить его
  2. index.php - браузер отправить куки

Если в вашем index.php у вас есть

<include "login.php"> 

это определенно не сработает.

+0

У меня нет в моем index.php. Я немного смущен в отношении того, что вы говорите; Я использую index.php до, во время и после того, как cookie установлен. Внутри index.php есть iframe (/iframes/login.php). login.php в /scripts/login.php, где установлен cookie. –

+0

Почему вы используете iframe для этого? Нет причин, и это делает вещи ненадежными. Опубликовать в login.php на главном фрейме, а затем принудительно перенаправить с заголовком («Местоположение: http://your.site.com/index.php») – Ghigo

+0

Это ... на самом деле хороший момент ... Что это такое? ненадежная часть? Почему и как? –

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