Php 提交时验证输入(即“未禁用”)

Php 提交时验证输入(即“未禁用”),php,validation,Php,Validation,我有一个正在提交的联系人表单,在发送电子邮件之前,我已经设置了PHP验证,但是,我有两个字段,它们是动态的禁用或启用的,基于单击链接可以访问联系人表单 我需要知道如何确定它们是否被禁用,然后仅在它们未被禁用时验证它们 这是我表格的一部分: <label for="name">Name</label><br /> <input type="text" name="name" id="name" /> <label for="email">

我有一个正在提交的联系人表单,在发送电子邮件之前,我已经设置了PHP验证,但是,我有两个字段,它们是动态的禁用或启用的,基于单击链接可以访问联系人表单

我需要知道如何确定它们是否被禁用,然后仅在它们未被禁用时验证它们

这是我表格的一部分:

<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>
我仍在学习PHP,因此提前感谢您提供的任何帮助。:)

//编辑


appt
来自URL查询字符串。即使查询字符串不存在&输入被禁用,我也在使用jQuery在单击页面上的链接时添加或删除
禁用的

我可能会弄错,但如果输入被禁用,索引不应该不存在吗?意思是
if!isset($\u POST[])
不验证


哦,顺便说一句!isset($\u GET[“appt”])==TRUE
是冗余的。只要使用
!isset($\u GET[“appt”])

在表单页面上,将$\u GET[“appt”]放在一个隐藏字段中。因为它是用来确定是否应该禁用字段的,所以将它传递到PHP验证页面可以让您确定是否禁用表单页面上的字段

在表单页面上: “/>

在mail.php页面上:

$disabled = trim($_POST["disabled_var"]);
如果为true,则元素被禁用

另外,不,你不能仅仅看到它们是否存在于文章中,因为它们很可能是空的(但已启用)。

你可以使用
isset($\u post['date'])
检查在提交过程中是否设置了值,因为如果禁用的字段不会以正确的形式提交

编辑


您可能会在这里遇到问题,因为很容易在客户端篡改表单,并在此处传递
日期
时间
。因此,您在此处可以做的最好的事情是设置一个隐藏字段,该字段可以设置为
日期
时间
,同时设置“动态“字段已禁用。因此,在服务器端,只需读取隐藏字段并相应地读取所需的值

您可以为每个字段添加一个隐藏字段,并将其设置为可以提取的值。可能不是最优雅的解决方案,但它仍然有效

<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'; } ?>" />

我不确定我是否理解第一部分,你能详细说明一下吗?不过,感谢最后一位。如果表单中禁用了字段,则索引不是
$\u POST
数组的一部分。因此,您正在检查是否在数组中设置了索引。就这些:)所以我可以说,
$date=isset(trim($\u POST[“date”])
然后如果
$date
为空,它将跳过我的验证代码?Re:您的编辑。我不知道你的情况,但我有一个代理服务器。在发送之前,我可以完全重写所有的post值。我们不能在开发过程中考虑到这一点。我们需要能够期望用户不会破坏互联网。首先,你能告诉我你是如何知道要禁用哪个字段的,因为你对这两个字段都使用了
(!isset($\u GET[“appt”])
。@Balanivash从技术上讲,我也可以篡改隐藏字段,那么它们有什么帮助呢?@cwallenpols:true,但这只是我们可以采取的一个小预防措施。如果可能的话,我不想在表单中添加任何隐藏字段。不过,谢谢你最后的提示!始终学习:D
<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'; } ?>" />