Отображение сообщения об ошибке на стороне сервера со страницы процесса на страницу индекса в php

Мне нужно отобразить сообщение об ошибке проверки на стороне сервера, которое отлично работает, если я пишу оба кода (HTML и PHP) на одной странице.

Теперь у меня есть страницы index.php и process.php. Мне нужно передать сообщение об ошибке проверки на стороне сервера из process.php в index.php. Без использования Ajax. ты поможешь мне в этом?

index.php

<?php

include('../../db/connection.php');
$fname_error="";
$email_error="";
?>
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <form action="process.php" method="post">
        <input type="text" name="fname" value="<?php if(isset($fname)){echo $fname;} ?>">
         <span class="error"><?php echo $fname_error;?></span>

        <input type="email" name="email" value="<?php if(isset($email)){echo $email;}?>">
        <span class="error"><?php echo $email_error;?></span>

        <input type="submit" name="submit">
    </form>

</body>
</html>

Process.php

<?php

include('../../db/connection.php');
if (isset($_POST['submit'])) {

    $fname=trim($_POST['fname']);
    $email=trim($_POST['email']);

    if (empty($fname)) {
        $fname_error="Name is empty";
    }

    else
        {
        if ($fname<3) {
        $fname_error="Please enter minimum 3 character";
    }
}

    if (empty($email)) {
        $email_error="Email field is empty";
    }
    else
        {
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          $email_error="Invalid email format"; 

    }
    }


    // insert code here
}
?>

person Naren Verma    schedule 02.06.2017    source источник
comment
Вы можете использовать $_GET для передачи ошибки. Или используйте $_SESSION   -  person Carl Binalla    schedule 02.06.2017
comment
Спасибо за ответ, мистер Свеллар, есть ли другой способ решить?   -  person Naren Verma    schedule 02.06.2017


Ответы (1)


Используйте SESSIONS, чтобы добиться этого. Попробуйте следующий код:

index.php

<?php
session_start();
include('../../db/connection.php');
$fname_error= $_SESSION['fname'];
$email_error= $_SESSION['email_error'];
?>
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <form action="process.php" method="post">
        <input type="text" name="fname" value="<?php if(isset($fname)){echo $fname;} ?>">
         <span class="error"><?php echo $fname_error;?></span>

        <input type="email" name="email" value="<?php if(isset($email)){echo $email;}?>">
        <span class="error"><?php echo $email_error;?></span>

        <input type="submit" name="submit">
    </form>

</body>
</html>

<?php
    unset($_SESSION['fname']);
    unset($_SESSION['email_error']);
?>

process.php

<?php
session_start();
include('../../db/connection.php');
if (isset($_POST['submit'])) {

    $fname=trim($_POST['fname']);
    $email=trim($_POST['email']);

    if (empty($fname)) {
        $_SESSION['fname'] ="Name is empty";
        header('location:index.php');
    }

    else
        {
        if ($fname<3) {
        $_SESSION['fname'] ="Please enter minimum 3 character";
        header('location:index.php');
    }
}

    if (empty($email)) {
        $_SESSION['email_error'] ="Email field is empty";
        header('location:index.php');
    }
    else
        {
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          $_SESSION['email_error']="Invalid email format"; 
          header('location:index.php');

    } 
}


    // insert code here
}
?>
person M.Hamza Mehmood    schedule 02.06.2017
comment
Спасибо за ответ, мистер Хамза. Возможна сессия. Есть ли другой способ решить? - person Naren Verma; 02.06.2017
comment
Помимо сеанса, вы можете использовать метод GET. Поскольку отображение ошибки через URL-адрес не является хорошим подходом, отображение параметров через URL-адрес также не является хорошим. Поэтому я бы порекомендовал вам использовать SESSIONS. Это лучше и безопаснее. - person M.Hamza Mehmood; 02.06.2017
comment
Спасибо за Вашу информацию. Мне нужна еще одна информация. почему вы использовали заголовок() внутри условия if? - person Naren Verma; 02.06.2017
comment
Заголовок('location:index.php'); перенаправит управление из process.php обратно в index.php. FORM ACTION взял управление на обработку страницы, чтобы вернуться на индексную страницу, используется header(). Если вы найдете поддержку, пожалуйста, проголосуйте :-) - person M.Hamza Mehmood; 02.06.2017
comment
Я получаю сообщение об ошибке Undefined index: fname и Undefined index: email_error на индексной странице, даже если я объявляю имя переменной пустым - person Naren Verma; 02.06.2017
comment
я забыл упомянуть, добавьте error_reporting(1); вверху обеих страниц. он скроет предупреждения - person M.Hamza Mehmood; 02.06.2017
comment
Прохладный!! Спасибо за вашу помощь. - person Naren Verma; 03.06.2017