За последние 24 часа нас посетили 8260 программистов и 477 роботов. Сейчас ищут 252 программиста ...

Ошибка header

Тема в разделе "PHP для новичков", создана пользователем Boyenerji, 5 дек 2018.

  1. Boyenerji

    Boyenerji Новичок

    С нами с:
    24 янв 2017
    Сообщения:
    23
    Симпатии:
    1
    Помогите пожалуйста с этой ошибкой-
    Вот сам файл:
    PHP:
    1. <?php
    2. function MessageSend($error){
    3.     if ($error == 1) {
    4.         exit(header('Location: ' . $_SERVER['HTTP_REFERER']));
    5.     }
    6. }
    7. function CreateUser($login, $mail){
    8.     $link = mysqli_connect('localhost', 'root', '123456', 'date') or die("Ошибка подключения БД");
    9.     $result = mysqli_query($link, "INSERT INTO users (login, email) VALUES ('$login', '$mail')");
    10.     if ($result){
    11.         echo "Добавили пользователя";
    12.     }
    13.     else {
    14.         echo "Что-то пошло не так";
    15.     }
    16. }
    17. ?>
    18. <!DOCTYPE html>
    19. <html>
    20. <head>
    21.     <title></title>
    22.     <meta charset="utf-8">
    23. </head>
    24. <body>
    25. </body>
    26. </html>
     
  2. miketomlin

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

    С нами с:
    9 авг 2016
    Сообщения:
    1.020
    Симпатии:
    150
    Это не весь код. Тут одни ф-ции и статик.
     
  3. TeslaFeo

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

    С нами с:
    9 мар 2016
    Сообщения:
    2.628
    Симпатии:
    645
    Вставь текст ошибки в гугл переводчик.
    Все заголовки (header) должны быть добавлены до того, как начнётся какой либо вывод
     
  4. Boyenerji

    Boyenerji Новичок

    С нами с:
    24 янв 2017
    Сообщения:
    23
    Симпатии:
    1
    Я закоментил весь вывод echo в index.php

    PHP:
    1. <?php  
    2. require_once 'function/functions.php';
    3. ?>
    4. <!DOCTYPE html>
    5. <html>
    6. <head>
    7.     <title>Страница для юзера</title>
    8.     <meta charset="utf-8">
    9.     <link rel="stylesheet" type="text/css" href="css/style.css">
    10.     <link href="https://fonts.googleapis.com/css?family=Roboto+Condensed" rel="stylesheet">
    11.     <link rel="stylesheet" type="text/css" href="slick/slick.css"/>
    12.     <link rel="stylesheet" type="text/css" href="slick/slick-theme.css"/>
    13.     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    14.     <meta name="viewport" content="width=device-width,initial-scale=1">
    15. </head>
    16. <body>
    17.     <form action="index.php" method="POST">
    18.         Логин: <input type="text" name="login" placeholder="Логин">
    19.         <input type="text" name="mail">
    20.         <input type="submit" name="click">
    21.         <?php
    22.         if (isset($_POST['click'])) {
    23.             if (empty($_POST['login']) || empty($_POST['mail'])) {
    24.                 /*echo "<br>Поля не могут быть пустыми";*/
    25.                 $_POST['login'] = NULL; $_POST['mail'] = NULL;
    26.             }elseif (!preg_match('/[a-zA-Z0-9]/', $_POST['login'])) {
    27.                 /*echo "<br>Введите допустимый логин";*/
    28.                 $_POST['login'] = NULL;
    29.             }
    30.             if (!filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)) {
    31.                 $error = 1;
    32.                 MessageSend($error);
    33.             }
    34.             CreateUser($_POST['login'], $_POST['mail']);
    35.         }
    36.         ?>
    37.     </form>
     
  5. miketomlin

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

    С нами с:
    9 авг 2016
    Сообщения:
    1.020
    Симпатии:
    150
    Никто не делает обработку POST с редиректами и прочей лабудой посреди разметки.
    --- Добавлено ---
    В ответ на POST лучше вообще ничего не выводить.
     
  6. Boyenerji

    Boyenerji Новичок

    С нами с:
    24 янв 2017
    Сообщения:
    23
    Симпатии:
    1
    Когда не срабатывает условие я вывожу exit(); Но он закрывает весь сайт и выводит строку, что не есть красиво. Вот я и хочу создать функцию для вывода ошибки под полем ввода.
     
  7. miketomlin

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

    С нами с:
    9 авг 2016
    Сообщения:
    1.020
    Симпатии:
    150
    Я написал, как нужно делать.

    1) проверки/подсказки на клиенте (JS/HTML).
    2) окончательные проверки на сервере (AJAX+в случае успеха клиентский редирект/серверный редирект на страницу с сообщением об ошибке или в случае успеха на нужную страницу).
     
  8. Boyenerji

    Boyenerji Новичок

    С нами с:
    24 янв 2017
    Сообщения:
    23
    Симпатии:
    1
    Дело в том, что я не знаю JS.
     
  9. miketomlin

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

    С нами с:
    9 авг 2016
    Сообщения:
    1.020
    Симпатии:
    150
    Первый пункт необязательный. Из второго можно выбрать вариант без AJAX.
    --- Добавлено ---
    В случае ошибки добавляйте к адресу формы при редиректе «модификатор», например ?error=тут_номер_ошибки, по которому выводите на странице формы сообщение об ошибке.