У меня есть панель заголовка, включая регистрационную форму на каждой странице моего сайта:
<header>
<form action="login.php" method="post">
<input id="username" name="username" placeholder="Benutzername" type="text">
<input id="password" name="password" placeholder="Passwort" type="password">
<input class="submit-button" type="submit" value="Login">
</form>
</header>
При нажатии отправить php-скрипт в отдельный login.php
выполняется. login.php
также является дополнительной страницей, где пользователь может повторить попытку после входа в систему.
login.php
выглядит так:
$ousername = '';
//We check if the form has been sent
if(isset($_POST['username'], $_POST['password']))
{
//We remove slashes depending on the configuration
if(get_magic_quotes_gpc())
{
$ousername = stripslashes($_POST['username']);
$username = mysql_real_escape_string(stripslashes($_POST['username']));
$password = stripslashes($_POST['password']);
}
else
{
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
}
//We get the password of the user
$req = mysql_query('select password,id from users where username="'.$username.'"');
$dn = mysql_fetch_array($req);
//We compare the submited password and the real one, and we check if the user exists
if($dn['password']==$password and mysql_num_rows($req)>0)
{
//If the password is right
header('Location: index.php');
здесь начинается проблема. Как вы можете видеть, пользователь перенаправляется на index.php
когда форма отправляется, и логин завершается успешно. То, что я хотел бы сделать, - перенаправить пользователя на любую страницу, на которой они сейчас находятся, при отправке формы (например, когда пользователь в настоящее время находится на странице, на которой отображаются мои рекомендации и журналы в Интернете, я хочу, чтобы он был перенаправлен на тот же руководства-страницы, когда логин завершается успешно.)
Я попробовал что-то вроде этого:
if($dn['password']==$password and mysql_num_rows($req)>0)
{
if(($_SERVER['REQUEST_URl'] == login.php)){
header('Location: index.php');
} else {
header('Location: '.$_SERVER['REQUEST_URl']);
}
Это последняя часть login.php:
//We save the user name in the session username and the user Id in the session userid
$_SESSION['username'] = $_POST['username'];
$_SESSION['userid'] = $dn['id'];
lots html following...
Надеюсь, это ясно. Спасибо!
Вы должны использовать HTTP_REFERER вместо REQUEST_URl:
if($dn['password']==$password and mysql_num_rows($req)>0) {
if(($_SERVER['HTTP_REFERER'] === "login.php")){
header('Location: index.php');
} else {
header('Location: '.$_SERVER['HTTP_REFERER']);
}
}
login.php
- строка, поэтому login.php
ее в '
или "
.
Вы можете получить доступ к истории браузера с помощью javaScript. Просто включите скрипт на индексную страницу и отправьте пользователей на нужную страницу.
Использовать метод window.history.go
window.history
reference
https://developer.mozilla.org/en-US/docs/Web/API/Window.history
Или без jS
http://ha.ckers.org/blog/20070228/steal-browser-history-without-javascript/
вам нужно будет использовать:
$_SERVER['HTTP_REFERER'];
чтобы вернуться на самую последнюю страницу перед процессом входа в систему!
$dn['password']
при запуске запроса? Вы не выбираете полеpassword
, вы выбираетеPasswort1_3