上传帖子后,用户已注销[PHP]

时间:2018-09-07 06:58:05

标签: php

我的帖子上传公式有问题,需要您的帮助。

使用此公式,我将数据同时插入到2个表中,并且工作得很好。我的下一步是在帖子表中插入userid,以便将帖子链接到帖子的创建者。

在发布表中插入userid也可以,但是在上传后,用户将被注销。

这是我的代码的一部分 (我在代码中标记了一个"X"有问题的地方)

session_start();
$db = mysqli_connect("localhost", "root", "", "abc");

if (isset($_POST['upload_post']))
{ 
  $ad_post_title = mysqli_real_escape_string($db, $_POST['post_title']);

X $user_id = $_SESSION['id_u']; 
X $_SESSION['id_u'] = mysqli_insert_id($db);
X $sql_p = "INSERT INTO ad_posts (post_title, user_id) VALUES ('$post_title','$user_id')";

  if (mysqli_query($db, $sql_p))
  {
    $ad_post_id = mysqli_insert_id($db);

    ...

  }
}

也许我的会话做错了什么?

2 个答案:

答案 0 :(得分:1)

在代码的第二行,您正在覆盖用户ID的会话变量,我认为您正在使用该变量来确保用户已登录,并带有新插入的行的ID。

   $user_id = $_SESSION['id_u']; 
X  $_SESSION['id_u'] = mysqli_insert_id($db);
   $sql_p = "INSERT INTO ad_posts (post_title, user_id) VALUES ('$post_title','$user_id')";

在您提供的代码中,我看不出这是第二行的原因,请将其删除,否则您的用户将不会注销,除非您当然也在其他地方覆盖了它。

答案 1 :(得分:1)

在系统中添加数据之前,不能使用mysqli_insert_id()。 我在系统中检查了相同的代码,并且工作正常。

session_start();
$db = mysqli_connect("localhost", "root", "", "abc");

if (isset($_POST['upload_post']))
{ 
  $ad_post_title = mysqli_real_escape_string($db, $_POST['post_title']);

 $user_id = $_SESSION['id_u']; 
 $sql_p = "INSERT INTO ad_posts (post_title, user_id) VALUES ('$post_title','$user_id')";

  if (mysqli_query($db, $sql_p))
  {
    $ad_post_id = mysqli_insert_id($db);

    ...

  }
}