如何从我的URL解决这个PHP问题与GET []

时间:2015-09-04 13:54:32

标签: php ssl

if (isset($_GET['debug'])) {
    if(boolval($_GET['debug']) ? true : false)
    {
        echo "Using Distribution Certificate";
        stream_context_set_option($ctx, 'ssl', 'local_cert','cert.pem');
        $fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
    } else {
        echo "Using Development Certificate";
        stream_context_set_option($ctx, 'ssl', 'local_cert','certdevelopment.pem');
        $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
    }
}else{
    // Fallback behaviour goes here
    echo "Fallback Call To Use Distribution Certificate";
    stream_context_set_option($ctx, 'ssl', 'local_cert','cert.pem');
    $fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
}

当我的网址为https://localhost/index.php?debug=true

我想使用分发证书。如果它是假的,那么使用开发证书。

如果还有其他内容,我们会使用分发证书。

不幸的是,当我的PHP脚本执行时,它总是使用"分发证书"。即使我把它设置为假。我认为" boolval"方法不能一直工作。

1 个答案:

答案 0 :(得分:2)

而不是

if(boolval($_GET['debug']) ? true : false)

您应该使用

比较值
if($_GET['debug'] == 'true')

这是因为当转换为布尔值时,“true”和“false”都会计算为true。有关更多示例,请查看test cases in the manual