Это мой код для входа в систему. После входа в систему я хочу использовать идентификатор пользователя в качестве первичного ключа для перехода на другую страницу. Я пробую много кода, но все еще не работаю. пожалуйста, помогите мне
if (isset($_POST['login']))
{
$email=$_POST['email'];
$password=md5($_POST['password']);
$sql = "SELECT * FROM tbluser WHERE EmailAddress=:email and uPassword=:password";
$query= $dbh -> prepare($sql);
$query-> bindParam(':email', $email, PDO::PARAM_STR);
$query-> bindParam(':password', $password, PDO::PARAM_STR);
$query-> execute();
$results=$query->fetchAll(PDO::FETCH_OBJ);
if ($query->rowCount() > 0)
{
$_SESSION['login']=$_POST['email'];
$_SESSION['fname']=$results->FullName;
$_SESSION['uid']=$results['UserID'];
$currentpage=$_SERVER['REQUEST_URI'];
echo "<script type='text/javascript'> document.location = '$currentpage'; </script>";
} else{
echo "<script>alert('Invalid Details');</script>";
}
}
И как вызвать идентификатор пользователя на другой странице.
Не используйте JavaScript или метатеги для перенаправления веб-страницы. Вместо этого используйте Location: header. Проверьте PHP правильный путь для получения более свежих советов.
Вы уверены, что $currentpage установлен и имеет правильное значение?
Хорошо, благодарим за рекомендацию .$currentspage за звонок для просмотра текущей страницы






тебе нужен session_start()
if ($query->rowCount() > 0)
{
session_start();
$_SESSION['login']=$_POST['email'];
$_SESSION['fname']=$results->FullName;
$_SESSION['uid']=$results['UserID'];
$currentpage=$_SERVER['REQUEST_URI'];
echo "<script type='text/javascript'> document.location = '$currentpage'; </script>";
}
а затем вы запускаете сеанс с session_start () на другой странице, и он будет работать.
ВСЕ странице требуется session_start () для использования сеанса
@MuhammadWazexr использует session_start () поверх каждой страницы, таким образом, переменные $ _SESSION будут сохранены
@Dice Хорошо, сэр. а этот код правильный? $_SESSION['uid']=$results['UserID'];
да. Снимите электронную почту, вы можете легко получить ее с помощью запроса, если у вас есть userID
Вот как вы используете сеанс, помещайте его в начало или каждый файл php, где он вам нужен
<?php
session_start();
include("./Models/db_connect.php");
include('./Controllers/Functions/PHP/messages.php');
include('./Models/actual_date.php');
$actual_date = get_date($db);
switch(isset($_POST['login'])):
case 'Register':
$email = htmlspecialchars(trim($_POST['em']), ENT_QUOTES, 'UTF-8');
$password = htmlspecialchars(trim($_POST['pw']), ENT_QUOTES, 'UTF-8');
// check if the combination fname/lname/email is already used
include('./Models/log_check.php');
unset($_SESSION['ID'],$_SESSION['role']);
$_SESSION['ID'] = $row['ID'];
$_SESSION['role'] = $row['role'];
if (intval($row['ID']) > 0){
include('./Models/status_update.php');
$successmsg = "Connexion réussie! Redirection en cours";
header('refresh:5;url=./index.php?page=Lobby');
if ($_SESSION['role'] === 'vet') {
include './Views/html_top_vets.php';
} else {
include './Views/html_top_clients.php';
}
include('./Views/lobby.php');
} else {
$errormsg = "
<p>Vous n'avez pas de compte ou la combinaison est incorrecte!</p>";
include('./Views/html_top_login.php');
include('./Views/login.php');
}
break;
default:
include('./Views/html_top_login.php');
include('./Views/login.php');
endswitch;
?>
md5()устарел для хеширования паролей и должен не использоваться. PHP предоставляет password_hash () и password_verify (), используйте их. А вот и хорошие идеи о паролях. Если вы используете версию PHP до 5.5, здесь доступен пакет совместимости.