【问题标题】:Htaccess form POST doesn't work?Htaccess 表单 POST 不起作用?
【发布时间】:2011-07-29 00:34:41
【问题描述】:


我有一个带有重定向到页面的操作的表单;
<form method="post" action="active">

“活动”页面是一个重写的规则;
RewriteRule ^active$ active_form-sec.php

带有表单的页面也是一个 RewriteRule。

问题是,每次我提交表单并进入活动页面时,POST 都是空的。
我该如何解决这个问题?
提前致谢!

【问题讨论】:

  • 显示你正在使用的重写器,这可能是罪魁祸首
  • 该 rewriteRule 不应该丢弃 POST。奇怪的。 print_r($_POST) 产生了什么?
  • 所有请求都以'/'开头,重写规则不应该捕获任何东西吗?
  • @Pekka; print_r($_POST) 为空。我把它改回 .php 文件,但数组仍然是空的,可能出了什么问题?是不是因为我加了<base...标签?

标签: php html .htaccess mod-rewrite


【解决方案1】:

这可能是因为 .htaccess 不收集表单数据。

为什么不这样做:

<form method="post" action="active_form-sec.php">

【讨论】:

  • 因为它不好看:)
【解决方案2】:
  • 您确定点击提交按钮时会调用active_form-sec.php 吗?
  • 如果有,当你print_r($_POST)时你有什么?
  • 如果未调用 active-form-sec.php,则您的 mod_rewrite 无法正常工作
  • 如果您有一个空数组,则您的输入可能有问题(提示:缺少name 属性)

调试完成。

【讨论】:

  • 它运行良好,直到我使用了 htaccess RewriteRule。所以我认为这与此有关。它也重定向到正确的页面,但是当我echo $_POST时,所有字符串都是空的。
  • @Jay Wit 注意:你不能回显 $_POST 因为它是一个数组。顺便说一句,查看 Apache 日志会很有用。
  • 是的,我echo $_POST['var'];,但我只是将其作为示例。我不知道该怎么做。
  • @Jay 试试print_r($_POST);。您显示的 RewriteRule 不应删除 POST 变量。只有那些进行标题重定向(导致浏览器加载新页面)的人才会这样做。
  • @Pekka; print_r($POST); 是空的,但我认为 htaccess 不是问题。我都改回了.php还是不行,是不是因为我加了&lt;base...标签?
【解决方案3】:

这可能会有所帮助:

.htaccess:

Options +FollowSymlinks<br />
RewriteEngine On

RewriteCond %{THE_REQUEST} ^POST<br />
RewriteRule ^form-posting/?$ posting.php [L,NC]

form.php:

form method="post" action="form-posting"

posting.php:

print_r($_POST);

我已经尝试过这段代码,它可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 2023-04-03
    • 2014-11-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多