由于htaccess重定向导致$ _POST掉线

时间:2014-04-09 21:07:53

标签: php html forms post

我有以下代码,但是当我回显$ url,$ id2或$ message时,变量变为空。 php动作文件没有问题,正在运行。只是注意到这是使用php回显的,并且显示得很好。

<form name="comment" method="post" action="comment.php" onSubmit="return form_Validator(this)">
<table width=\"100%\">
    <tr>
            <th colspan=\"2\">Title</th>
    </tr>
    <tr valign=\"top\">
            <th scope=\"row\"> </th>
            <td><div align=\"center\"><textarea class=\"formtext\" tabindex=\"4\" id=\"message\" name=\"message\" rows=\"10\" cols=\"50\"></textarea></div></td>
    </tr>

    <tr>    
            <td>&nbsp;</td>
            <td><div align=\"center\"><input type=\"submit\" name=\"post\" class=\"submit\" value=\"Comment\" /></div><br />
</td>
    </tr>
</table>
<input type=\"hidden\" name=\"submit\" value=\"true\"> 
<input type=\"hidden\" name=\"url\" value=\"$url\" />
<input type=\"hidden\" name=\"id2\" value=\"$id2\" />
</form>

澄清:问题是我发送给php函数的变量是空的。他们什么都没有。我查看了其他类似问题的回答问题,有人提到重写规则会弄乱$ _POST的东西。真的吗?我是否必须在htaccess中使用其他内容才能传输变量?

另外,PHP文件:

<?php
if (userinfo['userid']!=0) {


$url = $_POST["url"];
$id2 = $_POST["id2"];
$email = $_POST["email"];
$message = $_POST["message"];

// These return nothing:
echo $url;
echo $id2;
echo $message;

$sendcomment = mysql_query("INSERT INTO comments SET tutorialid='$id2', email='$email', comment='$message', date=now()");

if($sendcomment){
    header("Location: $url");
} else {
    // Do Nothing
}
} else {
    header("Location: 403.php");
}
?>

1 个答案:

答案 0 :(得分:2)

你为什么逃跑?

删除它并且有效

<form name="comment" method="post" action="comment.php" onSubmit="return form_Validator(this)">
<table width="100%">
    <tr>
            <th colspan="2">Title</th>
    </tr>
    <tr valign="top">
            <th scope="row"> </th>
            <td><div align="center"><textarea class="formtext" tabindex="4" id="message" name="message" rows="10" cols="50"></textarea></div></td>
    </tr>

    <tr>    
            <td>&nbsp;</td>
            <td><div align="center"><input type="submit" name="post" class="submit" value="Comment" /></div><br />
</td>
    </tr>
</table>
<input type="hidden" name="submit" value="true"> 
<input type="hidden" name="url" value="$url" />
<input type="hidden" name="id2" value="$id2" />
</form>

demo

删除代码的这部分内容不正确:

 if($sendcomment){
    header("Location: $url");
} else {
    // Do Nothing
}
} else {
    header("Location: 403.php");
}