Вы присваиваете $_SESSION['id']
значение $id
, но нигде в вашем коде вы не указываете значение $id
. Это то, что приводит к тому, что ваши сеансы перепутаны, поскольку каждому дается одинаковый идентификатор null.
Получите фактический идентификатор пользователя из базы данных и используйте это значение в $_SESSION['id']
, и ваша проблема исправлена. См. Ниже, например:
/* Start the session */
session_start();
/* Check if the user has submitted the login form $_POST */
if (isset($_POST['email']) and isset($_POST['password'])){
/* Get the values of $_POST */
$email = $_POST['email'];
$password = $_POST['password'];
/* Create the SQL query - Note: you should use bindings to prevent SQL injection */
$query = "SELECT * FROM `users` WHERE email='$email' and password='$password'";
/* Get the MySQL result */
$result = mysql_query($query) or die(mysql_error());
/* Check if the user was found */
if(mysql_num_rows($result) > 0){
/* Get the User ID from the database */
while($row = mysql_fetch_assoc($result)){
$id = $row['THE NAME OF YOUR ID COLUMN']; // replace with the name of your ID column in your DB
}
/* Set the session values */
$_SESSION['email'] = $email;
$_SESSION['id'] = $id;
/* Print output */
echo "You are logged in.";
/* Redirect to login page */
header("Location: index.php?log=success");
/* Unset POSTS */
unset($_POST);
} else {
/* Show login error message */
echo " Something went wrong ";
}
}
Кроме того, ваш код в настоящее время подвержен атакам SQL-инъекций. Чтобы предотвратить такие атаки, я бы посоветовал вам привязать ваши параметры к вашему SQL-запросу, а не вводить их напрямую. Информация о внедрении SQL