Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с куками... 
:(
    Опции темы
DeMx
Дата 24.5.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 18.11.2006

Репутация: нет
Всего: нет



Создаю плюшки:
Код

$site_dir = "/";
setcookie("var1", $var1, time() * 31536000, $site_dir);
setcookie("var2", $var2, time() * 31536000, $site_dir);


Иногда все работает без проблем, но, в большинстве случаев, получается их создать лишь с 5-10 раза. Т.е. вот я сижу над формой на сайте и как дурень жму сабмит неск. раз, пока авторизация не пройдет успешно. smile 

Что тут только я не пробовал уже... и время разное задавал, и директории, и домен указывал... никаких результатов.

Пробовал уже на нескольких серверах (в том числе локально) - все одинаково.

Что ж я делаю не так?
PM MAIL WWW   Вверх
szz
Дата 24.5.2007, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



куки появляются после перезагрузки страницы (по идее одной перезагрузки достаточно).
В любом случае лучше написать над ними надстройку, а еще лучше - использовать уже готовую надстройку (точнее, встройку в php) - сессии.


--------------------
PM   Вверх
mr.Anderson
Дата 24.5.2007, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Цитата
пока авторизация не пройдет успешно

Для систем авторизации надо юзать сессии.

Добавлено через 11 минут и 50 секунд
Ыть. smile Не успел.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Platon
Дата 24.5.2007, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



Хм, а может у тебя там хедеры пытаются отправиться после того как ты уже что нить вывел в stdout?

проще говоря:

СМЕРТЕЛЬНЫЙ НОМЕР, НЕ ПОВТОРЯТЬ.
Код

echo "hello!";
$site_dir = "/";
setcookie("var1", $var1, time() * 31536000, $site_dir);
setcookie("var2", $var2, time() * 31536000, $site_dir);

СМЕРТЕЛЬНЫЙ НОМЕР, НЕ ПОВТОРЯТЬ.
PM MAIL ICQ   Вверх
mr.Anderson
Дата 24.5.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Platon, если по-русски - нельзя ничего выводить в браузер до установки куков. smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Platon
Дата 24.5.2007, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



mr.Anderson, не факт что в браузер, а именно в stdout ;) но это уже офф топ, главное что все все поняли.
PM MAIL ICQ   Вверх
DeMx
Дата 25.5.2007, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 18.11.2006

Репутация: нет
Всего: нет



нет, до кук ничего не выводится... а после стоит header("Location: ". $_SERVER['HTTP_REFERER']);
PM MAIL WWW   Вверх
Platon
Дата 25.5.2007, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



Я с ajax очень намучался, матерился сильно потому что он упорно писал, что я выводил символы, но тогда я мог хоть чем поклясться, что ни одного символа не выводил... умышленно уж точно.
оказалось, что в 1 месте у меня такая ситуация
Код


<?php
      header($header);
?>


т.е. первая строчка есть символ переноса...

для теста сделай следующее:
в самом начале поставь какой-нить символ и перед setcookie поставь символ, посмотри, есть ли между ними символы переноса.
PM MAIL ICQ   Вверх
sTa1kEr
Дата 25.5.2007, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Platon @  25.5.2007,  07:27 Найти цитируемый пост)
в самом начале поставь какой-нить символ и перед setcookie поставь символ, посмотри, есть ли между ними символы переноса. 

Зачем это? Достаточно посмотреть в логи, нету ли ошибки связанной с отправкой хидеров.
Так же, если надо устанавливать куки после отправки хидеров, то это можно сделать через js.

Цитата(DeMx @  24.5.2007,  19:59 Найти цитируемый пост)
Пробовал уже на нескольких серверах (в том числе локально) - все одинаково.

А через другие браузеры пробовал?
PM MAIL   Вверх
DeMx
Дата 25.5.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 18.11.2006

Репутация: нет
Всего: нет



sTa1kEr
Цитата
А через другие браузеры пробовал?

Это шутка? smile 
PM MAIL WWW   Вверх
sTa1kEr
Дата 25.5.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(DeMx @  25.5.2007,  20:17 Найти цитируемый пост)
Это шутка? smile  

Нет. Прошу прощенья, если я не совсем понятно выразился. Куки может отвергать сам браузер (или даже какая-нибудь стороняя програма вроде KIS), поэтому, имхо, стоит убедится, что проблема именно в сервере.
PM MAIL   Вверх
Golda
Дата 25.5.2007, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Если хоть с 5-10 раза, но куки создаются (при условии что куки с такими именами записывает только этот скрипт), значит до их отправки никакого вывода нет. Тем более, если срабатывает пересылка по

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

Проверьте еще, может в ситуации, когда куки не ставятся, в них пытаются записать пустые значения. Отошлите себе по email или запишите в какой-нибудь файл значения переменных $var1, $var2 непосредственно перед записью куки. Ну и убедитесь, конечно, что проблема не на стороне броузера


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
DeMx
Дата 29.5.2007, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 18.11.2006

Репутация: нет
Всего: нет



Golda
Цитата
Проверьте еще, может в ситуации, когда куки не ставятся, в них пытаются записать пустые значения. Отошлите себе по email или запишите в какой-нибудь файл значения переменных $var1, $var2 непосредственно перед записью куки. Ну и убедитесь, конечно, что проблема не на стороне броузера

Отослал. Все совершенно нормально. Переменные всегда не пустые.
PM MAIL WWW   Вверх
Golda
Дата 30.5.2007, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Меня еще смущает указание времени в виде time() * 31536000. Скорее всего Вы имели в виду time() + 31536000, если подразумевалось поставить куки на год.. В результате получается какое-то громадное число. Возможно, броузер пытаясь воспринять его как осмысленный timestamp, как-то урезает и в результате часто получает время, которое уже прошло. А поставить куки удается в тех редких случаях, когда Вам везет и в результате урезания получается время в будущем. 

Это только гипотиза, но попробуйте. В любом случае Вам нужно исправить некоректное задание времени.


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
MoLeX
Дата 1.6.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



DeMx, привожу тебе пример авотризации в админке... может пригодится? - 
Код

<?php
require "config.php"; //подключаем конфиг
if ($md5 == 'proverka') 
{
$pass_md5 = md5($pass);
if ($name == $name_user)
    {
        if($pass_md5 == $password_xech) 
            {
                setcookie("название_кук",$pass_md5,time()+8000);
                    echo"<h1><p align='center'>Проверка пользователя...</p></h1>";
                    echo"<meta http-equiv='refresh' content='2; URL=admin.php?menu'>";
                exit;
            }
        else 
            {        
                    echo "<h1><p align='center'>Неверный пароль!!!</p></h1>";
                    echo"<meta http-equiv='refresh' content='1; URL=admin.php'>";
                exit;
            }
    }
 else 
    {
            echo "<h1><p align='center'>Неверное имя!!!</p></h1>";
            echo"<meta http-equiv='refresh' content='1; URL=admin.php'>";
        exit;
    }
}

if ($_COOKIE['название_кук'] != $password_xech) 
    {
            echo "<form action='$PHP_SELF' method='$metod'>";
            echo "<p align='center'><input type='text' name='name' size='22'><br>";        
            echo "<input type='password' name='pass' size='22'><br>";
            echo "<input type='hidden' name='md5' value='proverka'>";
            echo "<input type='submit' value='Авторизация' style='BORDER: red 1px solid;'>
                    </center></p></form>";
       exit;
    }
    
//сдесь  код
?>



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0799 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.