表格仍然返回真值,即使有空()

时间:2014-05-22 04:37:59

标签: php html

我的表格有问题。 当我点击生成按钮时,我尝试重定向到错误页面,但它仍然会重定向到正确的页面,即使它是空的。

if(isset($_POST['Generate'])) {
    if(!empty($_POST['aid'])) {
        $gen_link = "www.correctlink.com";
        $_SESSION['active'] = $aid;
        header("Location: http://$gen_link") ;
    } else {
        header("Location : http://error404.com");
    }
}   

即使我点击生成按钮,它仍然会重定向到www.correctlink.com 我希望用户在表单中键入内容

表格代码:

<input type="text" name="aid" id="aid" value="Enter Your Active Here" onfocus=" if (this.value == 'Enter Your Active Here') { this.value = ''; }" onblur="if (this.value == '') { this.value='Enter Your Active Here';}  "/><br /><br />

   <input type="submit" class="button" value="Generate" name="Generate" id="Generate"/>

4 个答案:

答案 0 :(得分:1)

如果您将value属性设置为表单中的某个内容,则会将其作为值提交,因此它不会为空。而不是检查它是否为空,检查它是否等于Enter Your Active Here。 如果您需要占位符文字,则可以使用属性placeholder代替value

答案 1 :(得分:1)

这里的问题是你设置了一个默认值&#34;在这里输入你的活动&#34;在你的文本框中。如果用户只是在没有尝试在文本框中输入任何内容的情况下提交表单,则$_POST['aid']的值变为&#34;在此输入您的活动&#34;。

那你做什么?很简单,而不是检查empty,检查

if($_POST['aid'] != "Enter Your Active Here" && ! empty(trim($_POST['aid'])))

另一个解决方案是使用placeholder,但由于这是HTML5功能,因此跨浏览器的兼容性有限。

编辑:添加第二个条件是为了确保代码能够在客户端计算机上禁用javascript并且用户通过清空文本框恶意尝试提交表单的情况下运行

答案 2 :(得分:0)

$_POST['aid']不为空,因为您将value设为Enter Your Active Here

使用类似的东西

<input type="text" name="aid" id="aid" placeholder="Enter Your Active Here" .......

OR

<label>Enter Your Active Here</label><input type="text" name="aid" id="aid" .....

答案 3 :(得分:0)

替换

 if(!empty($_POST['aid']))

通过

if($_POST['aid']!="" && $_POST['aid']!="Enter Your Active Here")

感谢。