当用户按下提交时,我将如何验证(使用PHP)表单?想要确保我从概念上理解这一点

时间:2013-01-19 21:18:32

标签: php html forms

我试图理解这一点,但我遇到了一些麻烦。

基本上,我有一个表格,里面有一些输入。我将表单操作设置为一个脚本,该脚本将在提交时将一些内容输出到新页面并通过电子邮件发送给用户。大。

我的问题是验证他们的输入。我想确保没有字段留空。如果它们被清空,当用户按下提交时,我希望重新加载页面,突出显示空白的框并保留其先前的信息。

我只是不明白我应该怎么做。我以为我可以重新输出HTML但是突出显示了字段。这是有效的,但在代码中非常冗长,并且URL与之前的URL不同,因为URL将是处理脚本的位置。我以为我可以在处理脚本中验证它然后将它们重定向回原始页面,但是我无法保留它们的输入并标记它们的空输入。

我已经用Google搜索并尝试找到合适的解决方案,其中很多都处理这个问题,他们在初始表单页面上有一个php脚本,在表单上方检查用户是否点击提交,验证它如果他们这样做,并输出结果(例如本教程:http://papermashup.com/php-form-validation/)。很酷,但我有一些问题。

  • 这与提交时触发的JavaScript解决方案有何不同?为什么我不这样做呢?
  • 你怎么能把它放在你的表格之上?我认为代码从上到下读取,所以当它触及表单并且你点击提交时,我看不到上面的表格会如何触发。
  • 我不能用这个解决方案影响CSS,可以吗?比如用红色突出显示一个方框?
  • 如果验证合适,如何允许他们转到处理脚本?我将它作为我的表单上的action属性,但这似乎停止了。

这样做的正确方法是什么?我很困惑。

1 个答案:

答案 0 :(得分:0)

有太多方法可以做到这一点 第一个php是服务器端语言我假设您知道并且关于验证,它不像javascript(客户端)那样在onsubmit事件上进行验证

一种解决方案是验证主页中的表单

我写得很快,检查我是否错过了报价或......但这应该这样做

<?php

$redirect_form="";
$highlight_field="";
$error="";
$valid=true;

if(isset($_POST["submit"]) && $_POST["submit"]=="Submit"){ //assuming that you have an input text called: first_name

$first_name=trim($_POST["first_name"]);

if($first_name==""){
$error.="Please enter your first name";
$highlight_field="class='highlight_field'";
$valid=false;
}

if($valid){

$redirect_form="<form name='new_page' action='new_page.php' method='post'>";
$redirect_form="<input type='hidden' name='first_name' value='".$first_name."' />";
$redirect_form="</form>";
$redirect_form="<script type='text/javascript>document.new_page.submit()</script>";

}

?>

<html>
<head>
<style>.highlight_field: color:#990000; </style>
<body>
<?php

if(isset($_POST["submit"]) && $_POST["submit"]=="Submit"){

if(!$valid){
echo error;
}
else{
echo $redirect_form;
}
?>

<form name='main_page' action='main_page.php' method='post'>
<span <?php echo $highlight_field; ?>>First name</span><input type='text' name='first_name' value='' />
<input type='submit' name='submit' value='Submit' />

</form>

</body>
</head>
</html>

或者你可以用ajax

来做