Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Не ставятся cookie

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 21 Март 2011 - 00:05

Почему не ставятся cookie? Вот код
$hash = md5(rand(0,10));
$ip = "INET_ATON('".$_SERVER['REMOTE_ADDR']."')";

mysql_query("UPDATE users SET hash='$hash', ip='$ip' WHERE login='".mysql_real_escape_string($login)."'");

$q = @setcookie("login", $login, time()+60*60*24*30) ? print('cookie OK') : print('cookie fuck');
$w = @setcookie("hash", $hash, time()+60*60*24*30);
echo $q, $w;

 

 

  • 0


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Не устанавливается шаблон в Joomla
  2. Не устанавливается счетчик Яндекс.Метрика на Joomla
  3. Не знаю какую cms ставить
  4. Почему не ставят даты публикаций на сайтах?
  5. Не ставится метрика на сайт

#2 FordogeN

FordogeN
  • Пользователь
  • 1 414 сообщений
  • Репутация: 0

Отправлено 21 Март 2011 - 15:17

а вначале кода есть?
session_start();

  • 0

Как настроить выдержку и диафрагму зеркального фотоаппарата



#3 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 21 Март 2011 - 15:20

причем логин и хеш существуют, да и вообще решил вывести инфу, вот что показало

Banderas123:a87ff679a2f3e71d9181a67b7542122c
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\blogup.com\www\login_handler.php:27) in Z:\home\blogup.com\www\login_handler.php on line 28
cookie fuck
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\blogup.com\www\login_handler.php:27) in Z:\home\blogup.com\www\login_handler.php on line 29

Приветствуем Вас Banderas123
Спасибо за авторизацию!


  • 0


#4 FordogeN

FordogeN
  • Пользователь
  • 1 414 сообщений
  • Репутация: 0

Отправлено 21 Март 2011 - 15:24

это ты в браузере проверил?
зы. По поводу сейшн_старт затупил. подумал что ты сессию ставишь)))
  • 0

Как настроить выдержку и диафрагму зеркального фотоаппарата



#5 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 21 Март 2011 - 15:40

ай-яй-яй, безобразие!!!
опять одни и те же грабли, куки надо ставить до вывода чего-либо в браузер, про заголовки надо помнить всегда!!!
http://www.phpfaq.ru/headers
  • 0

#6 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 21 Март 2011 - 16:17

Оки, наконецто записал куки... Но вопрос в том, что мне нужно записать два элемента в массив КУКИ. Я делаю запись

<?php
setcookie('login', 'lololo', time() + 60*60*24*30) ? print('cookie OK') : print('cookie fuck');
setcookie('hash', 'fdsfsdfsadfsdf2fds', time() + 60*60*24*30) ? print('cookie OK') : print('cookie fuck');
include ('db.php');

Первая запись успешна, проверил в браузере - login есть. Но hash не добавляется потому что перед ним мы уже передавали headers. Что делать с hash'ом что бы передать его вместе с лоигном? Формировать довухуровневый массив куки?


  • 0


#7 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 21 Март 2011 - 16:20

возможно это будет интересно

вот так станут:

<?
setcookie('login', 'lololo', time() + 60*60*24*30);
setcookie('hash', 'fdsfsdfsadfsdf2fds', time() + 60*60*24*30);
?>


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

setcookie('login', 'lololo', time() + 60*60*24*30) ? $cookie_login=TRUE : $cookie_login=FALSE;
setcookie('hash', 'fdsfsdfsadfsdf2fds', time() + 60*60*24*30) ? $cookie_hash=TRUE : $cookie_hash=FALSE;

$cookie_login==TRUE ? print('cookie OK') : print('cookie fuck');
$cookie_hash==TRUE ? print('cookie OK') : print('cookie fuck');

  • 0

#8 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 21 Март 2011 - 17:39

У меня при такой записи тоже ставятся
<php

?>
print('Выше с десяток строк, из которых как минимум 5 строк вывода информации');
<?
setcookie('login', $login, time() + 60*60*24*30);
?>
<?php
print('Ещё с десяток строк, одна из которых:');
echo "<br/>".'Приветствуем Вас '.$login."<br/>";
?>

И все прекрасно работает. Хотя написано, что нельзя выводить информацию перед тем, как задаются куки. Или перед setcookie() не должно быть символов.
  • 0


#9 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Март 2011 - 18:12

Banderas,
1) Установленные куки появятся только после перезагрузки страницы.
2) Не стоит ничего выводить в браузер до передачи заголовков, конечно это не распространяется при использовании буферизации вывода (функции ob_...)
3) По сообщению #6 тебе правильно сказали. Не надо выводить инфу в браузер, этим ты отсылаешь заголовки клиенту.
4)

У меня при такой записи тоже ставятся

Возможно у тебя стоит преднамеренная буферизация в настройках сервера.

P.s.: А вообще нужно бы разобраться, как же работать с куками. Сервер - одна машина, клиент - другая машина. В основном они общаются посылкой запросов на действия пользователя. Запросил пользователь страницу, происходит:
  • Браузер отсылает запрос на получение данных, не забывая к нему прикрепить куки, POST-данные, GET и т.д.
  • Сервер формирует документ и отсылает его обратно в браузер клиенту
После того, как сервер установил куки пользователю, т.е. в сформированном ответе передал запрос на установку кукисов. Браузер их выставляет, но данные о них он обратно на сервер не отсылает. Они передадутся на сервер только при последующем запросе страниц ресурса.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru