За последние 24 часа нас посетили 71122 программиста и 10268 роботов. Сейчас ищут 2139 программистов ...

Возможно ли при помощи header() вызвать функцию?

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

  1. Glebiys

    Glebiys Новичок

    С нами с:
    11 май 2018
    Сообщения:
    12
    Симпатии:
    0
    Адрес:
    Los-Angeles CA
    Приветствую! Пишу свой первый скрипт авторизации, стоит задача при вводе неверного пароля выводить предупреждение.
    Сейчас система работает так:
    (index.php - страница с формой для входа / auth.php - скрипт авторизации / db.php - подключение к БД)
    Index.php:
    PHP:
    1. <?php
    2. require_once "db.php";
    3. ?>
    4.  
    5. <form method="POST" action="/au/auth.php">
    6.   <input type="text" placeholder="Ваш номер" name="login">
    7.   <input type="text" placeholder="Ваш пароль" name="password">
    8.   <hr>
    9.   <input type="submit" value="Отправить">
    10. </form>
    Auth.php:
    PHP:
    1. <?php
    2.  
    3. include('db.php');
    4.  
    5. $phone = $_POST['phone'];
    6. $password = $_POST['password'];
    7.  
    8. $count = mysqli_query($db_connect, "SELECT * FROM `users` WHERE `phone` = '$phone' AND `password` = '$password'");
    9. if(mysqli_num_rows($count) == 0){
    10.   echo 'Вы не зарегистрированы!';
    11.   header("Location: /test/index.php");
    12. } else {
    13.   echo 'Успешная авторизация!';
    14. }
    Я добавил в auth.php перевод на страницу авторизации в случае ввода неверных данных:
    Код (Text):
    1.  header("Location: /test/index.php");
    . Хотелось бы сделать так, чтобы при ошибке перекидывало на первоначальную страницу и там уже выдавало ошибку путем вызова определенной функции с выводом текста, к примеру:
    PHP:
    1. <?php function passerror() {echo 'Ошибка авторизации!';} ?>
    Как это грамотно реализовать?
    Заранее спасибо за помощь!
     
    #1 Glebiys, 11 май 2018
    Последнее редактирование модератором: 11 май 2018
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    сделай на js запрос на своё апи, проще будет жить.
     
  3. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    PHP:
    1.   echo 'Вы не зарегистрированы!';
    2.   header("Location: /test/index.php");
    нельзя так делать будет ошибка, что заголовки уже отправлены.
    лучше сделай так, наверное:
    PHP:
    1. header("Location: /test/index.php");
    2. exit('Вы не зарегистрированы!');
    а что по поводу твоего вопроса, я использую сессии для вывода ошибок.
    а лучше и грамотней будет использовать JS как посоветовали выше.
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.862
    Симпатии:
    657
    @Glebiys, при редиректе добавляйте какой-то модификатор в адрес (error, ok, ?status=1 и т.п.), чтобы по нему выводить сообщение на странице формы.