Работа с куками!

ImDogma

Новичок
Работа с куками!

Сорри за глупый вопрос, но никак не догоняю как реализовать следующее:

мне надо сделать скрипт авторизации, который работал бы на куках. Но я не догоняю как это делается! То есть если логин и пароль правильные - в переменную куки logged записывалось значение yes. но скрипт у меня включается между шапкой и футером, поэтому функцией setcookie("logged","yes") у меня выкидывается ошибка, что, мол, headers already sended... =((помогите, очень нужно!

З.Ы. В самом начале, до подключения какого-либо контента, стоит setcookie("logged")
 

Фанат

oncle terrible
Команда форума
раз выводится ошибка - значит, не "до подключения какого-либо контента"

ты уж определись
 

ImDogma

Новичок
2Фанат: ну вот смотри
допустим:
в самом начале перед всем-всем-всем я пишу setcookie("logged")

как мне присвоить ей значение yes, и чтобы это сохранялось в куку, в тот момент, когда пользователь успешно прошел авторизацию? HTTP_COOKIE_VARS['logged'] = "yes"???
 

Фанат

oncle terrible
Команда форума
писать setcookie("logged","yes") в тот момент, когда пользователь успешно прошел авторизацию
 

Krishna

Продался Java
ImDogma:
Я правильно понимаю, что чтобы успешно авторизоваться на твоем сайте, мне достаточно будет в браузере завести куку logged="yes"?
 

ImDogma

Новичок
не только, это один из параметров, готорые присваиваются авторизированному пользователю!

-~{}~ 07.02.06 01:41:

Warning: Cannot modify header information - headers already sent by (output started at ******/header.inc.php:3) in...

и чо делать?
 

ImDogma

Новичок
Krishna:

блин, смотри! у меня index.php стоится сл. образом

<?php

setcookie("logged");

include("header.php");

include("module.php");

include("footer.php");

?>

в этом самом module.php и произходит проверка пользователя и мне надо именно оттуда присвоить переменной куки looged значение yes. а значение куки можно присвоить, как я понял, только до начала передачи контента. но контент уже полюбому передается через header.php! как мне быть-то?
 

Krishna

Продался Java
SelenIT
Krishna
PHP FAQ: Самые основы. Способы общения браузера с сервером.
Это ответ на какую мою реплику?

ImDogma:
Смотри, php скрипт логина у тебя на самом деле должен сработать, как минимум, дважды. Первый раз, когда ты выводишь форму логина (и тогда тебе еще нечего писать в куку) и второй раз, когда он обрабатывает введенные данные (логин и пароль). Вот во второй раз и должна устанавливаться кука и делать это нужно до любого другого вывода. Разделять эти моменты можно например заключением оператора setcookie и проверки парвильности пароля в if (isset($_POST['login']) && isset($_POST['password']))
{
setcookie ...
}

Эта часть кода будет обработана только при получении формы логина.
 

Krishna

Продался Java
Скрипт авторизации, разумеется должен идти в самом начале, причем в любом другом скрипте он должен включаться через require_once, дабы не дать возможности злоумышленнику вызвать какой-то скрипт напрямую без авторизации.

-~{}~ 07.02.06 01:56:

SelenIT
Научить?
 

ImDogma

Новичок
вобщем, я решил проблему так:




из

<?php

setcookie("logged");

include("header.php");

include("module.php");

include("footer.php");

?>

я сделал

<?php

# скрипт проверки и установки куки #

include("header.php");

include("module.php");

include("footer.php");

?>

тоесть -> вытащил скрипт из module.php в начало index.php, в форме логина поставил $PHP_SELF.

терь еще одна проблема: эффект того, что я залогинен появляется толькопосле повторного рефреша страницы, то есть ввел все, нажал "Логин", он все обработал и выдает мне ту же страницу (без изменений, там вместо полей Логин и Пароль должна, к примеру, у залогиненного пользователя, ссылка Выход) . И все это дело обновляется только после того, как нажму Обновить... как это лечится?
 

Krishna

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

Расскажи-ка лучше, в целом, как работает твоя авторизация.
 

Фанат

oncle terrible
Команда форума
ImDogma
тоесть -> вытащил скрипт из module.php в начало index.php
заметь - тебе ещё не раз придётся так делать.
и получится у тебя такой уродец - половина модуля в индексе, половина - в модуле.
а всё потому, что ты зачем-то инклюдишь "модули" в индекс.

И все это дело обновляется только после того, как нажму Обновить... как это лечится?
не понял - ты гетом, что ли, пароль передаёшь?
а если постом - при обновлении никаких проблем ты не видишь?
 

Krishna

Продался Java
Фанат написал(а):
не понял - ты гетом, что ли, пароль передаёшь?
а если постом - при обновлении никаких проблем ты не видишь?
Я так понял он из кук читает. Потому и после обновления.
 
Сверху