2015-09-04 141 views
-2
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我怎樣才能解決GET []這個PHP問題從我的網址

我想使用的發佈證書。如果它是假的,則使用開發證書。

如果有其他東西,那麼我們使用分配證書。

不幸的是,當我的PHP腳本執行時,它總是使用「分發證書」。即使我把它設置爲false。我認爲「boolval」方法並非一直在運行。

+1

'boolval'不會做你認爲它做的事。它*將傳遞給它的值作爲布爾值轉換。在PHP中,字符串「true」和「false」都轉換爲布爾值true。請參閱:http://php.net/manual/en/language.types.boolean.php#language.types.boolean.casting –

+0

因爲字符串「true」將始終爲真。這是一個字符串,因此將被評估爲true(空字符串爲false)。 – Andrew

+1

P.S.你可以做'if(boolval($ _ GET ['debug']))',這裏沒有理由使用'?:'。 –

回答

2

而不是

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

你應該使用

if($_GET['debug'] == 'true') 

這是轉換爲布爾時,因爲這兩個「真」與「假」評估爲真比較值。有關更多示例,請查看test cases in the manual

相關問題