表单的Php验证
目标:尝试确保所有字段都不为空,包括单选按钮集和下拉列表。有人吗 HTML **PHP add_p_c.PHP**表单的Php验证,php,html,Php,Html,目标:尝试确保所有字段都不为空,包括单选按钮集和下拉列表。有人吗 HTML **PHP add_p_c.PHP** <?php if (isset($_POST['submit'])) { if (empty($selected_radio)){ echo "You need to select a prof or course";} else(return;) $selected_radio = $_POST['addType']; if (empty($course_prof
<?php
if (isset($_POST['submit'])) {
if (empty($selected_radio)){ echo "You need to select a prof or course";} else(return;)
$selected_radio = $_POST['addType'];
if (empty($course_prof_name)){ echo "You need to enter a name";} else(return;)
$course_prof_name = $_POST['name'];
if (empty($select_dep)){ echo "You select a dept";} else(return;)
$select_dep = $_POST['deptName'];
$email = $_POST['email'] = "myemail@email.com";
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
return;
}
else {
echo "<span color='red;'>Invalid email address.</span>";
}
}
?>
您可以使用if-empty$variable{,但请记住,任何计算结果为false的内容,包括数字0,都将被捕获
PHP文档:只需逐字检查即可:
如果为了安全起见$\u POST['foo']=={,您应该添加某些东西来提高安全性,因为如果您对数据库执行任何查询,都可能会得到SQL注入。请尝试以下操作:
<?php
if(isset($_POST['submit']){
$_POST['name']= trim(strip_tags(addslashes($string)));
$_POST['deptName']= trim(strip_tags(addslashes($string)));
$_POST['email']= trim(strip_tags(addslashes($string)));
/* I can't remember if it should be '' or NULL, but some simple testing will let you know which it is*/
if($_POST['addType'] != ''){
if($_POST['name'] != ''){
if($_POST['deptName'] != ''){
if($_POST['email']) != ''){
$selected_radio = $_POST['addType'];
$course_prof_name = $_POST['name'];
$select_dep = $_POST['deptName'];
$email = $_POST['email'] = "myemail@email.com";
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
return;
}
else {
echo "<span color='red;'>Invalid email address.</span>";
}
}
else{
// email wasn't set
}
}
else{
//deptName wasn't set
}
}
else{
//name wasn't set
}
}
else{
// add type wasn't set
}
}
?>
如果你要有一个特别大的表单,你可能想看看使用数组和for循环。当我构建了30个字段数组时,嵌套一系列If语句会变得非常笨拙,非常快 我建议编写一个快速函数,如
function validatePost($checkValues)
{
foreach($checkValues as $value)
{
$checked = 0;
foreach($_POST as $key => $value)
{
if($key == $checkValues)
{
$checked = 1;
if(empty($value))
{
return false;
}
}
}
if($checked == 0)
{
return false;
}
}
}
记住,这不包括任何正则表达式检查,但是你可以在中间的前缀循环中添加它。
$checkValues = array('addType', 'deptName', 'email', 'name')
$return = validatePost($checkValues);
if($return == false)
{
echo "<span color='red;'>Please fill out entire form.</span>"
}
else
{
return;
}
显然,您可以添加功能以使其更详细,但这是一个非常基本的可扩展验证。您能看到我更新的代码吗。这是正确的实现吗。空的下拉框和单选按钮可以工作吗?代码看起来不像4或5个if语句。我可以像if$\u PO一样将这些全部放在一个调用中吗ST['addType']==| |如果$U POST['name']=={{…等等,当然,如果你愿意的话。我个人认为多行看起来更好,特别是如果它被包装在一个布尔函数中,但是对每一行来说都是它们自己的。你刚刚写的东西在评估时应该没有任何问题。这不是必需的,但是如果提问者想要回答一个没有设置的字段,这将很容易让他这样做。如果e不希望单独处理缺少的字段,他可以在第二个if语句中使用OR | |运算符。
$checkValues = array('addType', 'deptName', 'email', 'name')
$return = validatePost($checkValues);
if($return == false)
{
echo "<span color='red;'>Please fill out entire form.</span>"
}
else
{
return;
}