下面是我需要工作的PHP代码片段,我需要确保3个项目尚未设置,而不是===''
我有责任检查是否未设置但是当我尝试查看值是否为空时(我可能现在甚至没有想清楚,我可能不需要做所有这些)但我需要确保重定向,login_name和密码都没有设置为值,如果它们设置为我需要确保该值不为空的值。
有人可以提供帮助,当我添加检查以查看值是否为空时,我的语法错误,也不确定我是否应该在1 if / else阻止这样的5-6检查,请帮助
我需要检查以下内容:
- $ _GET ['redirect']未设置
- $ _REQUEST ['login_name']未设置
- $ _REQUEST ['login_name']不是!= to''
- $ _REQUEST ['password']未设置
- $ _REQUEST ['password']不是!= to''
if (!isset($_GET['redirect']) && (!isset($_REQUEST['login_name'])) && (!isset($_REQUEST['password']))){
//do stuff
}
更新
抱歉,目前还不是很清楚,我对此感到有点困惑。根据Hobodaves的回答,我能够修改它并让它按照我需要的方式工作。下面是我需要它的代码,它的效果非常好......所以如果可以改进那么这就是我需要的功能,我只是测试了这个。if (!isset($_GET['redirect'])
&& empty($_GET['redirect'])
&& isset($_REQUEST['login_name'])
&& !empty($_REQUEST['login_name'])
&& isset($_REQUEST['password'])
&& !empty($_REQUEST['password'])
) {
echo 'load user';
}
如果已加载,则会运行登录过程
login.php?login_name=test&password=testing
如果加载了它,那么它将不会运行登录过程
login.php?login_name=test&password=
答案 0 :(得分:4)
if (!isset($_GET['redirect'])
&& !isset($_REQUEST['login_name'])
&& empty($_REQUEST['login_name'])
&& !isset($_REQUEST['password'])
&& empty($_REQUEST['password'])
) {
// do stuff
}
这完全你所描述的,(不!=空= =空)。我认为你应该编辑你的问题来解释你要做什么,所以我们可以提出更好的选择。
您更新的问题可以简化为:
if (empty($_GET['redirect'])
&& !empty($_REQUEST['login_name'])
&& !empty($_REQUEST['password'])
} {
// load user
}
答案 1 :(得分:2)
更易于维护的解决方案是将每个密钥存储在一个数组中,然后对其进行预测并检查是否为isset或为空。你现在的解决方案并不是很干。
实施看起来像是:
<?php
$keys = array('login_name', 'password');
foreach($keys as $key)
{
if(!isset($_REQUEST[$key]) || empty($_REQUEST['key'])
// Show error message, kill script etc.
}
// Dot stuff
?>
答案 2 :(得分:1)
如果未设置全局变量,则与空白相同。因此:
!is_set(($_REQUEST['username']))
与empty($_REQUEST['username'])
因此,根据您的更新,您可以简化为:
if (empty($_GET['redirect'])
&& !empty($_REQUEST['login_name'])
&& !empty($_REQUEST['password'])
) {
echo 'load user';
}
抱歉,我之前给出的答案不会给你你想要的答案。原因如下:
如果使用!_REQUEST['password']
,如果密码为空或未设置,则返回true。 但是如果你使用if($_REQUEST['password'])
,它会在设置全局变量的任何时候传递条件,即使它是空的。
因此我建议:
$no_redirect = (!$_GET['redirect']);
$login_name = (!$_REQUEST['login_name']) ? false : true;
$password = (!$_REQUEST['login_name']) ? false : true;
if($no_redirect && $login_name && $password) {
echo 'load user';
}
对于以前不好的信息感到抱歉。
答案 3 :(得分:-2)
你可以创建一个数组
$array = array(
$_GET['redirect'],
$_GET['redirect'],
$_REQUEST['login_name'],
$_REQUEST['login_name'],
$_REQUEST['password'],
$_REQUEST['password']
);
foreach($array as $stuf)
{
if(!empty($stuff) && $tuff !=0)
//do something
}