我知道这个主题之前已经在 Stack 上讨论过,我也看过一些答案,但我仍然有点卡住,对 PHP 来说还是个新手。我网站上的每个页面都需要登录,因此用户在页面加载时被重定向到登录页面。在每一页的顶部,我有:
<?
require("log.php");
include_once("config.php");
include_once("functions.php");
?>
这会将用户重定向到 log.php(添加了新代码):
<?
session_name("MyLogin");
session_start();
if(isset($_SESSION['url']))
$url = $_SESSION['url']; // holds url for last page visited.
else
$url = "index.php"; // default page for
if($_GET['action'] == "login") {
$conn = mysql_connect("localhost","",""); // your MySQL connection data
$db = mysql_select_db(""); //put your database name in here
$name = $_POST['user'];
$q_user = mysql_query("SELECT * FROM users WHERE login='$name'");
if (!$q_user) {
die(mysql_error());
}
if(mysql_num_rows($q_user) == 1) {
$query = mysql_query("SELECT * FROM users WHERE login='$name'");
$data = mysql_fetch_array($query);
if($_POST['pwd'] == $data['password']) {
$_SESSION["name"] = $name;
header("Location: http://monthlymixup.com/$url"); // success page. put the URL you want
exit;
} else {
header("Location: login.php?login=failed&cause=".urlencode('Wrong Password'));
exit;
}
} else {
header("Location: login.php?login=failed&cause=".urlencode('Invalid User'));
exit;
}
}
// if the session is not registered
if(session_is_registered("name") == false) {
header("Location: login.php");
}
?>
登录表单包含在 login.php 中。与 PHP/log.php 相关的 login.pho 的代码是:
<?
session_start();
if($_GET['login'] == "failed") {
print $_GET['cause'];
}
?>
和
<form name="login_form" id="form" method="post" action="log.php?action=login">
我遇到的答案表明我应该添加:
session_start(); // starts the session
$_SESSION['url'] = $_SERVER['REQUEST_URI'];
到我所做的每个页面的顶部(在“require(”log.php“);”上方),然后添加:
if(isset($_SESSION['url']))
$url = $_SESSION['url']; // holds url for last page visited.
else
$url = "index.php"; // default page for
到我的登录页面,并在成功登录时使用以下 URL 进行重定向:
header("Location: http://example.com/$url"); // perform correct redirect.
我不是 100% 存储引用 URL 的代码应该放在 log.php 或 login.php 的顶部。
我已经尝试将它添加到两者中,但是一旦我输入了用户名和密码,登录页面就会循环。
我想知道是否有人可以帮助我完成这项工作?
谢谢,
缺口