За последние 24 часа нас посетили 18026 программистов и 1669 роботов. Сейчас ищут 1017 программистов ...

Проблема с заголовками

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

  1. CyMKuH

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

    С нами с:
    1 янв 2012
    Сообщения:
    5
    Симпатии:
    0
    На каждой странице возле шапки имеется форма для авторизации. Форма отправляет введённые данные в скрипт "login.php" в котором введённые данные проверяются с помощью регулярных выражений.

    Login.php
    PHP:
    1. <?php
    2.   require_once ("../config.php"); //Подключили настройки БД
    3.   require_once ("../common/regexp.php"); //Регулярные выражения
    4.  
    5.   if ((isset($_GET['action'])) && ($_GET['action']=='quit'))  // Выход
    6.     unset($_SESSION['session_status'], $_SESSION['session_id_user'], $_SESSION['session_login']);
    7.   if ((isset($_POST['action'])) && ($_POST['action']=='enter')) // Вход
    8.   {
    9.     if (isset($_POST['username']) && isset($_POST['pass']) && log_pas($_POST['pass']) && log_pas($_POST['username'])) //Проверка введённых данных
    10.     {
    11.       $login=$_POST['username'];
    12.       $password=$_POST['pass'];
    13.       $sql="SELECT * FROM userinfo WHERE user_name = '$login' AND password = '$password'";
    14.       $result=mysql_query($sql);
    15.       if ($result)
    16.       {
    17.         if (mysql_num_rows($result)>0)
    18.         {
    19.           $_SESSION['session_status']=mysql_result($result, 0, 'status');
    20.           $_SESSION['session_id_user']=mysql_result($result, 0, 'id_user');
    21.           $_SESSION['session_login']=$login;
    22.           $sql="UPDATE userinfo SET last_time = NOW() WHERE user_name='$login'";
    23.           mysql_query($sql);
    24.         }
    25.         else
    26.         {
    27.           header("Location: ../remember/index.php?code=10"); // Переходим на страниицу восстановления
    28.           exit;
    29.         }
    30.       }
    31.     }
    32.   }
    33.   header("Location: $_SERVER[HTTP_REFERER]"); // Переходим на страниицу с которой пришли
    34.   exit;
    35. ?>
    config.php:
    PHP:
    1. <?php  
    2.   $hname="localhost";
    3.   $uname="root";
    4.   $pname="root";
    5.   $connect_db=@mysql_pconnect($hname, $uname, $pname);
    6.   if (!$connect_db)
    7.   {
    8.     echo "В настоящий момент сервер базы данных временно недоступен";
    9.     exit;
    10.   }
    11.   if (!@mysql_select_db("ng", $connect_db))
    12.   {
    13.     echo "В настоящий момент база данных временно недоступен";
    14.     exit;
    15.   }
    16.   mysql_query("set names cp1251");
    17. ?>
    regexp.php
    PHP:
    1. <?php
    2.   function log_pas($str)
    3.   {        
    4.     $re="|^[a-zA-Zа-яА-Я\d\s_]+$|i";
    5.     if (preg_match($re, $str))
    6.       $f=true;
    7.     else
    8.       $f=false;
    9.     return $f;
    10.   }
    11.  
    12.   function text($str)
    13.   {
    14.     $re="|^[a-zA-Zа-яА-Я\d\s_.,@!?:+-=\"]+$|i";
    15.     if (preg_match($re, $str))
    16.       $f=true;
    17.     else
    18.       $f=false;
    19.     return $f;
    20.   }
    21.  
    22.   function digit($str)
    23.   {
    24.     $re="|^\d+$|i";
    25.     if (preg_match($re, $str))
    26.       $f=true;
    27.     else
    28.       $f=false;
    29.     return $f;
    30.   }
    31. ?>
    Вообщем вылетает такая вот ошибка:
    Warning: Cannot modify header information - headers already sent by (output started at /site/common/regexp.php:31) in /site/registration/login.php on line 33

    Я так понимаю что ошибка в том что скрипт не может отправить заголовок, т.к. он уже отправлен в regexp.php но там только функции... В чём дело?
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    BOM или пробелы или строки после ?>
     
  3. CyMKuH

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

    С нами с:
    1 янв 2012
    Сообщения:
    5
    Симпатии:
    0
    Спасибо! Был пробел