Php If语句运行不正常

Php If语句运行不正常,php,Php,这是我的PHP代码,本质上我检查用户的国家,如果它符合允许的国家,我让附属代码运行。因为某种原因,它没有运行 <?php $output = shell_exec('geoip-lookup '.$_SERVER['REMOTE_ADDR']); if($_SESSION['check']!= 1 && ($output == 'US' || $output== 'AU' || $output== 'GB' || $output== 'CA')) { $submission

这是我的PHP代码,本质上我检查用户的国家,如果它符合允许的国家,我让附属代码运行。因为某种原因,它没有运行

<?php
$output = shell_exec('geoip-lookup '.$_SERVER['REMOTE_ADDR']);
if($_SESSION['check']!= 1 && ($output == 'US' || $output== 'AU' || $output== 'GB' || $output== 'CA'))
{
$submission = $_POST['submission_id'];
$_SESSION['check']=1;
echo '<div class="shareasale"><img src="https://shareasale.com/sale.cfm?amount=0.00&tracking=';
echo $submission;
echo '&transtype=lead&perlead=25.00&merchantID=###" width="1" height="1"></div>';
}
?> 

我认为OR位有问题,因为当我添加一个else if来检查变量时,我得到$output作为US,而$U会话['check']作为空白。这意味着if语句应该正常运行


有人知道这为什么不起作用吗?

您没有
会话\u start()
调用,因此您的$\u会话数组不会被填充,因此其中没有要比较的
检查值


另外,您确定您的shell_exec()调用实际上正在工作吗?geoip查找可能不在运行该程序所执行的shell PHP的路径中。输出还可能包含换行符、回车符等,而if()调用中的精确字符串匹配要求并未考虑这些内容
$output
实际上可能是“US\n”而不仅仅是“US”。

到底是什么不起作用?您是否尝试通过在代码中的不同位置打印语句和状态来调试它?当它“未运行”时,
$\u会话['check']
$output
var\u dump
s是什么?在
if
语句的前面,有一行代码执行
var\u转储($\u SESSION['check',$output)是否尝试在$output上使用trim?在浏览器中看到的内容之前或之后可能有一行新行或空格。我将代码放在前面,$\u SESSION['check']为空,$output为US,for在else if显示相同内容之后。看起来好像没有触发if语句,所以问题很可能出现在第一行if中。哦,是的,我在文件的顶部,所以我忘了复制它…它在那里,我把它作为else if来运行,以检查变量,结果显示为我们,所以这应该是很好的well@Andrew,您如何验证没有
“\n”
?如果没有\n或其他隐藏字符,var_转储($output)应报告“字符串(2)”。对于var转储,我得到了空字符串(3)“US”