我有一个提交的联系表单,我在发送电子邮件之前已经设置了PHP验证,但是,根据点击的链接,我有2个动态禁用或启用的字段到达联系表格。
我需要知道如何确定它们是否被禁用,然后仅在它们未被禁用时验证它们。
这是我表格的一部分:
<label for="name">Name</label><br />
<input type="text" name="name" id="name" />
<label for="email">Email</label><br />
<input type="text" name="email" id="email" />
<label for="number">Phone Number</label><br />
<input type="text" name="number" id="number" />
<div id="date-time">
<label for="date">Date</label><br />
<input type="text" name="date" id="date" <?php
if (!isset($_GET["appt"])==true) echo('disabled="disabled"'); ?> />
<label for="time">Time</label><br />
<input type="text" name="time" id="time" <?php
if (!isset($_GET["appt"])==true) echo('disabled="disabled"'); ?> />
</div>
以下是我的mail.php
文件的一部分(忽略cookie
个功能):
$name = trim($_POST["name"]);
$email = trim($_POST["email"]);
$phone = trim($_POST["phone"]);
$date = trim($_POST["date"]);
$time = trim($_POST["time"]);
//Check to make sure that the name field is not empty
if($name == NULL) {
$hasError = true;
$emailSent = false;
cookie("hasError", "true");
cookie("nameError", "true");
} else {
$name = $name;
}
//Check to make sure sure that a valid email address is submitted
if($email == NULL) {
$hasError = true;
$emailSent = false;
cookie("hasError", "true");
cookie("emailError", "true");
} else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", $email)) {
$hasError = true;
$emailSent = false;
cookie("hasError", "true");
cookie("emailError", "true");
} else {
$email = $email;
}
//Check to make sure that the phone field is not empty
if($phone == '' || $phone < 10) {
$hasError = true;
$emailSent = false;
cookie("hasError", "true");
cookie("phoneError", "true");
} else {
$phone = $phone;
}
//Check to make sure that the date field is not empty
if($date == '') {
$hasError = true;
$emailSent = false;
cookie("hasError", "true");
cookie("dateError", "true");
} else {
$date = $date;
}
//Check to make sure that the time field is not empty
if($time == '') {
$hasError = true;
$emailSent = false;
cookie("hasError", "true");
cookie("timeError", "true");
} else {
$time = $time;
}
我还在学习PHP,所以提前感谢您提供的任何帮助。 :)
//修改
appt
来自URL查询字符串。即使查询字符串不存在&amp;输入被禁用,我在点击页面上的链接时使用jQuery在输入中添加或删除disabled
。
答案 0 :(得分:1)
如果在表单中未提交禁用的字段,则可以使用isset($_POST['date'])
检查是否在提交期间设置了值cos。
修改强>
您可能会遇到问题,因为在客户端篡改表单非常容易,并在此处传递date
和time
。因此,您可以在此处执行的最佳操作是使用隐藏字段,您可以使用date
或time
设置隐藏字段,同时禁用“动态”字段。因此,在服务器端,只需读取隐藏字段并相应地读取所需的值。
答案 1 :(得分:0)
我可能会弄错,但如果输入被禁用,那么索引根本不应该存在吗?含义if !isset($_POST[<index>])
不会验证。
哦,BTW !isset($_GET["appt"])==TRUE
是多余的。只需使用!isset($_GET["appt"])
答案 2 :(得分:0)
在表单页面上,将$ _GET [“appt”]放在隐藏字段中。由于您使用它来确定是否应禁用这些字段,因此将其传递给PHP验证页面可以让您确定是否禁用了表单页面上的字段。
在表单页面上: “/&gt;
在mail.php页面上:
$disabled = trim($_POST["disabled_var"]);
如果为true,则禁用元素。
另外,不,你不能只看到它们是否存在于帖子中,因为它们可能非常空(但已启用)。
答案 3 :(得分:0)
您可以为每个字段添加隐藏字段,并将它们设置为您可以提取的值。可能不是最优雅的解决方案,但它仍然有效。
<input type="hidden" name="datedisabled" id="datedisabled" value="<?php
if (!isset($_GET["appt"])) { echo 'true'; } else { echo 'false'; } ?>" />
<input type="hidden" name="timedisabled" id="timedisabled" value="<?php
if (!isset($_GET["appt"])) { echo 'true'; } else { echo 'false'; } ?>" />
然后,您可以查看PHP。
顺便说一下,像if ($a == true)
这样的显式检查是多余的。只需if ($a)
。