0

私はこのようなPHPスクリプトを持っています:

<?php
$confirmationCode = trim($_GET['confcode']);
$_SERVER['REMOTE_ADDR'] = 'xxx.xxx.xxx.xxx';
$emailLogId = 1;
if ($_SERVER['REMOTE_ADDR']=='xxx.xxx.xxx.xxx') {
//   print '<pre>' .'xxxxx' . $emailLogId . '###';  //exit ;    
}
if( is_numeric($emailLogId)) {
if ($_SERVER['REMOTE_ADDR']=='xxx.xxx.xxx.xxx') {
// print '<pre>yyy' . $_GET['emaillog_id'] . 'yyyxxxxxx ' . $emailLogId;  print_r             ($row) ; exit ;   
}
//$osDB->query('UPDATE ! SET clicktime=? WHERE id=?', array('email_logs', time(),   $emailLogId));
} else {
if ($_SERVER['REMOTE_ADDR']=='xxx.xxx.xxx.xxx') {
//   print '<pre>zzz' . $_GET['emaillog_id'] . 'yyyxxxxxx ' . $emailLogId;  print_r ($row) ; exit ;     
}
}
?>

私のサーバーで実行されています。実際、ブラウザにこのスクリプトのソース コード (下に貼り付けたもの) が表示され、この問題のスナップ ショットが送られてくると不満を言う人もいます。

 ' .'xxxxx' . $emailLogId . '###';  //exit ;    
}
 if( is_numeric($emailLogId)) {
 if ($_SERVER['REMOTE_ADDR']=='xxx.xxx.xxx.xxx') {
// print '<pre>yyy' . $_GET['emaillog_id'] . 'yyyxxxxxx ' . $emailLogId;  print_r ($row) ; exit ;   
}
//$osDB->query('UPDATE ! SET clicktime=? WHERE id=?', array('email_logs', time(), $emailLogId));
 } else {
if ($_SERVER['REMOTE_ADDR']=='xxx.xxx.xxx.xxx') {
 //  print '<pre>zzz' . $_GET['emaillog_id'] . 'yyyxxxxxx ' . $emailLogId;  print_r ($row) ; exit ;     
}
 }
?>

実際、私はこの問題を再現できないので、本当に混乱していますが、3-4 人が同じことについて不平を言っています。

何が問題なのか分かりますか?

4

2 に答える 2

2

はい、私にも同じようなことが起こりました。

2つのこと:

Apache構成。

PHPエンジンがオンになっていることを確認してください。次に、Apache構成ファイルにアクセスできない場合は、これを.htaccessに追加します。

php_flag engine on

CDN。

クラウド配布ネットワークを使用している場合は、既存のキャッシュを削除して新しいキャッシュを再ロードするように依頼する必要があります。

ブラウザは、Apacheの設定がうまくいかない場合にのみPHPソースコードを表示します。

お役に立てば幸いです。

編集:

Sabinのコメントを読んだ後、コードをもう一度見てみました。

問題は、彼が値を$_SERVER['REMOTE_ADDR'](3行目)に割り当てていることです。

あるべき姿は次のとおりです。

<?php
$confirmationCode = trim($_GET['confcode']);
$ip = 'xxx.xxx.xxx.xxx';
$emailLogId = 1;

//Whatever conditions.
if ($_SERVER['REMOTE_ADDR'] == 'xxx.xxx.xxx.xxx') {
//   print '<pre>' .'xxxxx' . $emailLogId . '###';  exit ;    
}
if( is_numeric($emailLogId)) {
if ($_SERVER['REMOTE_ADDR'] == 'xxx.xxx.xxx.xxx') {
// print '<pre>yyy' . $_GET['emaillog_id'] . 'yyyxxxxxx ' . $emailLogId;  print_r             ($row) ; exit ;   
}
//$osDB->query('UPDATE ! SET clicktime=? WHERE id=?', array('email_logs', time(),   $emailLogId));
} else {
if ($_SERVER['REMOTE_ADDR']=='xxx.xxx.xxx.xxx') {
//   print '<pre>zzz' . $_GET['emaillog_id'] . 'yyyxxxxxx ' . $emailLogId;  print_r ($row) ; exit ;     
}
}
?>

ただし、これが原因でソースコードがエコーされることはありません。最後の一重引用符が欠落していないかどうかを確認できるように、完全なファイルを入力してください。

于 2012-08-27T06:35:58.080 に答える
1

PHPがまったく機能していないようです。最初の部分が表示されない唯一の理由は、ブラウザーがそれを HTML タグであるかのように解析しているためです。

そして phpinfo() を一度印刷してみてください。

詳細については、以下のリンクを確認してください。

ブラウザに表示される PHP コード

于 2012-08-27T06:53:40.620 に答える