Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Как установить cookie? (http://forum.oszone.net/showthread.php?t=49374)

vagner_HATE 16-05-2005 18:25 324669

Как установить cookie?
 
Простите за ламерский вопрос но я только начал этим заниматься и никак не пойму как мне правильно установить куки:
<form action="<?=$SCRIPT_NAME?>" method=post>
<a class="info"><center>Для получения информации введите логин и пароль :</a><br><br>&nbsp;<br>
<center><b>Введите логин </b> <input type=text name="login"><br><br>
<center><b>Введите пароль</b> <input type=password name="parol"><br><br>
<center><input type=submit name="doGo" value="Нажать"><br>
</form>
<? setcookie('login', @$login, time()+360000000, '/', '', 0); ?>
и Выдается что Warning: Cannot modify header information - headers already sent by

Не подскажите как правильно определить куки, чтобы человек введя один раз свой логин потом уже при заходе на эту же страницу сразу же видел его ?

E-mail 16-05-2005 22:27 324731

потому как заголовками обмениваются узлы до вывода тела, на то они и головы(headers)
вот Вам и пишет : не возможно изменить уже отправленые заголовки

Prisoner 17-05-2005 18:23 325001

Верно. Любые заголовки (а куки ими же и устанавливаются) необходимо отсылать до любого вывода html-кода, даже пробела.

slaine 18-05-2005 10:57 325184

А почему здесь не читает из файла,
когда пишу header("Location: ass.php");?

PHP код:

<?
if (isset($_GET['aaa'])){
header("Location: ass.php");
$a $_GET['aaa'];
$file fopen("password.txt""a+");
fwrite($file$a);
fclose($file);
$file fopen("password.txt""r");
$s fread($file100); 
echo 
$s;
fclose($file);

?>
<form action=ass.php method=get>
<input type="text" name=aaa size=10>
<input type="submit">
</form>


vadimiron 18-05-2005 14:44 325272

header("Location: ass.php"); это же перенаправление на другую страницу-то есть будет всё до этого кода выполнено, а дальше загружается другая страница

E-mail 18-05-2005 23:00 325448

Location - это место нахождения Host-a (см. ниже пример с гуглом)

если сервер(в данном случае ваш скрипт на сервере, который добавляет дополнительный заголовок к заголовкам сервера) говорит клиенту(см. ниже: в моем случае ПА IE) что хост переехал, то клиент как бы получает команду повторно отправить заголовки но на нужный хост. И отвечать уже будет на запрос совсем другой хост (в вашем случае ass.php)

т.е.
дальше идет обмен заголовками со страницей ass.php а уже потом в соответствии с запросом клиента и ответом сервера чтото происходит:)
например загрузка контента.

к примеру:
при запросе http://google.com:

GET / HTTP/1.1
Accept: application/x-shockwave-flash, */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: google.com
Connection: Keep-Alive
Cookie: PREF=ID=195bb6eee8d115d3:CR=1:TM=1115666067:LM=1115666067:S=VWDUsZTRAP5WKWj_

HTTP/1.1 302 Found
Location: http://www.google.com/
Content-Type: text/html
Server: GWS/2.1
Transfer-Encoding: chunked
Content-Encoding: gzip
Date: Wed, 18 May 2005 19:01:53 GMT
Cache-Control: private, x-gzip-ok=""

GET / HTTP/1.1
Accept: application/x-shockwave-flash, */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Cookie: PREF=ID=195bb6eee8d115d3:CR=1:TM=1115666067:LM=1115666067:S=VWDUsZTRAP5WKWj_
Connection: Keep-Alive
Host: www.google.com

HTTP/1.1 302 Found
Location: http://www.google.ru/
Content-Type: text/html
Server: GWS/2.1
Transfer-Encoding: chunked
Content-Encoding: gzip
Date: Wed, 18 May 2005 19:01:54 GMT
Cache-Control: private, x-gzip-ok=""

GET / HTTP/1.1
Accept: application/x-shockwave-flash, */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Connection: Keep-Alive
Host: www.google.ru
Cookie: PREF=ID=cdccb6d48e64161d:LD=ru:TM=1115666067:LM=1115666068:S=CqwV4YatIJYTMkko

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html
Content-Encoding: gzip
Server: GWS/2.1
Content-Length: 1586
Date: Wed, 18 May 2005 19:01:55 GMT

E-mail 18-05-2005 23:16 325457

кроме того в этих запросах можно проследить как передается контент кука "гугл" от меня, что бы сервер(гугл) уже использовал эту инфу.

E-mail 18-05-2005 23:25 325459

если уже совсем серьездно подходить, то вы должны в заголовках отдавать ошибку 302.
например это можно настроить на сервере, и при этой ошибке сервер должен объявлять новое место для запроса

slaine 19-05-2005 11:34 325624

нет header("Location: ass.php"); делает перенаправления
сам на себя ass.php, производит запись, но не считывает,
как написать правильно?

Prisoner 19-05-2005 17:59 325741

Он считывает, считывает, не переживай. Тут можно применить следующую аналогию: ты говоришь человеку-молнии (персонаж американских комиксов из глубин моего даром прожитого детства :)): "Сгоняй в Австралию... а еще, я хотел сказать, что ты придурок!". Так вот, стимул сгонять куда-либо это твой заголовок, выражение твоего к нему отношения - вывод данных взятых из файла. Беда только в том, что он их не услышит (не отобразится в броузере) потому как на то он и человек-молния - быстрый придурок. Просто (не знаю конкретное внутреннее поведение АП) заголовок, скорее всего имеет больший приоритет - зачем отрисовывать страницу, когда тебя послали... на другую? :)


Время: 21:21.

Время: 21:21.
© OSzone.net 2001-