我知道这个主题已经涵盖了很多,并且我已经查看和搜索过,所以我认为我缺少一些基本的东西。
我有一个用户名密码登录系统,设置为:
登录页面:设置为 Action - checklogin.php
checklogin.php - 检查数据库中的用户名和密码,然后在标题中将它们带到他们的自定义 URL,该 URL 位于数据库的第 3 列中。所以 user1 去 folder1/,user2 去 folder2/,等等。
它似乎工作正常,但假设我以 user1 (URL /folder1/) 身份登录,它允许我在 URL 窗口中输入“/folder2/”,然后文件夹索引文件出现。
所以基本上,如果我登录任何用户名,我可以拉出其他用户文件夹/index.php 文件。
所以我认为 index.php 页面上的代码无法正确验证用户。
代码(顶部很好,连接到数据库等,所以我把它省略了):
checklogin.php:
// Define $username and $password
$username=$_POST['username'];
$password= $_POST['password'];
// To protect MySQL injection
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
$sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$password'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $username and $password, table row must be 1 row
if($count==1){
// Register $username, $password and redirect to file "index.php"
session_start();
$_SESSION[$username];
$_SESSION[$password];
$_SESSION['loggedin'] = true;
$_SESSION[$id];
$row = mysql_fetch_assoc($result);
$result = mysql_query("SELECT folder FROM users2");
$_SESSION['folder'] = $row['folder'];
if( isset($username) ) {
$_SESSION["loggedin"] = true;
$_SESSION["username"] = $username;
header('Location: clients/'. $row['folder'].'/index.php');
exit();
}
else {
echo "Wrong Username or Password";
}
ob_end_flush();
}
?>
在接收 URL index.php 页面上:
session_start();
if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) {
// not logged in, move to login page
header("location:../../login.php");
exit;
}
我已经尝试了接收“保护页面”代码的许多其他变体,但似乎没有一个能正常工作。是接收码还是登录码???我觉得我错过了一些明显的东西。
在此先感谢,对此的任何看法将不胜感激。- 兰迪