PHP如果具体值则继续

时间:2015-02-04 19:44:29

标签: php html forms email

我已经创建了一个表单,如果缺少值,则重定向到错误页面。

<?php 
if (empty($_POST['submit']) && empty($_POST['email']))
{
  header('Location: empty.php');
  exit; 
} 
?>

现在,让我们说我有一个密码,我需要我的用户输入以继续,我该怎么做,如果它的错,那么我如何将它们重定向到empty.php? 我的问题是,我不知道如何制作一个&#34; PHP&#34;如果不是特定值,则重定向的标记。

1 个答案:

答案 0 :(得分:1)

解决方案(请阅读整篇文章,因为有安全漏洞......,甚至代码中有黑洞;)):

<?php
if (isset($_POST['password']) && $_POST['password'] == 'yourpasshere')) {
    // Password OK, continue
}
else {
    // Password not ok, redirect
    header('Location: empty.php');
    exit; 
}
?>

关于解决方案的几句话:如果未设置$_POST['password'],则第二个条件甚至不会被检查,而是转到其他条件。如果设置了$_POST['password'],则第二个条件检查密码是否符合您的要求(请阅读下面的安全警告)。当且仅当它没有问题时,if传递。


然而,重要消息很少:

1)绝不在任何地方以纯文本存储密码!阅读:http://php.net/manual/en/function.password-hash.php。我的例子是以纯文本形式存储密码,但它只是勾画出可能的解决方案。 您文件的每次可能泄漏都可以访问您的网站。

在这种情况下,我的答案勾勒出解决方案的逻辑部分(在其中存在问题),但需要在安全感方面加以纠正。

2)始终验证表单数据(最小解决方案是使用http://php.net/manual/en/function.htmlspecialchars.php,但这并不完美,使用preg_match,甚至preg_replace用于特殊字符来删除它们要好得多

2 *)您可以使用以下网址验证电子邮件:var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));(doc:http://php.net/manual/en/function.filter-var.php)。这是一个很棒的功能,它将尝试验证输入的电子邮件是否正常。

3)在你的代码中,只有当POST值的两个为空时,它才会重定向到空白页面。如果您想要重定向,如果其中任何一个为空,请使用逻辑OR(||)而不是AND(&&)。