【发布时间】:2013-01-07 00:27:50
【问题描述】:
我的表单有点问题,我只是希望你能回答我的问题。
基本上,有一个 index.php 包含页眉、页脚,在它们之间,我放了一个 require $_GET['page'].'.php';
我所有的页面都有指向index.php?page=pagename 的链接,而且它运行得几乎完美。
我唯一的问题是页面变量不会通过通过$_GET 发送其他变量的表单,尽管如果表单为空或有变量通过$_POST 进入下一页,它会很好用。每当我尝试使用 url 将 $_GET['page'] 传递到另一个页面时,它就无法正常工作,表单变量将显示在 var_dump() 中,但页面不会。这是代码,在我看来这真的不那么重要。
index.php:
if (!isset($_GET['page'])) //This returns TRUE
{
echo redirect_tempo(500, 'index.php?page=home');
}
elseif ($_GET['page']=="index")
{
echo redirect_tempo(500, 'index.php?page=home');
}
elseif (file_exists($_GET['page'].".php"))
{
require $_GET['page'].'.php';
}
else
{
echo redirect_tempo(500, 'index.php?page=404');
}
test.php
<form action="index.php?page=test" method="GET">
Obtenir les disponibilités des hôtels pour la date suivante :
<input type="text" name="date" size="12" id="inputField" /><br /><br />
<input type="submit" value="Rechercher" />
</form>
在这种情况下 var_dump 只会显示 $_GET['date']
我很确定这是一个众所周知的错误和非常愚蠢的错误,但我真的在互联网上找不到任何东西(不容易找到......)
非常感谢您的帮助:)
巴斯蒂安
【问题讨论】:
-
请注意:
require $_GET['page'].'.php';可能会导致一些严重的安全漏洞——我建议您寻找另一种包含文件的方法。简单地说,您可以列出 valid$_GET['page']结果并检查该列表,否则忽略。 -
如果有人试图访问其他文件,if(file_exists()) 将返回 false。老实说,我不够熟练,无法找到其他方法来做到这一点。无论如何感谢您的提醒:)