Показать полную графическую версию : Как установить cookie?
vagner_HATE
16-05-2005, 18:25
Простите за ламерский вопрос но я только начал этим заниматься и никак не пойму как мне правильно установить куки:
<form action="<?=$SCRIPT_NAME?>" method=post>
<a class="info"><center>Для получения информации введите логин и пароль :</a><br><br> <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
Не подскажите как правильно определить куки, чтобы человек введя один раз свой логин потом уже при заходе на эту же страницу сразу же видел его ?
потому как заголовками обмениваются узлы до вывода тела, на то они и головы(headers)
вот Вам и пишет : не возможно изменить уже отправленые заголовки
Prisoner
17-05-2005, 18:23
Верно. Любые заголовки (а куки ими же и устанавливаются) необходимо отсылать до любого вывода html-кода, даже пробела.
А почему здесь не читает из файла,
когда пишу header("Location: ass.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($file, 100);
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
header("Location: ass.php"); это же перенаправление на другую страницу-то есть будет всё до этого кода выполнено, а дальше загружается другая страница
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
кроме того в этих запросах можно проследить как передается контент кука "гугл" от меня, что бы сервер(гугл) уже использовал эту инфу.
если уже совсем серьездно подходить, то вы должны в заголовках отдавать ошибку 302.
например это можно настроить на сервере, и при этой ошибке сервер должен объявлять новое место для запроса
нет header("Location: ass.php"); делает перенаправления
сам на себя ass.php, производит запись, но не считывает,
как написать правильно?
Prisoner
19-05-2005, 17:59
Он считывает, считывает, не переживай. Тут можно применить следующую аналогию: ты говоришь человеку-молнии (персонаж американских комиксов из глубин моего даром прожитого детства :)): "Сгоняй в Австралию... а еще, я хотел сказать, что ты придурок!". Так вот, стимул сгонять куда-либо это твой заголовок, выражение твоего к нему отношения - вывод данных взятых из файла. Беда только в том, что он их не услышит (не отобразится в броузере) потому как на то он и человек-молния - быстрый придурок. Просто (не знаю конкретное внутреннее поведение АП) заголовок, скорее всего имеет больший приоритет - зачем отрисовывать страницу, когда тебя послали... на другую? :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.