如果URL具有$ _get值,PHP_SELF无效?

时间:2017-01-26 13:38:39

标签: php superglobals

我的网页网址类似于http://localhost/coursera/instructor/course.php?id=1&name=web%20development&section=overview

在该页面上我有一个像

这样的表格
<form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">       
 <div class="form-group">
  <textarea class="form-control" placeholder="What will students need to know or do before starting this course? Who is your target student? At the end of my course, students will be able to..." rows="8" required="" name="description"></textarea>
</div>                                   
 <button type="submit" class="btn btn-info btn-fill btn-block" name="overview">Save</button>  
</form> 

但问题是<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>并且<?php echo $_SERVER["PHP_SELF"];?>没有返回包含所有$ _Get值的相同网址。

无论如何要使表单返回到同一页面,因为我无法对$ _Get值进行硬编码。

感谢。

编辑:

print_r($_SERVER["PHP_SELF"]); 

正在显示/coursera/instructor/course.php 但是我想以http://localhost/coursera/instructor/course.php?id=1&name=web%20development&section=overview 的方式做任何事情吗?

1 个答案:

答案 0 :(得分:4)

更新1:

  

我希望当我提交表单时,我应该返回相同的URL但是它   不是

您可以简单地将action属性保留为空,以防表单返回同一页面。

<form method="post" action="">

更新2:

虽然它正在运行,但根据W3C文档,它不是有效值。

  

动作和格式内容属性(如果已指定)必须具有   一个值,它是可能被其包围的有效非空URL   空格。

请注意,PHP_SELF不会返回查询字符串(?x = y&amp; z = d)。只需要dir和文件名。

<强> PHP_SELF

  

当前正在执行的脚本的文件名,相对于   文件根。例如,$ _SERVER [&#39; PHP_SELF&#39;]在脚本中   地址http://example.com/foo/bar.php将是/foo/bar.php。该    FILE 常量包含当前(即包含)文件的完整路径和文件名。如果PHP作为命令行处理器运行   此变量包含自PHP 4.3.0以来的脚本名称。以前呢   没有。