据我所知,通过表单提交,您只能使用POST或GET方法,而不能同时使用两者。
但是我想创建一个论坛脚本,所以当你回复一个主题时,它会查询到数据库,并根据提交回复时$ _GET ['id']的内容给它reply_id。唯一的问题是当我按POST提交POST数据时,我提交后无法将$ _GET带到下一页。所以我无法查询$ _GET ['id']。
现在,我想为什么不把动作“topic.php?id =”,但由于某种原因这不起作用。
错误的是,当我在表单上按提交时,它甚至不会查询任何内容。 :/
任何人都知道代码有什么问题吗?
形式:
<form action="topic.php?id=$postid" method="POST">
<textarea name="comment" class="field span6" rows="3" placeholder="Content..."></textarea><br /><br />
<input type="hidden" name="id" value="<?php echo $_GET['id'];?>">
<div><input type="submit" name="submit" value="Reply" /></div>
</form>
表格行动:
if(isset($_POST['submit'])) {
$postid=$_POST['id'];
$errors = array();
if(isset($_POST['comment'])){
if(empty($_POST['comment'])){
$errors[] = 'Error, try again!';
}
if(strlen($_POST['comment']) > 400){
$errors[] = 'Comment must be in a 10 to 400 characters range!';
}
if(empty($errors)){
//write to topics and replies tables
$q2 = @mysql_query("INSERT INTO reply VALUES('$postid', \"$comment\", now(), '$id')");
} else {
echo 'You have '. (count($errors) + 1).' errors in your form:<br />';
foreach($errors as $error){
echo $error .'<br />';
}
echo '<a href="new_topic.php">Try again</a>';
}
}
答案 0 :(得分:1)
尝试在表单中使用隐藏字段,以便您可以将ID存储在隐藏字段中,或者您可以将其存储在会话中
<input type="hidden" name="id" value="<?php echo urlencode($postid); ?>" />
和
表单操作中的 $_REQUEST['id'];
答案 1 :(得分:1)
轻松完成此操作的一种方法是使用隐藏字段。 所以使用
<input type="hidden" name="id" value="<?php echo GET['id'];?>">
然后在操作页面上,您应该可以使用
$postid=$_POST['id'];
或者,如果我有错误的结尾,请在表单上使用
<input type="hidden" name="id" value="<?php echo $postid;?>">
同时将表单操作更改为 行动= “topic.php”。
更新的代码应如何显示
<form action="topic.php" method="POST">
<textarea name="comment" class="field span6" rows="3" placeholder="Content..."></textarea><br /><br />
<input type="hidden" name="id" value="<?php echo $postid;?>">
<div>
<input type="submit" name="submit" value="Reply" />
</div>
</form>
答案 2 :(得分:0)
您可以使用 $ _ REQUEST 从 $ _ POST 和 $ _ GET 获取值,或者只是在表单中使用隐藏的输入字段发送id,类似
<input type='hidden' name='id' value='<?php echo $postid' />
这可以是发送ID的更好方式。
答案 3 :(得分:0)
这里要考虑两件事。如上所述,在隐藏表单字段中传递您需要的以前页面中的任何变量。另外,直接停止使用$ _GET和$ _POST,你需要验证输入,所以使用通用函数这样做,这也会给你的好处是能够要求var而不必担心它在$ _GET或$ _POST。这些方面的东西:
/**
* returns the contents of the GET or POST variable
* favours POST over GET
*/
function GP($var,$trusted=false)
{
$op=$_GET[$var];
if(isset($_POST[$var]))
{
$op=$_POST[$var];
}
if(is_string($op))
{
$op=trim(urldecode($op));
if(!$trusted){
$op=htmlspecialchars($op,ENT_QUOTES);
}
// $op=addslashes($op);
}
return $op;
}