Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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
Javascript 使用php验证html表单_Javascript_Php_Jquery_Html_Forms - Fatal编程技术网

Javascript 使用php验证html表单

Javascript 使用php验证html表单,javascript,php,jquery,html,forms,Javascript,Php,Jquery,Html,Forms,我正在尝试使用php验证html表单。我已经用下面的方法解决了这个问题: function name() { var pass = document.getElementById('firstname1'); var sb = document.getElementById('submit1'); var letters=/^[a-zA-Z]+$/; if (pass.value.match(letters) ){ sb.disabled = fals

我正在尝试使用php验证html表单。我已经用下面的方法解决了这个问题:

function name() {

    var pass = document.getElementById('firstname1');
    var sb = document.getElementById('submit1');
    var letters=/^[a-zA-Z]+$/;
    if (pass.value.match(letters) ){
     sb.disabled = false;
     document.getElementById('error-fname1').style.display = 'none';
        }
    else {
         document.getElementById('error-fname1').style.display = 'block';
        sb.disabled = true;  }
          }
我的html表单的一部分:

但我的问题是,在此表单中,错误消息不会与表单出现在同一页,而是出现在另一页。我想在表单所在的页面上显示错误消息

在javascript中我这样做,但我不知道如何在php中这样做: 我构建了一个如下所示的函数:

function name() {

    var pass = document.getElementById('firstname1');
    var sb = document.getElementById('submit1');
    var letters=/^[a-zA-Z]+$/;
    if (pass.value.match(letters) ){
     sb.disabled = false;
     document.getElementById('error-fname1').style.display = 'none';
        }
    else {
         document.getElementById('error-fname1').style.display = 'block';
        sb.disabled = true;  }
          }
然后我试着这样称呼它:

<input class="text" type="text" name="fname" id="firstname1"  required="required" onchange="name()">

<span class="errorformat "  id="error-fname1"  style="display: none" >
          Please write only letters
                    </span>

请只写信

请帮助我…我正在努力学习php。。。提前感谢

为什么不在同一页上验证它呢

php:

html:



这样,php只在表单已提交时运行,错误将出现在同一页面上

如果您想使用php执行服务器端验证(强烈推荐),那么您可以使用以下方法,将所有内容都放在同一个文件中。。。示例文件form.php

<?php

//validate form

if(!preg_match("/^[a-zA-Z ]*$/",$_POST['fname']))
{ 
$problem = true;
}
else
{
$formok = true;

?>

然后,html部分开始,您可以在某个时候输入错误消息:

<?php if($problem) echo "Incorrect Name Format" ?>

<?php if($formok) echo "Nice job" ?>

那么表格应该是这样的:

<form action="form.php">
//inputs
</form>

//投入

如果您想使用重定向在之前的页面上显示错误消息,可以执行类似的操作:

if (!preg_match("/^[a-zA-Z ]*$/",$_POST['fname'])) {
    header("Location: http://domain/oldpage.php");
    exit();
}

您可以将其重定向到新的错误页面,或者可能在链接末尾包含一个查询字符串,例如
?error=true
。然后,在页面上检查该查询字符串,如果有,则显示错误消息。

在表单所在的页面上,添加GET var并检查是否已设置。比如:

if(isset($_GET['error'])) {
   // Output error message logic here. Don't forget to sanitize the GET var //
}
在处理数据的文件中,如果有任何错误,请将用户返回到包含表单的页面,并附上错误消息

$errormsg = '';
if($_POST['fname'] == trim("") || !isset($_POST['fname'])) {
  $errormsg = 'Please enter your name';
  header('location: signup.php?error='.$errormsg);
}

这假设包含表单的页面是一个PHP文件。如果不是,只需更改扩展名。

是否将表单的
操作设置为另一页?如果是这样的话,在服务器端PHP代码的旧页面上放置错误消息的唯一方法是重定向回旧页面。是的,当我按下submit按钮时,我转到另一个页面,上面写着:成功或输出错误消息。这个页面名为signup.php,在那里我还将表单与数据库连接起来,并在那里检查错误。但是我如何在signup.html页面中检查表单所在页面中的错误?我如何重定向回旧页面?您不能简单地使用PHP检查同一页面。PHP的全部意义在于它是一个服务器端代码。您可以使用
AJAX
request来完成,但您需要javascript和PHP。表单要转到另一个页面,但错误消息应该显示在旧页面上。只需重定向到下一个页面validation SucceedYes@Jaxon,我的想法是让它与表单位于同一页面…我尝试构建一个php函数,并将其调用onchange…因为我希望在单击第二个输入表单时,第一个表单不正确,显示错误…在我提交时不在最后显示错误…但我如何才能做到这一点?你需要JavaScript,但你还没有JavaScript验证吗?是的,我有。但我在想该用哪一个。我现在正在学习php,我想用php进行验证。但我的情况更好吗?
if (!preg_match("/^[a-zA-Z ]*$/",$_POST['fname'])) {
    header("Location: http://domain/oldpage.php");
    exit();
}
if(isset($_GET['error'])) {
   // Output error message logic here. Don't forget to sanitize the GET var //
}
$errormsg = '';
if($_POST['fname'] == trim("") || !isset($_POST['fname'])) {
  $errormsg = 'Please enter your name';
  header('location: signup.php?error='.$errormsg);
}