如果用户来自另一个地址而不是bonaca,或者如果他输入的是1405或999以外的其他通行证,我需要执行重定向。
以下代码无法正常运行。
$referrer = $_SERVER['HTTP_REFERER'];
if (!(preg_match("/bonaca.net46.net/",$referrer))
or
!($_POST['pass'] == 1405
or
!$_POST['pass'] == 999)
{
header('Location: index.php');
};
答案 0 :(得分:1)
如果您只想检查另一个字符串中是否包含一个字符串,请不要使用preg_match()。使用strpos()或strstr()代替它们会更快。
根据您的评论:如果推荐人不包含bonaca.net46.net
或密码不是1405或999
$referrer = $_SERVER['HTTP_REFERER'];
if (strpos($referrer, "bonaca.net46.net") === FALSE
|| !($_POST['pass'] == 1405 || $_POST['pass'] == 999)
)
{
header('Location: index.php');
};
答案 1 :(得分:0)
我会使用一些临时变量来减少条件:
$userFromBonaca = isset($_SERVER['HTTP_REFERER']) && strcasecmp(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) , 'bonaca.net46.net') == 0;
$validPass = isset($_POST['pass']) && in_array($_POST['pass'], [1405, 999]);
if (!($userFromBonaca || $validPass)) {
header('Location: index.php');
}