这是我的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来检查变量时,我将$ output输出为US,$ _SESSION ['check']为空。这意味着if语句应该正常运行。
有谁知道为什么这不起作用?
答案 0 :(得分:6)
您没有session_start()
来电,因此您的$ _SESSION数组不会被填充,因此没有check
值可供比较。
同样,你确定你的shell_exec()调用实际上有效吗? geoip-lookup可能不在PHP运行该程序的任何shell的路径中。输出还可能包含换行符,回车符等...,if()调用中的确切字符串匹配要求未考虑在内。 $output
实际上可能是“US \ n”而不仅仅是“US”。