За последние 24 часа нас посетил 18381 программист и 1640 роботов. Сейчас ищут 1567 программистов ...

setcookie() и отправка заголовков

Тема в разделе "PHP для новичков", создана пользователем Ileaska, 26 фев 2011.

  1. Ileaska

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

    С нами с:
    29 мар 2010
    Сообщения:
    3
    Симпатии:
    0
    Вот какая проблемка.
    Есть три файла.
    Первый:
    PHP:
    1. <?php
    2. include ("{$_SERVER['DOCUMENT_ROOT']}/mysql/functions.php");//мои функции для работы с БД
    3. include ("{$_SERVER['DOCUMENT_ROOT']}/mysql/db_login.php");//информация для входа
    4.  
    5. if( isset($_GET['user']) && isset($_GET['password']) && $_GET['user']!='' && $_GET['password']!='' ){
    6.     connect_db ($db_host,$db_login,$db_pass,$db_name);//Подключаемся к базе данных
    7.     $query = query_db("SELECT * FROM `{$db_name}`.`{$db_userTable}`
    8.                        WHERE `name` = '{$_GET['user']}' AND `password` = '{$_GET['password']}'");
    9.                        
    10.     if(mysql_num_rows($query) > 0){
    11.         setcookie('login',$_GET['user'],time()+24*60*60);
    12.         setcookie('password',$_GET['password'],time()+24*60*60);
    13.         echo ('Вы вошли на сайт<br/>');
    14.         echo $_COOKIE['login'].'<br/>'.$_COOKIE['password'];
    15.     }
    16.     else{ echo('Вы ввели неверные логин и пароль<br/>');  }
    17.  
    18.     mysql_close();//закрываем соединение
    19. }
    20. ?>
    21. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    22. <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
    23. <head>
    24. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    25. <title>Вход на сайт</title>
    26. </head>
    27.  
    28. <body>
    29.  
    30. Здесь вы можете ввести ваше имя и пароль:
    31. <form action="<?=$_SERVER['PHP_SELF'] ?>" method="get">
    32. <p>ИМЯ:<input type="text" name="user" /></p>
    33. <p>ПАРОЛЬ:<input type="password" name="password" /></p>
    34. <p><input type="submit" value="LOGIN" /></p>
    35. </form>
    36. </body>
    37. </html>
    и ПОДКЛЮЧЕННЫЕ К НЕМУ ВТОРОЙ /mysql/functions.php:

    PHP:
    1. <?php
    2. function connect_db ($db_host,$db_login,$db_pass,$db_name){
    3. $connect = mysql_connect($db_host,$db_login,$db_pass);
    4.    if(!$connect) {
    5.    die('Соединение с сервером MySQL неудачно:  '.mysql_error());
    6.    }
    7. $select_db = mysql_select_db($db_name);
    8.    if(!$select_db) {
    9.    die('Соединение с базой данных неудачно:  '.mysql_error());
    10.    }   
    11. }
    12.  
    13. function query_db ($query){
    14.    $result = mysql_query($query);
    15.    if(!$result){
    16.    die('Ошибка в запросе:  '.mysql_error());
    17.    }
    18.    return $result;
    19. }
    20.  
    21.  
    22. ?>
    и третий /mysql/db_login.php:

    PHP:
    1. <?php
    2. $db_login = 'root';
    3. $db_pass = 'мой_пароль';
    4. $db_name = 'store';
    5. $db_host = 'localhost';
    6. $db_userTable = 'users';
    7. ?>
    Там, где в первом файле есть сеткуки, возникает ошибка:

    Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache\Apache2\htdocs\login.php:1) in C:\Program Files\Apache\Apache2\htdocs\login.php on line 11

    Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache\Apache2\htdocs\login.php:1) in C:\Program Files\Apache\Apache2\htdocs\login.php on line 12

    Вроде вывода в окно браузера нет... В чем тогда проблема? Заранее спасибо за помощь.
     
  2. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    убрать все энтеры и пробелы до <?php в файле login.php
    проверить, что файл сохранён без BOM (маркеры юникод-файлов)
     
  3. Ileaska

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

    С нами с:
    29 мар 2010
    Сообщения:
    3
    Симпатии:
    0
    Gromo, огромное спасибо. Во всем гугле только и написано про пробелы да теги до setcookie, а про BOM - НИГДЕ.
    А что это вообще такое и для чего это нужно?
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ileaska
    забей. юзай netbeans - он бесплатный и безбомный