За последние 24 часа нас посетил 53961 программист и 1708 роботов. Сейчас ищут 846 программистов ...

Куки не устанавливаются (already sent by)

Тема в разделе "PHP для новичков", создана пользователем lysosutrin, 7 май 2012.

  1. lysosutrin

    lysosutrin Активный пользователь

    С нами с:
    7 май 2012
    Сообщения:
    15
    Симпатии:
    0
    Отправляю через AJAX данные в файл "login.php"
    Вот сам файл:
    Код (Text):
    1. <?
    2. require '../config.php';
    3.  
    4. $login = $_POST['login'];
    5. $password = $_POST['password'];
    6.  
    7. if(empty($login) || empty($password)) exit('Не все данные');
    8. $re = '/^[\w\-\.]+$/i';
    9. if(!preg_match($re, $login)|| !preg_match($re, $password)) exit('Некорректные данные');
    10. connect();
    11.  
    12. $rows = mysql_fetch_assoc(mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."' AND `password`='".md5($password)."'"));
    13. if(!empty($rows['id'])) exit('Неверные данные');
    14.  
    15. $key = md5(md5(rand(0,9999999)).rand(0,9999999));
    16. mysql_query("INSERT INTO `sessions` (`uid`, `key`) VALUES ('".$rows['id']."', '".$key."')");
    17. setCookie('id', $rows['id']);
    18. setCookie('key', $key);
    19. ?>
    Выдает ошибку:
    Warning: Cannot modify header information - headers already sent by (output started at Z:\home\l\www\functions.php:1) in Z:\home\l\www\Ajax\login.php on line 17

    Warning: Cannot modify header information - headers already sent by (output started at Z:\home\l\www\functions.php:1) in Z:\home\l\www\Ajax\login.php on line 18

    Но я уверен, что ничего не выводил на страницу до отправки куков.

    Добавлено спустя 10 минут 40 секунд:
    Function.php вызывается require'ом файла config.php.

    Добавлено спустя 1 минуту 19 секунд:
    Может, проблема в том, что файл лежит в подкатегории?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    там какой-то вывод проскакивает. может пробел, может энтер, может BOM

    а типо как если вывод ушел, то заголовки уже не впихнешь. а куки в заголовках ставятся.
     
  3. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    а может в config.php echo :)
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Z:\home\l\www\functions.php

    на первой строке проскакивает вывод. как упомянул igordata возможен энтер (перенос строки), БОМ (заголовок ЮТФ-8 файлов) или просто пробел. по спецификации для отправки кук и заголовков страницы не должно быть никакого вывода в браузер.