安全なページとして提供され、json_encode() が呼び出されると、私の php スクリプトは失敗しますが、それ以外の場合はそうではありません。このコードは、XHR から呼び出されたより大きなスクリプトから抽出されています。PHP バージョン 5.2.0、Apache/1.3.34 (Unix)。
問題の原因は、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 が結果をエコーします。2 番目のケースでは、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);
?>