我有一个像这样的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人抱怨同样的事情。
你知道这是什么问题吗?
答案 0 :(得分:2)
是的,同样的事情也发生在我身上。
2件事:
。 Apache配置。
确保php引擎已开启。如果您无法访问您的apache配置文件,请在.htaccess中添加:
php_flag engine on
。的 CDN。强>
如果您使用的是任何云分发网络,现在是时候要求他们清除现有缓存并重新加载新缓存。
只有在apache配置出错的情况下,浏览器才会显示PHP源代码。
希望有所帮助。
编辑:
在阅读了萨宾的评论之后,我再次看了一下代码。
问题是,他已将值分配给$_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 ;
}
}
?>
然而,回应源代码不能归因于此。我会请你填写完整的文件,这样我们就可以看到你是否错过了一个结束的单引号!
答案 1 :(得分:1)
听起来PHP根本不起作用。您没有看到第一部分的唯一原因是因为您的浏览器正在将其解析为HTML标记。
请尝试打印phpinfo()一次,
请查看以下链接,了解更多详情