PHP - Isset不工作,逻辑是对的

时间:2016-01-18 20:25:57

标签: php isset

好的,这是一个非常愚蠢的,但肯定是错的。

我有一个需要检查2个变量的PHP脚本($ token和$ pid)

if(isset($token) && isset($pid)){
$ppurl = "https://api-3t.paypal.com/nvp";
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_HEADER, false);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cURL, CURLOPT_TIMEOUT, 5);
$GetExpressCheckoutDetails = $ppurl."?USER=".$apiuser."&PWD=".$apipwd."&SIGNATURE=".$apisig."&METHOD=GetExpressCheckoutDetails&VERSION=78&TOKEN=".$token;
curl_setopt($cURL, CURLOPT_URL, $GetExpressCheckoutDetails);
$info = parsePPResponse(curl_exec($cURL));
die (what);
}

但是,当我在没有任何变量的情况下直接访问脚本时,它仍会运行该代码。

同样,如果我之前添加:

if(!isset($token)){ die(novar); }

它仍然会运行代码并随着消息而消亡。

这没有任何意义,任何人都知道为什么会发生这种情况?

3 个答案:

答案 0 :(得分:4)

根据您的描述,我最好的猜测是$ pid实际设置并且只是空的。

if(isset($token) && isset($pid)){运行以下代码之前:

print '<pre>';
print_r(get_defined_vars());
print '</pre>';

然后查看页面输出中是否存在$ pid或$ token。如果是,您可能需要更改条件以使用empty()函数而不是isset()。

答案 1 :(得分:1)

!empty($token)

可能效果更好

答案 2 :(得分:0)

尝试添加var_dump($token)以确保该变量确实未设置,并且您实际上正在编辑您认为正在编辑的相同文件(发生在我身上)