我一直试图将用户重定向到他的当前页面(他在登录之前的位置),但仍然不起作用。我尝试用我的脚本如下;但是用户并没有回到原来的位置,而是被带到了主页。有人能给出正确的方法吗?
<?php
session_start();
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = array();
}
if (isset($_SESSION['user_id']) && filter_var($_SESSION['user_id'], FILTER_VALIDATE_INT,array('min_range' => 1)) ) {
header('Location:accueil.html.php');
}
if (array_key_exists('login', $_POST)) {
$email=$pass="";
$errors = array();
// Check for an email address:
if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$email = trim($_POST['email']);
} else {
$errorEmail ="Entrer un email valide";
}
if (empty($_POST['pass'])) {
$errorPass = "Entrer votre mot de passe";
}
else{
$pass = trim($_POST['pass']);
}
if ( $email && $pass) { //All IS GUD
include('includes/connect.inc.php');
try {
$sql = "SELECT user_id FROM registered_user WHERE email = :email AND pass = :pass";
$stmt = $conn->prepare($sql);
$stmt->bindValue(':email', $email);
$stmt->bindValue(':pass', SHA1($pass));
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row) { //email and pwd combination is rigth
$_SESSION['user_id'] = $row['user_id'];
header('Location:'. $_SERVER['HTTP_REFERER']);
exit();
}
else{
$errors[] = "Nom d'utilisateur et/ou mot de passe incorrect(s)";
}
} catch (PDOException $e) {
$systemErr = "Désolé, Erreur de system".$e->getMessage();
}
} else{
$errors[] = "Désolé, votre connexion a échoué";
}
}//END MAIN IF
?>
您可以在每个页面中使用一个会话变量。
见下文
1)如果你有header.php通用文件,那么你可以添加这一行来存储header.php中的最后一个url,否则你可以在每个页面中添加。
$_SESSION['last_url'] = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
2)当用户登录时,你可以将用户重定向到该url。
if ($row) { //email and pwd combination is rigth
$_SESSION['user_id'] = $row['user_id'];
header('Location:'. $_SESSION['last_url']);
exit();
}
try this,
$usr_header = "Location:".$_SERVER['HTTP_REFERER'];
header($usr_header );
exit();