【问题标题】:$_GET $_POST URL overwrite issue PHP$_GET $_POST URL 覆盖问题 PHP
【发布时间】:2011-04-19 02:46:57
【问题描述】:

我正在为我的网站成员开发一个收藏系统,但我在发送我的 POST 数据时遇到了问题。基本上我想要发生的事情是,让会员进入comic_profile页面,单击“添加收藏”图标,然后刷新页面并说漫画已被收藏。

我的网址是:http://www.talesstudio.com/comic_profile.php?comicid=3

我的问题是每次我点击喜欢的图标时,网址都会变成:http://www.talesstudio.com/comic_profile.php?addfav=Submit 然后该页面会抛出错误“缺少要运行的数据”,因为没有重新捕获漫画 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();
  }

我可能正在做一些我看不到的简单而愚蠢的事情。有什么想法吗?

【问题讨论】:

    标签: php forms post get


    【解决方案1】:

    将您最喜欢的表单的方法设置为 POST(根据您的 isset())。应该这样做。

    【讨论】:

    • 我试过了。它制作了一个非常奇怪的文本框,并且不显示我的图形。我不知道为什么。
    • 哇哦。没关系。我将按钮类型改回 SUBMIT 并使其正常工作。现在我的图像不会显示。接下来得想办法了。谢谢! :D
    • 您应该能够将“类型”设置为图像并执行您正在寻找的提交按钮。 :)
    • 只是勉强想通了。我没有意识到我必须使用 $_POST['addfav_x'] 才能工作。现在我正在尝试删除东西。哦,不幸的是失败的程序员。 :P
    【解决方案2】:

    您应该将表单更改为method="POST"。这将在 post body 中发送表单数据,不会导致 URL 中的 Query 字符串发生变化。

    另外,如果您要修改服务器上的数据,您应该永远不要使用 GET 查询。这样做的通常原因是 GET 查询通常由机器人/搜索引擎运行,在这种情况下,这可能会导致将一堆收藏夹添加到您的数据库中。虽然我意识到这不应该发生,因为用户需要登录(大概?),但这仍然是不好的做法 - 使用 POST。

    【讨论】:

    • 啊,我明白了。我不知道。我还是 PHP 的新手;有很多东西要学。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2012-01-14
    • 2013-05-20
    • 2014-12-12
    相关资源
    最近更新 更多