我正在为我的网站成员开发一个收藏系统,我在发送POST数据时遇到了问题。基本上我想要发生的事情是,会员可以访问comic_profile页面,点击“添加收藏夹”图标,然后刷新页面并说出漫画已被收藏。
我的网址是:http://www.talesstudio.com/comic_profile.php?comicid=3
我的问题是每次点击收藏夹图标时,网址都会变为:http://www.talesstudio.com/comic_profile.php?addfav=Submit 该页面然后抛出错误“MISSING DATA TO RUN”,因为漫画ID没有被重新捕获。
这是最喜欢的图标/表单代码:
<?php echo "$comicname"; ?> <?php
$sql3 = mysql_query("SELECT * FROM Favorites WHERE comic_id='$comicid' AND user_id='$userid' LIMIT 1");
$count3 = mysql_num_rows($sql3);
if ($count3 < 1) {
echo '<form action="comic_profile.php?comicid='.$comicid.'&" method="GET">
<input type="button" name="addfav" src="images/addfav.png"></form>';
} else{
echo 'imagefile';
}
$comicid = ereg_replace("[^0-9]", "", $_GET['comicid']); // filter everything but numbers for security
if ($comicid == "") {
echo "Added to your favorites.";
exit();
}
我的SQL / POST代码:
if( isset($_POST["addfav"]))
{ $sqlfav = mysql_query("INSERT INTO Favorites (user_id, comic_id) VALUES ('$userid','$comicid')");
exit();
}
我可能正在做一些简单而愚蠢的事情,而我却看不到。有什么想法吗?
答案 0 :(得分:1)
将添加收藏夹表单的方法设置为POST(根据您的isset())。应该这样做。
答案 1 :(得分:0)
您应该将表单更改为method="POST"
。这将在帖子正文中发送表单数据,这不会导致URL中的查询字符串发生更改。
此外,如果要修改服务器上的数据,则从不使用GET查询。通常的原因是GET查询通常是机器人/搜索引擎运行,在这种情况下可能会导致将一堆收藏夹添加到您的数据库中。虽然我意识到这不应该发生,因为用户需要登录(大概是?),这仍然是不好的做法 - 使用POST。