PHP验证不是我喜欢的

PHP验证不是我喜欢的,php,forms,validation,Php,Forms,Validation,我已经为我的HTML表单做了一些javascript验证,但是我还需要包括一些PHP验证,因此当用户忘记在文本输入中输入内容或选择单选按钮时,我为HTML表单中的所有功能包括了PHP验证 问题是,如果用户单击“准备问题”提交按钮,那么它不会在应该显示的时候显示回显,而是提交表单,我不希望发生这种情况。我不想在php验证成功之前提交表单。我需要在代码中更改什么才能使其正常工作: 代码如下: <form action="QandATable.php" method="post" id="ses

我已经为我的HTML表单做了一些javascript验证,但是我还需要包括一些PHP验证,因此当用户忘记在文本输入中输入内容或选择单选按钮时,我为HTML表单中的所有功能包括了PHP验证

问题是,如果用户单击“准备问题”提交按钮,那么它不会在应该显示的时候显示回显,而是提交表单,我不希望发生这种情况。我不想在php验证成功之前提交表单。我需要在代码中更改什么才能使其正常工作:

代码如下:

<form action="QandATable.php" method="post" id="sessionForm">
<p><strong>1: Your Assessment ID: </strong><span id="idFont"><?php echo $id; ?></span></p>
<input type='hidden' name='id' value='<?php echo $id; ?>' />
<p><strong>2: Number of Assessments you Require:</strong> <input type="text" id="sessionNo" name="sessionNum" onkeypress="return isNumberKey(event)" maxlength="5" /></p>
<p><strong>3: Duration:</strong> <input type="text" id="durationpicker" name="durationChosen" readonly="readonly" /></p>
<p><strong>4: Date:</strong> <input type="text" id="datepicker" name="dateChosen" readonly="readonly" /></p>
<p><strong>5: Start Time:</strong> <input type="text" id="timepicker" name="timeChosen" readonly="readonly" /><span class="timepicker_button_trigger"><img src="Images/clock.gif" alt="Choose Time" /></span></p>
<p><strong>6: </strong><input class="questionBtn" type="submit" value="Prepare Questions" name="prequestion" onClick="myClickHandler(); return false;"/></p>      <!-- Prepare Questions here-->

</form>

<?php

if (isset($_POST['prequestion'])) {

if(empty($_POST['sessionNum'])) {
   echo "Please Set the Number of Assessments";
} 
elseif(empty($_POST['durationChosen'])) {
  echo "Please Select your Assessment's Duration";
}
elseif(empty($_POST['dateChosen'])) {
  echo "Please Select a Date";
}
elseif(empty($_POST['timeChosen'])) {
  echo "Please Select a Start Time";
}
else {

?>

         <script type="text/javascript">

function myClickHandler(){ 
     if(validation()){ 
                showConfirm(); 
     } 
}

<?php

}

}
?>

1:您的评估ID:


PHP是一种服务器端脚本语言,因此在提交表单之前,没有直接的方法可以对表单进行PHP验证

如果出于某种原因必须进行PHP验证,您可以做的是异步提交字段值(以不可见的方式)。您可以使用javascript调用隐藏iframe上的GET,并使用表单数据从单独的php页面返回错误(f ex calling/hidden/formcheck.php?sessionNum=XX&(…),并返回false或true)


如果您真的想这样做,那么最好使用jQuery或类似的库,这些库有大量现成的远程URL调用功能(如jQuery)

请接受这样一个事实:只有在提交表单时才会执行PHP。你可能不喜欢,但我们不能改变。因此,PHP可能不是您想要解决的作业的合适技术。谢谢大家的普遍理解。为了让自己感觉舒适,hakre实际上意味着给自己买一把椅子、一瓶啤酒(如果在你们国家在你们这个年龄消费是合法的)和一些鸡翅。@dbf:请注意,这个网站在美国的最低年龄默认为13岁。所以啤酒可能不合适。然而,对于牙买加用户来说,还有其他选择。@hakre实际上有人住在美国?不是所有人,有些人住在伦敦。没关系,我会显示一个acho,如果没有启用javascript,那么它会在页面顶部显示一个警告,我只会执行javascript验证。如果您担心JS验证无法工作,因为用户没有启用JS,那么您可以始终将PHP验证移到您发布到的页面顶部,并添加一个“返回错误消息”功能。因此,在表单页面上,您将拥有,在您的贴子页面上,您将拥有if(isset($_post['prequestion'])(…),如果这些功能失败,您将拥有:header(“Location:)