在调用这个PHP脚本时,我在浏览器中遇到了一个奇怪的反应。
<?php
$map = array(
'a' => function(){
print_r('a');
},
'b' => function(){
print_r('b');
}
);
$map($_GET['v']);
?>
我已经注意到那里有一个错误。调用的语法是错误的,因为它应该是这样的:
$map[$_GET['v']]();
问题是浏览器对这个错误的反应不是应该的。
运行此脚本的结果是“重置连接”消息。服务器启动并正常运行,因为其他PHP文件(纠正错误后的这个文件)运行完美。
但实际上令我困惑的是浏览器的导航栏。当我打入URL
localhost/cerdo.php?v=a
栏的内容变为
www.localhost.com/cerdo.php?v=a
www.localhost.com部分似乎只发生在Firefox中。我在Chromium上尝试过它,尽管显示了类似的消息(“没有收到数据”),但URL保持不变。
发生了什么事?这有意义吗? PHP不应该报告语法错误吗?为什么Firefox会重定向到www.localhost.com?
答案 0 :(得分:1)
PHP不应该报告语法错误吗?
没有。如果PHP没有报告$map($_GET['v']);
,因为语法错误是因为它期望代码在语法上有效。所以它最终会执行一些你不期望的非常奇怪的东西。这会导致您的浏览器重定向到一些无法解释的位置。
这里的关键是要了解$map($_GET['v']);
实际意味着什么。
答案 1 :(得分:0)
重定向与您的代码无关。您的环境如何设置,例如你在使用Xampp等吗?在这种情况下,请确保在您的Web根目录中有任何index.php或.htaccess或其他任何包含重定向脚本的内容。
答案 2 :(得分:0)
如果这不是你第一次与你开发环境,请忽略这一点:
我认为你的问题是:操作系统无法识别域名(操作系统扩展了它)。 在Windows下,您可以在此处找到“主机”文件:
“%SYSTEMROOT%\ System32 \ drivers下\等\”
将此行添加到文件末尾:
127.0.0.1 localhost
(也许你应该重新启动电脑。) 它应该解决你的