如何在PHP中显示空或不正确的表单输入字段旁边的单个错误消息?如果表格已成功提交,则如何在几秒钟后刷新页面并将用户重定向到上一页?
php(front(:
<form id="application" method="post" action="processing.php" novalidate="novalidate">
<fieldset>
<p>
<legend>Application Form</legend><p>
<label for="fname">Name</label>
<input type="text" name="fname" id="fname" required="required" />
</p>
</fieldset>
</form>
php(back(:
<?php
function sanitise_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
require_once ("settings.php");
$conn = @mysqli_connect(
$host,
$user,
$pwd,
$sql_db
);
if ($conn) {
if (isset($_POST["fname"])) {
$fname = sanitise_input($_POST["fname"]);
}
else {
mysqli_close($conn);
header("location:application.php");
}
else {
mysqli_close($conn);
header("location:application.php");
}
$query = "CREATE TABLE IF NOT EXISTS application (
fname VARCHAR(50) NOT NULL)";
$result = mysqli_query ($conn, $query);
if (!$result) {
echo "<p>Error!</p>";
}
}
if (!$conn) {
echo "<p>Failed!</p>";
}
else {
$sql_table = "application";
$query = "INSERT INTO $sql_table (fname) VALUES ('$fname')";
$result = mysqli_query($conn, $query);
if (!$result) {
echo "<p>Error!", $query, "</p>";
}
else {
$id = "SELECT * FROM application ORDER BY id DESC LIMIT 1";
$idresult = mysqli_query($conn, $id);
while ($row = mysqli_fetch_assoc($idresult)) {
echo "<p>You are applicant #",$row["EOInumber"],"</p>";
}
}
mysqli_close($conn);
}
?>
这个问题不是很清楚,但是如果我必须假设您要的是什么,那就是如何在PHP中分配错误消息。您可以尝试:
if(isset(variable_name({
echo"显示错误:"
}
或
isempty(variable_name({回声"显示错误:"}
尝试清楚地指定错误...
堆栈溢出中有多个答案,您可以搜索...
根据您在评论中的输入来判断,我会提出以下代码。如您所见,修改
front.php
<?php
session_start();
?>
<html>
<head>
<title>Front Page</title>
</head>
<body>
<h1 style="text-align:center;">My Form</h1>
<div style="width: 500px;margin:0 auto; margin-top:5px">
<form method="POST" action="back.php">
<?php
// Explode and convert errors string back into array so we can use methods like in_array()
$errorsArray = [];
if(isset($_SESSION['errors'])){
$errorsArray = explode(',', $_SESSION['errors']);
}
?>
<div style="margin-top:10px;">
<label for="name">Name</label>
<input type="text" id="name" name="name" placeholder="Enter a name" />
<?php
if(in_array('name', $errorsArray)){
echo '<div style="margin-top:10px;">Something wrong with name</div>';
}
?>
</div>
<div style="margin-top:10px;">
<label for="email">Email</label>
<input type="text" id="email" name="email" placeholder="Enter a Email" />
<?php
if(in_array('email', $errorsArray)){
echo '<div style="margin-top:10px;">Something wrong with email</div>';
}
?>
</div>
<div style="margin-top:10px;">
<button type="submit">Send</button>
<?php
if(isset($_SESSION['error']) && empty($_SESSION['status'])){
echo '<div style="margin-top:10px;">Some fields have errors</div>';
}
if(isset($_SESSION['status']) && empty($_SESSION['error'])){
echo '<div style="margin-top:10px;">Success</div>';
}
?>
</div>
</form>
</div>
</body>
</html>
<?php
session_unset();
session_destroy();
?>
back.php
<?php
session_start();
$name = $_POST['name'];
$email = $_POST['email'];
if(isset($name) && isset($email) && $name != "" && $email != ""){
// Continue with database insertion
$_SESSION['status'] = 'success';
echo 'Thanks'; // Echo your html
header("refresh:5; url=./front.php"); // the 5 is seconds
die();
} else {
$errorsArray = [];
if(!isset($name) || $name == ""){
array_push($errorsArray, 'name');
}
if(!isset($email) || $email == ""){
array_push($errorsArray, 'email');
}
$_SESSION['error'] = 'true';
$_SESSION['errors'] = join(',', $errorsArray);
header("Location:./front.php");
die();
}
?>