2012-12-20 117 views
1
失敗

我的PHP腳本在作爲安全頁面和json_encode()被調用時失敗,但不是以其他方式調用。該代碼是從一個從XHR調用的較大腳本中提取的。 PHP版本5.2.0,Apache/1.3.34(Unix)。PHP json_encode從https

問題來源:PHP,我的ISP還是我?

演示,調用此腳本4路:

https://www.camdenac.com/test_json_encode.php?encode=0 =>作品,安全協議,不會調用json_encode()。
https://www.camdenac.com/test_json_encode.php?encode=1 =>失敗,安全協議,調用json_encode()。

在第一種情況下,您將看到一些html,然後php回顯結果。 在第二種情況下,您只會看到html;沒有PHP輸出。

/* 
Try these 2 links also from non-secure protocol. 
http://www.camdenac.com/test_json_encode.php?encode=0 => works. 
http://www.camdenac.com/test_json_encode.php?encode=1 => works. 
*/ 

<?php 
$encode= 0; 
if(isset($_GET['encode'])){ 
    $encode= substr(trim($_GET['encode']),0,1); 
} 

$dummy= array(1,2,3,4,5); 
$json="We did not call json_encode."; 

if($encode){ 
    $json= json_encode($dummy); 
} 

echo '<p>IT WORKS!</p>'; 
echo '<p>Host protocol is: '.$_SERVER['HTTP_HOST'].'</p>'; 
echo '<p>Query string is: '.$_SERVER['argv'][0].'</p>'; 
echo '<p>HTTPS is: '.$_SERVER['HTTPS'].'</p>'; 
echo '<p>json encoding is: '.$json.'</p>'; 
echo '<p>Array dump follows:</p>'; 

var_dump($dummy); 
?> 
+7

定義「失敗」。怎麼了?你有什麼錯誤嗎?你確定兩個腳本都一樣嗎?你確定PHP版本是一樣的嗎? –

+1

等待,最後2次測試的「作品,失敗」是否顛倒?你'var_dump($ _ GET)'?你有任何重寫規則可能會破壞https請求的查詢字符串嗎? –

+0

json_encode看起來沒有任何關係。 $ _GET的內容如何根據​​使用的請求URL進行更改?也許把你的$編碼轉換爲(bool)。 – ficuscr

回答

1

我想你的PHP版本是舊的和不包含json_encode功能。如果你想使用它,你可能需要更新你的php版本。