基于会话PHP添加/附加UserID

时间:2019-02-21 15:06:08

标签: php variables session

希望将基于会话变量的UserID添加到此post方法。

我可以基于会话ID显示日记帖子,但是希望每次发布条目时实际上将用户ID添加到相应的表中。

我在下面提供了数据库的图片以及已经添加了帖子的插入查询。

日记和tblUseraccount已使用外键链接

PHP函数

<?php
if(session_id() == '') {
	session_start();
        
}



if(!isset($_SESSION['myEmail'])){ //if login in session is not set
    header("Location: login.php");
}

 if (!isset($_SESSION['myEmail'])) {
		echo"  <a href='login.php'";
	  }
	  else {
             $myFName = $_SESSION['userFirstName'];
          }

我也想插入UserID的代码

<?php
// post_add.php
if(!empty($_POST)) {
    include 'mysql.php';
    if(mysql_safe_query('INSERT INTO posts (title,body,date,) VALUES (%s,%s,%s)', $_POST['title'], $_POST['body'], time()))
        echo 'Entry posted. <a href="post_view.php?id='.mysql_insert_id().'">View</a>';
    else
        echo mysql_error();
}
?>

mysql.php部分

<?php
// mysql.php
function mysql_safe_string($value) {
    $value = trim($value);
    if(empty($value))           return 'NULL';
    elseif(is_numeric($value))  return $value;
    else                        return "'".mysql_real_escape_string($value)."'";
}
function mysql_safe_query($query) {
    $args = array_slice(func_get_args(),1);
    $args = array_map('mysql_safe_string',$args);
    return mysql_query(vsprintf($query,$args));
}
function redirect($uri)
{
    if (!headers_sent())
    {    
        header('Location: '.$uri);
        exit;
        }
    else
        {  
        echo '<script type="text/javascript">';
        echo 'window.location.href="'.$uri.'";';
        echo '</script>';
        echo '<noscript>';
        echo '<meta http-equiv="refresh" content="0;url='.$uri.'" />';
        echo '</noscript>'; exit;
    }
}
@mysql_connect('localhost','######','#######');
@mysql_select_db('######');

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

首先,您需要在会话中设置UserId 进行用户登录时,您可以在会话中添加用户ID,就像您添加的userFirstName

之后,您可以仅在文件中启动会话,然后在要插入帖子时从会话中获取用户ID

session_start();

if(!empty($_POST)) {
    include 'mysql.php';

    $userId = $_SESSION['UserID']; //or whatever is your key in session where you store the user id

    if(mysql_safe_query('INSERT INTO posts (title,body,date,UserID) VALUES (%s, %s, %s, %s)', $_POST['title'], $_POST['body'], time(), $userId)){
        echo 'Entry posted. <a href="post_view.php?id='.mysql_insert_id().'">View</a>';
    }else{
        echo mysql_error();
    }
}

我还注意到您正在使用mysql_query来运行查询。您应该使用mysqli_queryPDO,因为mysql_query在PHP 5.5中已被弃用,在PHP 7中已被删除

您可以在php页面here中阅读更多内容