在if语句中定义值不起作用

时间:2012-08-23 07:45:08

标签: php

我正在编写一个简单的方法来编辑Paypal支付系统的状态,以便我可以在需要时在测试模式下切换它而无需进入代码。 “MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER”被定义为“实时”,但由于某种原因,它会继续抛出沙盒网址。

echo MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER ;

if (MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER == "Live") {
    $form_action_url = 'https://www.paypal.com/cgi-bin/webscr';
  } else {
    $form_action_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
  }
echo ' '.$form_action_url;
die();

以上输出:

  

直播https://www.sandbox.paypal.com/cgi-bin/webscr'

如果我用'live'替换MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER它会正确返回值,我也尝试将DEFINE移动到变量,然后转到IF语句,但它仍然不起作用。

我正在使用OsCommerce通过管理系统来定义它。

var_dump还显示:

  

string(20)“Live”

而不是它应该:

  

string(4)“Live”

MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER的选项 是“Live”和“Sandbox”。

3 个答案:

答案 0 :(得分:0)

以下代码按预期工作:

<?php
    define("MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER", "LIVE");
    echo MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER ;

    if (MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER == "Live") 
    {
        $form_action_url = 'https://www.paypal.com/cgi-bin/webscr';
    } 
    else 
    {
        $form_action_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
    }
    echo ' '.$form_action_url;
    die();
?>

// Outpu: Live https://www.paypal.com/cgi-bin/webscr

你究竟如何定义你的常数?

更改以下内容时:

define("MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER", "LIVE");

输出

LIVE https://www.sandbox.paypal.com/cgi-bin/webscr

编辑:根据您的评论,代码完全按照应有的方式运行。您将常量定义为LIVE,然后在针对Live的if语句中进行检查。比较它们时,它们相等,因此if语句的计算结果为false,并执行第二个条件。

答案 1 :(得分:0)

<?php
if(!defined('MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER')) {
  define('MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER', 'Live');
}

if(MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER == 'Live') {
 echo('live');
} else {
 echo('sandboxing');
}
?>

显示直播; - ))

按预期工作 - 无法重现您描述的结果。

答案 2 :(得分:0)

删除并添加MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER几次后没有任何更改我完全从网站上删除了paypal脚本并再次安装它。现在它有效!