我是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