PHP - Isset不起作用,逻辑是正确的


PHP - Isset not working and logic is right

好吧,这是一个非常愚蠢的问题,但肯定有问题。

我有一个 php 脚本需要检查 2 个变量($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); }

它仍然会运行代码并死去,并显示消息 what.

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

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

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

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

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

!empty($token)

可能效果更好

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