0

目前,在显示用户发布的所有帖子时,我执行以下操作:

while($info=mysql_fetch_array($data)) {
echo "<div id = 'posts'>";
   echo $info['subject'];
   echo $info['post-item'];
echo "</div>";

}

但是,然而,我现在需要将获取的每个元素视为一个实际的帖子,而不仅仅是一个输出div,以获取每个帖子的 post_id,以便能够真正使用户能够与不同的帖子进行交互,例如“喜欢”一个帖子。

我曾尝试将喜欢的东西超链接到喜欢的东西 href?id=$thispost但是遇到了用户更改网址等问题,或者即使我还想添加评论功能,我也需要一种不同的方法!

4

1 回答 1

2

至于不同的任务,您将传递不同的查询字符串:

<a href="page.php?do=like&id=2">like this</a>
<a href="page.php?do=comment&id=2">comment</a>
<a href="page.php?do=share&id=2">share this</a>

page.php中,你会...

if (isset($_GET['do'] && isset($_GET['id'])) {
    $do = $_GET['do'];
    $id = $_GET['id'];
} else exit("blabla");

switch ($do) {

    case 'like':
        // do sth
        break;

    case 'comment':
        // do sth
        break;

    // etc.

} // switch

当然,通过 URL 传递值打开了操作的大门。
因此,要么存储$do$idin$_SESSION要么 in $_POST

示例$_POST

$h = "";
while ($info = mysql_fetch_array($data)) {

    $h .=  '<div id = "posts">';
    $h .= '<form method="post" action="page.php">';
    $h .= "{$info['subject']}<br />{$info['post-item']}";
    $h .= "<input type=\"hidden\" name=\"id\” value=\”{$info['id']}\” />';
    $h .= '<input type="submit" name="do" value="like" />';
    $h .= '</form></div>';

}
echo $h;

评论:
1. 不要使用mysql_*, but mysqli_*or PDO-> 使您的代码面向未来且更安全
2. 此代码在每个帖子周围创建一个表单,其中包含该帖子的 id(来自 db)的隐藏字段...
3. 和一个按钮,它将向用户发送不可见的 id page.php。4. 在page.php,你读到$_POST,就像我上面的例子一样$_GET

if (isset($_POST['id'])) {
    $do = $_POST['do'];
    $id = $_POST['id'];
} else exit("blabla"); 

// etc. 
于 2013-03-25T22:47:40.367 回答