如何在单击提交后才开始验证php表单
我不熟悉php和web开发。我正在尝试对文本字段进行简单的验证。单击提交按钮后,我想在文本字段旁边显示一条红色备注 然而,我这里的问题是:php代码在加载页面时验证所有输入字段。如何仅在用户单击“提交”按钮后对其进行验证如何在单击提交后才开始验证php表单,php,validation,Php,Validation,我不熟悉php和web开发。我正在尝试对文本字段进行简单的验证。单击提交按钮后,我想在文本字段旁边显示一条红色备注 然而,我这里的问题是:php代码在加载页面时验证所有输入字段。如何仅在用户单击“提交”按钮后对其进行验证 <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Name <input type='text' name='nam
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name <input type='text' name='name' /><br>
Email <input type='text' name='email' /><br>
Age<input type='text' name='age' /><br>
<input type='submit' name='Done' /><br><br>
</form>
<?php
if(empty($POST['name']))
echo '<font color="red">Please enter your name.</font>';
if(empty($POST['email']))
echo '<font color="red">Please enter your email.</font>';
if(empty($POST['age']))
echo '<font color="red">Please enter your age.</font>';
?>
我这里有几个问题:
1) 如果我想在每个文本字段旁边显示错误消息,我应该在每个输入字段旁边写一个单独的php代码吗
2) 如何仅在用户单击提交按钮后回显错误消息
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name <input type='text' name='name' /><br>
Email <input type='text' name='email' /><br>
Age<input type='text' name='age' /><br>
<input type='submit' name='Done' /><br><br>
</form>
<?php
if(empty($POST['name']))
echo '<font color="red">Please enter your name.</font>';
if(empty($POST['email']))
echo '<font color="red">Please enter your email.</font>';
if(empty($POST['age']))
echo '<font color="red">Please enter your age.</font>';
?>
我知道这对这里的许多人来说非常简单,但这是我第一次做一些与web相关的事情。使用
$\u服务器['REQUEST\u METHOD']
来检测页面是否在发布表单时显示
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (empty($_POST['name'])) {
echo '<span style="color: red;">Please enter your name.</span>';
}
if(empty($_POST['email'])) {
echo '<span style="color: red;">Please enter your email.</span>';
}
if(empty($_POST['age'])) {
echo '<span style="color: red;">Please enter your age.</span>';
}
}
if($\u服务器['REQUEST\u方法]]=“POST”){
if(空($_POST['name'])){
echo“请输入您的姓名”;
}
如果(空($_POST['email'])){
echo“请输入您的电子邮件”;
}
如果(空($_POST['age'])){
echo‘请输入您的年龄’;
}
}
如果要在每个输入旁边单独显示它们,可以编写:
Name <input type='text' name='name' /> <?php
if ($_SERVER['REQUEST_METHOD'] == "POST" && empty($_POST['name'])) {
echo '<span style="color: red;">Please enter your name.</span>';
} ?><br>
Name
请注意,包含
POST
参数的变量是$\u POST
,而不是$POST
,只需检查POST是否已发送即可
<?php
if($_POST)
{
if(empty($POST['name']))
echo '<font color="red">Please enter your name.</font>';
if(empty($POST['email']))
echo '<font color="red">Please enter your email.</font>';
if(empty($POST['age']))
echo '<font color="red">Please enter your age.</font>';
}
?>
请注意:
<input type='submit' name='Done' /><br><br>
应该在PHP标记之外。
要在每个元素旁边显示错误,只需将if语句移动到应该在HTML中显示的位置
大多数开发人员使用javascript进行表单验证。一个快速的谷歌会给你很多关于这方面的信息。试试这个,我用你的表格工作100%=)
函数ValidateForm(){
var name=document.getElementById('name')。值;
var email=document.getElementById('email')。值;
var age=document.getElementById('age')。值;
如果(姓名=“”&&email=“”&&age=“”)
{
document.getElementById(“error_name”).innerHTML=“请输入您的姓名
”;
document.getElementById(“error_email”).innerHTML=“请输入您的电子邮件
”;
document.getElementById(“error_age”).innerHTML=“请输入您的年龄”;
返回false;
}
else if(name==“”)
{
document.getElementById(“error_name”).innerHTML=“请输入您的姓名
”;
返回false;
}
如果出现其他情况(电子邮件==“”)
{
document.getElementById(“error_email”).innerHTML=“请输入您的电子邮件
”;
返回false;
}
else if(年龄=“”)
{
document.getElementById(“error_age”).innerHTML=“请输入您的年龄”;
返回false;
}
}
电子邮件
年龄
要遵循干式系统,您可以稍微简化代码,并使其易于调整,以防将来在表单中添加更多字段。您只需将新字段名添加到$fields
数组中即可。如果需要另一个类
或其他东西,调整HTML也会容易得多
if(whatever condition you need)
{
$fields = array('name', 'email', 'age');
foreach ( $fields as $field ) {
if(empty($POST[$field]))
echo '<font color="red">Please enter your ' . $field . '.</font>';
}
}
}
if(您需要的任何条件)
{
$fields=array('name','email','age');
foreach($fields作为$field){
if(空($POST[$field]))
echo“请输入您的“.$字段”;
}
}
}
只需在表单中添加一个隐藏的输入即可
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name <input type='text' name='name' /><br>
Email <input type='text' name='email' /><br>
Age<input type='text' name='age' /><br>
<input type='submit' name='Done' /><br><br>
<input type="hidden" name='form' value='wasSubmited' />
</form>
1.是的,2。如下更改您的条件:
if($\u POST&&empty($\u POST['name']))
。感谢您的回复,但在我加载页面时仍会显示错误消息。$\u POST
用于什么?为什么提交按钮在表单外面?@Barmar我从原始代码粘贴到了错误的位置,它在我实际代码中的表单中。已对其进行了修改。谢谢!使用javascript。。或者您可以使用此感谢非常感谢您的回复,但是我尝试了if($\u POST)
和if($\u SERVER['REQUEST\u METHOD']==“POST”)
。加载页面的那一刻,在我单击“提交”按钮之前。将显示验证消息。该页面是其他表单的目标吗?如果您只是链接到该页面或将其输入地址栏,该方法将是GET
,并且不应执行任何代码。我想我意识到了问题所在,我正在尝试刷新该页面我关闭浏览器并打开它,它现在可以工作了。谢谢你的帖子,我稍后会尝试。但是我需要用php做所有事情:)我在第二个答案中添加了纯php和html代码。。试试看=)
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name <input type='text' name='name' /><br>
Email <input type='text' name='email' /><br>
Age<input type='text' name='age' /><br>
<input type='submit' name='Done' /><br><br>
<input type="hidden" name='form' value='wasSubmited' />
</form>
if ($_POST['form'] == 'wasSubmited') {
// here you can start to validate your form
}