如何在同一页面上显示错误(php表单)
试图在同一页上显示错误。我该怎么做?现在,每当出现错误时,它都会生成一个空白页,其中列出了所有错误 我不想那样 这是我从某个地方的教程如何在同一页面上显示错误(php表单),php,forms,Php,Forms,试图在同一页上显示错误。我该怎么做?现在,每当出现错误时,它都会生成一个空白页,其中列出了所有错误 我不想那样 这是我从某个地方的教程test.php中摘取的一个基本表单: <?php session_start(); ?> <html> <head> <title></title> </head> <body> <form name="form1" method="post"
test.php
中摘取的一个基本表单:
<?php session_start(); ?>
<html>
<head>
<title></title>
</head>
<body>
<form name="form1" method="post" action="test2.php">
Name: <br/>
<input type="text" name="name" value="<?php echo $_POST['name']; ?>" size="50" /><br/><br/>
Email Address: <br/>
<input type="text" name="email" value="<?php echo $_POST['email']; ?>" size="50"/> <br/><br/>
Home Page: <br/>
<input type="text" name="homepage" value="<?php echo $_POST['homepage']; ?>" size="50" /> <br/><br/>
Message: <br/>
<textarea name="message" rows="5" cols="50"><?php echo $_POST['message']; ?></textarea>
<br/>
<input type="submit" name="Submit" />
</form>
</body>
</html>
<?php
session_start();
if (isset($_POST['Submit'])) {
if ($_POST['name'] != "") {
$_POST['name'] = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
if ($_POST['name'] == "") {
$errors .= 'Please enter a valid name.<br/><br/>';
}
} else {
$errors .= 'Please enter your name.<br/>';
}
if ($_POST['email'] != "") {
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors .= "$email is <strong>NOT</strong> a valid email address.<br/><br/>";
}
} else {
$errors .= 'Please enter your email address.<br/>';
}
if ($_POST['homepage'] != "") {
$homepage = filter_var($_POST['homepage'], FILTER_SANITIZE_URL);
if (!filter_var($homepage, FILTER_VALIDATE_URL)) {
$errors .= "$homepage is <strong>NOT</strong> a valid URL.<br/><br/>";
}
} else {
$errors .= 'Please enter your home page.<br/>';
}
if ($_POST['message'] != "") {
$_POST['message'] = filter_var($_POST['message'], FILTER_SANITIZE_STRING);
if ($_POST['message'] == "") {
$errors .= 'Please enter a message to send.<br/>';
}
} else {
$errors .= 'Please enter a message to send.<br/>';
}
if (!$errors) {
$mail_to = 'me@somewhere.com';
$subject = 'New Mail from Form Submission';
$message = 'From: ' . $_POST['name'] . "\n";
$message .= 'Email: ' . $_POST['email'] . "\n";
$message .= 'Homepage: ' . $_POST['homepage'] . "\n";
$message .= "Message:\n" . $_POST['message'] . "\n\n";
mail($to, $subject, $message);
echo "Thank you for your email!<br/><br/>";
} else {
echo '<div style="color: red">' . $errors . '<br/></div>';
}
}
?>
注意,我在这两个页面中都添加了会话\u start
,因为我希望通过它而不是GET
来完成错误
如何在
test.php
表单上显示错误 我会使用会话来表示同一页面上的错误
在test2.php上启动会话
session_start();
然后在需要的if语句中创建会话错误
$_SESSION['error'] = 'error message here';
header('location:test1.php');
exit;
然后在test1.php上,类似这样
<?php
session_start();
if (!empty($_SESSION['error'])){
?>
<div class="alert"> //you could then style this div to present error message better
<?php
echo $_SESSION['error'];
unset($_SESSION['error']);
}
?>
</div>
//然后可以设置此div的样式,以便更好地显示错误消息
或者在一个php语句中不使用div,只是简单地回显错误
希望我能帮上忙。我会使用会话来表示同一页上的错误 在test2.php上启动会话
session_start();
然后在需要的if语句中创建会话错误
$_SESSION['error'] = 'error message here';
header('location:test1.php');
exit;
然后在test1.php上,类似这样
<?php
session_start();
if (!empty($_SESSION['error'])){
?>
<div class="alert"> //you could then style this div to present error message better
<?php
echo $_SESSION['error'];
unset($_SESSION['error']);
}
?>
</div>
//然后可以设置此div的样式,以便更好地显示错误消息
或者在一个php语句中不使用div,只是简单地回显错误
希望我能帮忙。谢谢您的回复!如果你不介意的话,我可以问个问题吗?我有点不明白你应该如何把会话错误放在if语句中…我只是添加了一个编辑,看看这是否是你的意思。。。是吗?是的,在我做的一些工作中对我有用。。。不过我还是不知道。成功了吗?谢谢你的回复!如果你不介意的话,我可以问个问题吗?我有点不明白你应该如何把会话错误放在if语句中…我只是添加了一个编辑,看看这是否是你的意思。。。是吗?是的,在我做的一些工作中对我有用。。。不过我还是不知道。它起作用了吗?