Стоит отметить, что я новичок в php. Я также хотел бы получить ответ на php (если это возможно).Как отображать сообщения об ошибках при перенаправлении?
Вот что я пытаюсь достичь: я хочу перенаправить пользователя, если какие-либо ошибки, которые я проверяю, найдены в форме html/php (которую пользователь видит вначале, где входы уже созданы) с настраиваемыми сообщениями об ошибках, которые поступают из файла отдельно к форме html/php.
Подробности: Пользователь видит форму HTML/PHP, где они вводят имена в формате csv. После того, как они нажимают кнопку create, имена обрабатываются в другом файле только php, где имена проверяются на наличие ошибок и другие подобные вещи. Если обнаружена ошибка, я хочу, чтобы Пользователь был перенаправлен в форму HTML/PHP, где они могут исправлять ошибки и любые соответствующие сообщения об ошибках. После исправления имен пользователь может нажать кнопку «создать пользователя» и снова обработать (без ошибок) и по завершении перенаправить пользователя на страницу, где отображаются имена и такие вещи. Переадресация происходит после отправки заголовков. Из того, что я читал, это не лучшая вещь, но пока это будет для меня.
Код для HTML формы/PHP:
<!DOCTYPE HTML>
<HTML>
<head>
<title>PHP FORM</title>
</head>
<body>
<form method="post" action="processForm.php">
Name: <input type="text" name="names" required = "required"><br>
<input type="submit" value="Create Users" onclick="formInputNames"><br>
Activate: <input type="checkbox" name="activate">
</form>
<?php
// include 'processForm.php';
// errorCheck($fullname,$nameSplit,$formInputNames);
?>
</body>
</html>
Я пытался возиться с «включить», но это, кажется, не делать ничего, однако, я все это здесь, чтобы проиллюстрировать то, что я пытаюсь достигать.
Код для процесса:
$formInputNames = $_POST['names'];
$active = (isset($_POST['activate'])) ? $_POST['activate'] : false;
//checks if activate checkbox is being used
$email = '@grabby.com';
echo "<br>";
echo "<br>";
$fullnames = explode(", ", $_POST['names']);
if ($active == true) {
$active = '1';
//sets activate checkbox to '1' if it has been selected
}
/*----------------------Function to Insert User---------------------------*/
A Function is here to place names and other fields in database.
/*-------------------------End Function to Insert User--------------------*/
/*-----------------------Function for Errors---------------------*/
function errorCheck($fullname,$nameSplit,$formInputNames){
if ($formInputNames == empty($fullname)){
echo 'Error: Name Missing Here: '.$fullname.'<br><br>';
redirect('form.php');
}
elseif ($formInputNames == empty($nameSplit[0])) {
echo 'Error: First Name Missing in: '.$fullname.'<br><br>';
redirect('form.php');
}
elseif ($formInputNames == empty($nameSplit[1])) {
echo 'Error: Last Name Missing in: '.$fullname.'<br><br>';
redirect('form.php');
}
elseif (preg_match('/[^A-Za-z, ]/', $fullname)) {
echo 'Error: Found Illegal Character in: '.$fullname.'<br><br>';
redirect('form.php');
}
}
/*-----------------------------End Function for Errors------------------------*/
/*--------------------------Function for Redirect-------------------------*/
function redirect($url){
$string = '<script type="text/javascript">';
$string .= 'window.location = "' .$url. '"';
$string .= '</script>';
echo $string;
}
/*-------------------------End Function for Redirect-----------------------*/
// Connect to database
I connect to the database here
foreach ($fullnames as $fullname) {
$nameSplit = explode(" ", $fullname);
//opens the database
I Open the database here
errorCheck($fullname,$nameSplit,$formInputNames);
$firstName = $nameSplit[0];//sets first part of name to first name
$lastName = $nameSplit[1];//sets second part of name to last name
$emailUser = $nameSplit[0].$email;//sets first part and adds email extension
newUser($firstName,$lastName,$emailUser,$active,$conn);
redirect('viewAll.php');
//echo '<META HTTP-EQUIV="Refresh" Content="0; URL=viewAll.php">';
//if you try this code out, you can see my redirect to viewAll doesn't work when errors are found...I would appreciate help fixing this as well. My immediate fix is using the line under it but I don't like it.
}
Все исследования я сделал не получил меня далеко. Я понимаю, что отправка заголовков не является хорошей практикой. Я посмотрел на ob_open (функция php - я думаю, что он был вызван) и не мог понять, как правильно его использовать. Я не мог найти здесь вопрос, который удовлетворял условиям, которые я пытаюсь удовлетворить.
Любая помощь, конечно, appreciated.Thank Вы
EDIT: Это не дубликат "Передача сообщений об ошибках в PHP.
------- Хотя идея аналогична, они представляют собой «Передача сообщений об ошибках в PHP» перед отправкой заголовков. Поэтому это не то же самое.
Хотя идея похожа, они «Передача сообщений об ошибках в PHP», прежде чем заголовки отправляются. Поэтому это не то же самое. – Alei