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"方法不能一直工作。
答案 0 :(得分:2)
而不是
if(boolval($_GET['debug']) ? true : false)
您应该使用
比较值if($_GET['debug'] == 'true')
这是因为当转换为布尔值时,“true”和“false”都会计算为true。有关更多示例,请查看test cases in the manual。