За последние 24 часа нас посетили 20719 программистов и 1134 робота. Сейчас ищут 355 программистов ...

Помогите исправить ошибку "Cannot modify header information - headers already sent by"

Тема в разделе "PHP для новичков", создана пользователем disfey, 24 янв 2021.

  1. disfey

    disfey Новичок

    С нами с:
    4 июл 2019
    Сообщения:
    8
    Симпатии:
    1
    Приветствую! Ломаю голову уже 2 день над этой ошибкой. Суть в чем, я делаю регистрацию для игрушки, этот скрипт отвечает за отсылку данных на сервер, также есть другие соответствующие скрипты. При заходе на страницу выбивает подобие этого
    [​IMG]
    Как видите выбивает ошибку "Cannot modify header information - headers already sent by...", а уже после исполняется кусочек кода (который по сути бесполезен, поскольку остальные запросы заблокированы)
    Читал что может быть из за пробелов вначале, проверил, все идеально. Оно пишет что ошибка во второй строчке, но там просто разрешаются кроссдоменные запросы....
    .
    Вот собственно код, буду благодарен за любую помощь :)
    PHP:
    1. <?php
    2. header ('Access-Control-Allow-Origin: *');//Разрешили кроссдоменные запросы
    3.  
    4. $mysql_host = "хост";
    5. $mysql_database = "Бд";
    6. $mysql_user = "Юзернейм";
    7. $mysql_password = "пОроль";
    8.  
    9. $link = mysql_connect($mysql_host, $mysql_user, $mysql_password) or die("Ошибка при подключении MySQL" );
    10. mysql_select_db($mysql_database, $link) or die ('Ошибка при подключении к БД');
    11.  
    12.     if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
    13.     if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
    14.     if (isset($_POST['email'])) { $email=$_POST['email']; if ($email =='') { unset($email);} }
    15.     if (isset($_POST['silvercoin'])) { $silvercoin=$_POST['silvercoin']; if ($silvercoin =='') { unset($silvercoin);} }
    16.     if (isset($_POST['goldcoin'])) { $goldcoin=$_POST['goldcoin']; if ($goldcoin =='') { unset($goldcoin);} }
    17. if (empty($login) or empty($password) or empty($email))
    18.     {
    19.     echo ("Вы ввели не всю информацию, заполните все поля!");
    20.     exit();
    21.     }
    22.     $login = stripslashes($login);
    23.     $login = htmlspecialchars($login);
    24.     $password = stripslashes($password);
    25.     $password = htmlspecialchars($password);
    26.     $email = stripslashes($email);
    27.     $email = htmlspecialchars($email);
    28.     $silvercoin = stripslashes($silvercoin);
    29.     $silvercoin = htmlspecialchars($silvercoin);
    30.     $goldcoin = stripslashes($goldcoin);
    31.     $goldcoin = htmlspecialchars($goldcoin);
    32.     $login = trim($login);
    33.     $password = trim($password);
    34.     $email = trim($email);
    35.     $silvercoin = trim($silvercoin);
    36.     $goldcoin = trim($goldcoin);
    37.     $q1 = mysql_query("SELECT login FROM `accounts` WHERE `login`='".$login."'");
    38.     $loginb = mysql_fetch_array($q1);
    39.     $loginbd=$loginb['login'];
    40.     if($loginbd == $login){
    41.     echo("Извините, введённый вами логин уже зарегистрирован.");
    42.     exit();
    43.     }
    44.      else
    45.     $result2 = mysql_query ("INSERT INTO accounts (login,password,email) VALUES('$login','$password','$email')");
    46.     if ($result2=='TRUE')
    47.     {
    48.     echo "Вы успешно зарегистрированы!";
    49.     }
    50. else {
    51.     echo "Ошибка! Вы не зарегистрированы.";
    52.     }
    53. ?>
    --- Добавлено ---
    Главный прикол в том, что именно ошибку то можно убрать через .htaccess, но запросы к БД не будут отсылаться и будет выбивать ошибку!
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    ДиноКаменноПросрокоGovnoКод не поддерживается.
    --- Добавлено ---
    Начни с php 7.4
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.787
    Симпатии:
    646
    И на BOM проверь исходник ;)
     
    disfey нравится это.
  4. disfey

    disfey Новичок

    С нами с:
    4 июл 2019
    Сообщения:
    8
    Симпатии:
    1
    Стоп, ты считаешь что php 5.6 каменный при том что его почти все хостинги поддерживают? xD
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Завтра выходит новая версия интернета, сегодня в 23:59, отрубаем всех нубов. Это ответ если твой IQ > 0
     
    Вероломство нравится это.
  6. php8guru

    php8guru Новичок

    С нами с:
    24 янв 2021
    Сообщения:
    14
    Симпатии:
    1
    Перед header есть какой то символ который выводится.
     
  7. disfey

    disfey Новичок

    С нами с:
    4 июл 2019
    Сообщения:
    8
    Симпатии:
    1
    Я умственно одаренных вроде тебя пытаюсь игнорить, слишком много высераешь ртом а на деле слишком мало пользы. Человек, который написал после тебя хотябы дал наводку на то что нужно еще раз проверить. А ты иди к врачу сходи, пока не поздно.
     
  8. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Уважаемый MouseZver хочет сказать, что, вероятно, php пытается сообщить о какой-то проблеме до вывода заголовков с помощью header().
    Закомментируйте эту строку, возможно, удастся это сообщение прочитать.
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.787
    Симпатии:
    646
    @disfey поведение Мауса не отменяет факта, что код – Г.

    @MouseZver, наверное, это ТС не сам писал. Такое Г периодически всплывает на разных форумах. Есть в нем весьма четкие маркеры вроде
    PHP:
    1. if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
     
  11. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Говорит, что в первой строке есть вывод. Значит он есть.
    Пробелы, переносы строк или bom символ.
    Последний убирается сменой кодировки файла. Раньше кодировки в редакторах назывались utf-8 и utf-8 без bom.
    Сейчас наоборот. Utf-8 и utf-8 С bom.
    Проверь, как у тебя.