PHP_SELF不能在同一页面中工作

时间:2012-01-03 23:41:21

标签: php

我想在/index.php?page=2中使用它,但是当我按下提交按钮时,它会引发我index.php

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

index.php我有

<?php
switch($_GET['page']){
case 1:
include_once('/p/fizika.php');
break;
case 2:
include_once('/p/geom.php');
break;
case 3:
include_once('/p/algebra.php');
break;
default:
include_once('/p/algebra.php');
break;
}
?>

请帮帮我。

2 个答案:

答案 0 :(得分:4)

如果您只是希望表单将浏览器发送到当前页面,请尝试以下操作:

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

正如其他人所说,REQUEST_URI是另一种方法,但是你应该小心使用htmlspecialchars或类似方法对其进行消毒,因为它的内容部分受用户控制(等等)可能会让你接触到injection attacks)。

答案 1 :(得分:3)

PHP_SELF返回“当前正在执行的脚本的文件名,相对于文档根目录”。 http://php.net/manual/en/reserved.variables.server.php

如果您需要知道完整的URI,请使用:

$_SERVER['REQUEST_URI']

如果您只想让表单提交给自己(同一页面),请使用

<form action="">