Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在单击提交后才开始验证php表单_Php_Validation - Fatal编程技术网

如何在单击提交后才开始验证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

我不熟悉php和web开发。我正在尝试对文本字段进行简单的验证。单击提交按钮后,我想在文本字段旁边显示一条红色备注

然而,我这里的问题是:php代码在加载页面时验证所有输入字段。如何仅在用户单击“提交”按钮后对其进行验证

<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
}