首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >php在同一页面上验证,然后通过不同的php处理

php在同一页面上验证,然后通过不同的php处理
EN

Stack Overflow用户
提问于 2018-06-02 08:00:37
回答 4查看 503关注 0票数 1

我对PHP非常陌生,并且已经设法自己学到了一些东西,但我在这个问题上陷入了困境。我有一个表单,将验证自我,并在同一页上显示错误。一旦信息被填充和验证,我需要通过一个单独的PHP脚本处理它,它将给我发送一封电子邮件,将信息发布到一个.csv文件,并显示一个确认页面。我目前有这两个工作,但不是在一起。换句话说,我的表单将对self进行验证,但信息不会出现。这显然是无用的。另外,通过将操作设置为PHP脚本,我可以让表单执行所有其他功能,但是字段是否填写并不重要,它会发送任何内容。我尝试了所有的方法,从会话、函数、包含,我甚至不记得还有什么可以让它工作。我甚至尝试将我的错误设置为数组,然后对结果调用TRUE/FALSE函数,以便使其进行验证,然后重定向。我已经在同一页上验证了结果,但无论如何都会发送所有信息,但什么也不做,只会在空白页上显示。

请不要回答说这是重复的。这是一个我已经研究了至少一周的问题。我已经在这个网站和其他网站上阅读了很多帖子,但没有找到一个有效的答案。

我不希望在客户端验证,然后通过PHP发送。我还需要同一页验证,并确保任何以前输入的响应a被保留(我的表单目前这样做),因为有许多字段是必需的。

我正在张贴我的代码的一部分,以保持它的必要信息。正如我所说的,如果我设置了运行PHP脚本的操作,那么我的验证就会自动生效。

这是验证的一部分:

代码语言:javascript
复制
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["childsfirstname"])) {
    $childsfirstnameErr = "Child's first name is required.";
  } else {
    $childsfirstname = test_input($_POST["childsfirstname"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$childsfirstname)) {
      $childsfirstnameErr = "Only letters and white space allowed";
      die;  
    }
  }

  if (empty($_POST["childslastname"])) {
    $childslastnameErr = "Child's last name is required.";
  } else {
    $childslastname = test_input($_POST["childslastname"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$childslastname)) {
      $childslastnameErr = "Only letters and white space allowed";
      die;  
    }
  }

   if (empty($_POST["month"])) {
    $monthErr = "Child's birthday is required.";
  } else {
    $month = test_input($_POST["month"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[0-9]*$/",$month)) {
      $monthErr = "Only numbers allowed";
      die; 
    }
  }
function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

这是表单的一部分:

代码语言:javascript
复制
<div id="Field" style="left: 0px; top: 0px"><strong>Youth's:</strong> 
        First Name: 
            <input type="text" name="childsfirstname" style="width: 220px" value="<?php echo $childsfirstname;?>"/>
            &nbsp;&nbsp;&nbsp; 
        Last Name: 
            <input type="text" name="childslastname" style="width: 300px" value="<?php echo $childslastname;?>"/>
    </div>
    <div id="parent" class="error"> 
        <div id="error1a" style="right: 561px"> <?php echo $childsfirstnameErr;?></div>
        <div id="error1b"> <?php echo $childslastnameErr;?></div> 
    </div>

虽然我意识到这里没有代码来表明我正在尝试重定向以发送信息,但请相信我已经做了不止几次尝试,我所寻找的只是做这件事的最佳方式和如何去做的一些实际指导。只要它能工作,不管它是include还是require,会话还是其他的,只要它是PHP并验证到self,然后在验证完成并且表单没有错误时提交给另一个PHP脚本就可以了。

我非常感谢任何帮助,特别是因为我是在志愿者的基础上做这件事。提前感谢所有能伸出援助之手的人。

这是我的PHP脚本的开头和结尾-我将省略中间部分,因为总共有16个基本相同的书面验证。

代码语言:javascript
复制
  if ($\_SERVER["REQUEST\_METHOD"] == "POST") {
代码语言:javascript
复制
if (empty($_POST["childsfirstname"])) {
  $Err[1] = "Child's first name is required.";
 }else {
  $childsfirstname = test_input($_POST["childsfirstname"]);
    if (!preg_match("/^[a-zA-Z ]*$/",$childsfirstname)) {
    $Err[1] = "Only letters and white space allowed";
  }
}

  if (empty($_POST["childslastname"])) {
  $Err[2] = "Child's last name is required.";
  } else {
  $childslastname = test_input($_POST["childslastname"]);
    if (!preg_match("/^[a-zA-Z ]*$/",$childslastname)) {
    $Err[2] = "Only letters and white space allowed";
  }
}

。。。

代码语言:javascript
复制
if (empty($_POST["date"])) {
$Err[15] = "Date required.";
}else {
$date = test_input($_POST["date"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[0-9]*$/",$date)) {
  $Err[15] = "Letters are not allowed"; 
 }
}

if (empty($_POST["checkbox"])) {
$Err[16] = "VALIDATION REQUIRED";
}else {
$checkbox = test_input($_POST["checkbox"]);
 }
}  

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}


?>

这不需要任何当前传递表单信息的尝试-只有在验证有效的情况下。我不断地恢复到正在工作的状态,这样我就不会破坏正在工作的状态。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50652300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档