我是php新手,我跟着一些YouTube视频来构建一个littel项目。如何获取会话的字段ID?
我有一个用户表:
id
username
email
password
,我试图建立一个私人消息系统。我想获取现在登录的用户的id
。但是,当我编写my_id = $_Session[ 'id' ]
时,出现错误:"Undefined index: id"
,但是当我编写$my_id = $_SESSION['username']
时,我得到的用户名没有错误,它回显我的用户名。有什么不同?
这是所有代码:
<?php
session_start();
$db = mysqli_connect("localhost", "root", "", "travelersdb");
if(@$_SESSION[ "username" ])
{
?>
<html>
<head>
<title>Home Page</title>
</head>
<?php
include("header.php");
echo "<center><h1>Private Message System</h1>";
include("message_title_bar.php");
if(isset($_GET[ "user" ]) && !empty($_GET[ "user" ]))
{
?>
<form method = 'post' >
<?php
if(isset($_POST[ "message"]) && !empty($_POST[ "message" ]))
{
$user=$_GET['user'];
$my_id = $_SESSION['username']; // ------> Doesn't work when changed to 'id'
$random_number = rand();
$sql_m = "SELECT 'hash'
FROM message_group
WHERE (user_one = '" . $my_id . "' AND user_two = '" . $user . "')
OR (user_one = '" . $user . "' AND user_two = '" . $my_id . "')";
$check_con = mysqli_query($db, $sql_m);
$rows = mysqli_num_rows($check_con);
if($rows == 1)
{
echo "<p>Conversation already started!</p>";
}
else
{
echo $user . "</br>";
echo $my_id; -------> Wanted to echo the $my_id to check...
echo $random_number;
// $sql_In = "INSERT INTO message_group(user_one, user_two, hash)
// VALUES('1111', '2222', '2222')";
// mysqli_query($db, $sql_In);
echo "<p>Conversation Started</p>";
}
}
?>
Enter Message : </br>
<textarea name = 'message' rows = '7' cols = '60'>
</textarea>
<br></br>
<input type='submit' value="Send Message" />
</form>
<?php
}
else
{
echo "<b>select user</b>";
$sql = "Select id,username from users";
$check = mysqli_query($db,$sql);
while ($run_user = mysqli_fetch_array($check))
{
$user = $run_user[ 'id' ];
$username = $run_user[ 'username' ];
echo "<p><a href = 'send.php?user=$user'>$username</a></p>";
}
}
?>
</html>
<?php
}
else
{
echo "You must be logged in.";
}
?>
更新:做到了这一点,但仍是不能正常工作。不识别该ID。这是login.php中:
<?php
session_start();
//connect to database
$db=mysqli_connect("localhost","root","","travelersdb");
if(isset($_POST['login_btn']))
{
//$username=mysql_real_escape_string($_POST['username']);
//$password=mysql_real_escape_string($_POST['password']);
$username = mysqli_real_escape_string($db, $_POST['username']);
$password = mysqli_real_escape_string($db, $_POST['password']);
$password=md5($password); //Remember we hashed password before storing last time
$sql="SELECT * FROM users WHERE username='$username' AND password='$password'";
$result=mysqli_query($db,$sql);
if(mysqli_num_rows($result)==1)
{
$_SESSION['message']="You are now Loggged In";
$_SESSION['username']=$username;
$sql_t = "select id from users where username='$username' AND password='$password'";
$id = mysqli_query($db, $sql_t);
$_SESSION['id']=$id;
header("location:index.php");
}
else
{
$_SESSION['message']="Username and Password combiation incorrect";
}
}
>
首先,你无法检索它的价值,你需要在SESSION数组指定“身份证”一样像你这样的“用户名” –
,因为没有会话设置为id仅用于用户名会话设置 – Gert
@Saili Jaguste,那是什么代码?谢谢。 – Jordan1200