表单数据无法发布到其他页面
我正在努力解决以前从未遇到的问题。我在页面上有一个表单,通过POST将其数据提交到另一个页面,但数据未到达其他页面。如果我在页面顶部用表格将action=""
然后var_dump()
打印出来,则POST数据将打印出正常,但如果我制作action="http://localhost/dir/"
并将var_dump()
置于该页面的顶部,则会打印出array empty
。究竟是什么导致了这种行为?我该如何调试?我迷路了。表单数据无法发布到其他页面
形式:在index.php文件顶部
<form id="form" method="post" action="http://localhost/dir">
<input type="hidden" name="id" value="19">
<select style="width: 60px;" name="number">
<option value="1">1</option><option value="2">2</option><option value="4">4</option>
</select>
<input type="submit" class="input_submit" value="Submit" id="submitButton">
</form>
代码:
var_dump($_POST);die();
要发布数据到一个网页,是在不同的目录中,使用相对路径。
例如,考虑这一点。 DirSub1和DirSub2处于同一级别,它们都在DirTop中。
- DirTop
- DirSub1
- DirSub2
现在,如果你的表格是在目录DirSub1,你需要将它张贴在DirSub2到x.php,你写的action属性喜欢此:
行动= “../ DirSub2/x.php”
希望这可以解决您的问题。
喜欢itsols。我不想在URL中包含文件名,因为那么用户会在url中看到'x.php',而不仅仅是目录。您的评论激发了我开始讨论URL的问题,并且我发现在操作URL末尾附加一个斜杠会导致数据被张贴,但没有斜杠,也没有数据。为什么会这样? – Nate 2012-07-25 20:39:26
我不知道为什么在你的情况下,但通常情况下,我认为斜线表示目录的结尾,然后寻找明显的第一件事是索引或主要。因此,这可能是您的数据以斜线发布的原因。也许这可以在Apache或Web服务器上配置。 – itsols 2012-07-26 08:23:42
我想要做的就是不显示与实际文件的交互,你有一个简单的选择。提交到相同的文件,然后执行服务器端重定向来执行处理,然后将用户带到不同的着陆页。这样,用户将不知道他经历了哪些地方。但这很奇怪你为什么要隐藏它。 – itsols 2012-07-26 08:25:21
尝试
<form id="form" method="post" action="../dir/index.php">
<input type="hidden" name="id" value="19">
<select style="width: 60px;" name="number">
<option value="1">1</option><option value="2">2</option><option value="4">4</option>
</select>
<input type="submit" class="input_submit" value="Submit" id="submitButton">
</form>
假设“DIR”目录是出侧包含该形式的文件的目录。
嗨asprin。我不想在URL中包含文件名,因为那么用户会在url中看到'x.php',而不仅仅是目录。您的评论激发了我开始讨论URL的问题,并且我发现在操作URL末尾附加一个斜杠会导致数据被张贴,但没有斜杠,也没有数据。为什么会这样? – Nate 2012-07-25 20:39:49
我不确定我是否知道确切的答案,但如果您不希望用户在地址栏中看到文件名,则可以从'x.php'中删除.php扩展名,以便用户看起来像就像一个目录'/ x'。如果您在Linux服务器上,或者在Windows服务器上使用web.config重写URL,请使用.htaccess查看URL重写。 – asprin 2012-07-25 23:02:10
当专家到达时,动作路由的文件名是什么?索引文件? – manix 2012-07-25 02:38:30
@Nate为什么你想要这样的路径?为什么不把文件名称? – itsols 2012-07-25 02:43:32
@manix - 是的,'index.php' – Nate 2012-07-25 02:44:21