希望将基于会话变量的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('######');
答案 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_query
或PDO
,因为mysql_query
在PHP 5.5中已被弃用,在PHP 7中已被删除。
您可以在php页面here中阅读更多内容