$_SERVER["PHP_SELF"] Apache/Xampp禁止访问


$_SERVER["PHP_SELF"] Apache/Xampp forbidden access

我在本地主机上使用Xampp/Apache服务器。

我试图使用一个表单上的动作,张贴到"register.php"。

<form method="post" action= "<?php echo htmlspecialchars($_SERVER["register.php"]);?>">

我得到一个403错误"Access Forbidden".

在url中它声明:

<br%20/><b>Notice</b>:%20%20Undefined%20index:%20register.php%20in%20<b>C:/xampp/htdocs/2001/create_account.php</b>%20on%20line%20<b>45</b><br%20/>

(第45行错误,即上面的代码行)。

此代码所在的文件是一个php文件create_account.php

我已经尝试改变apache httpd.conf权限,没有变化。我已经尝试在其他地方找到解决方案,但没有运气与修复。

您需要仔细阅读$_SERVER的手册页http://www.php.net/manual/en/reserved.variables.server.php

你可能会发现action="register.php"就是你所需要的

在你的代码示例中,你试图调用一个未定义的键,数组$_SERVER没有,因此你有一个错误。

$_SERVER是一个php超全局变量,它的形式是一个数组。数组可以是索引的、关联的或多维的。关联数组使用键访问值('key' => 'value')。关联数组示例:

$person=array('Name' => 'John', 'Last name' => 'Spencer', 'Age' => 22);

为了获得John的姓氏,您首先需要指定保存所有信息的数组($person),然后通过键(['Last name'])从该数组请求某些信息。请求示例:

$lastName=$person['Last name'];

如果你已经知道你想访问的页面,你应该在HTML中输入纯文本(method="register.php"),不需要任何php功能来做这件事。函数htmlspecialchars()也不是必需的,因为您是键入的人,不需要对自己的输入进行消毒。

然而,比纯文本更好的是使用$_SERVER['PHP_SELF'],它返回当前页面的相对路径。这种方式比以前更好,因为如果在某些时候您要重命名文件,则不必像前面的示例那样更改表单的方法值。

最后,如果你不离开当前页面,你也可以放置一个空字符串作为方法(method="")。

推荐阅读:

  • php.net的数组文档

  • w3school关于数组的文档