3

调用此 PHP 脚本时,浏览器的反应非常奇怪。

<?php
    $map = array(
        'a' => function(){
                print_r('a');
            },

        'b' => function(){
                print_r('b');
            }
    );  
    $map($_GET['v']);
?>

我已经注意到那里有一个错误。调用的语法是错误的,应该是这样的:

$map[$_GET['v']]();

问题是浏览器对这个错误的反应不是应该的。

运行此脚本的结果是“连接已重置”消息。服务器已启动并正常运行,因为其他 PHP 文件(以及更正错误后的这个文件)运行良好。

但真正让我困惑的是浏览器的导航栏是做什么的。当我输入网址时

localhost/cerdo.php?v=a

栏的内容变为

www.localhost.com/cerdo.php?v=a

www.localhost.com 部分似乎只发生在 Firefox 中。我已经在 Chromium 上尝试过,尽管显示了类似的消息(“未收到数据”),但 URL 保持不变。

怎么了?这有道理吗?PHP不应该报告语法错误吗?为什么 Firefox 会重定向到 www.localhost.com?

4

3 回答 3

1

PHP不应该报告语法错误吗?

不。如果 PHP 没有报告$map($_GET['v']);语法错误是因为它期望代码在语法上有效。所以它最终会执行一些你没想到的非常奇怪的东西。这会导致您的浏览器重定向到某个无法解释的位置。

这里的关键是了解$map($_GET['v']);实际含义。

于 2013-01-30T16:31:40.553 回答
0

重定向与您的代码没有任何关系。您的环境设置如何,例如您是否使用 Xampp 等?在这种情况下,请确保您的 Web 根目录中有任何 index.php 或 .htaccess 或任何其他包含重定向脚本的内容。

于 2013-01-30T12:00:15.403 回答
0

如果这不是您第一次使用开发环境,请忽略这一点:

我认为您的问题是:操作系统无法识别域名(并且操作系统对其进行了扩展)。在 Windows 下,您可以在此处找到“主机”文件:

"%SYSTEMROOT%\System32\drivers\etc\"

将此行添加到文件末尾:

127.0.0.1 本地主机

(也许您应该重新启动计算机。)它应该可以解决您的问题

于 2013-01-30T12:20:34.927 回答