我是PHP的新手。作为一个新手,我开始了我的第一个项目。我为我的webapp创建了一个登录系统。但是有一个问题。当我尝试访问索引或主页时,它会要求登录,但是当我尝试访问其他页面时,它不会要求我登录。
如何为所有页面管理相同的限制? 我的登录代码在这里。
<?
$connection=mysql_connect("localhost","admin","");
if(!$connection)
{
die("Database Connection Failed: " . mysql_error());
}
//Select a database to use
$db=mysql_select_db('vss',$connection);
if(!$db)
{
die("Database Selection Failed: " . mysql_error());
}
$username=$_POST['username'];
$password=$_POST['password'];
//
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
//
$query="SELECT *FROM user where username='$username'AND password='$password'";
$result=mysql_query($query);
$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 "example.php"
session_register("username");
session_register("password");
header("location:http://localhost/vss/main.php");
}
else {
echo "Wrong Username or Password";
}
?>
我刚刚在$userok=$count;
行之后添加了$count==1
然后我添加了我刚刚添加:$ userok = $ count;行$ count == 1之后我添加了Call.php-&gt; <?php if($userok!=1); { header("location:localhost/vss/logindo.php";); } ?>
我在限制页面的顶部添加了include(call.php)
。但是,每次请求登录时我都会点击按钮。如何按“登出”直到登录用户为止。我在限制页面的顶部添加了include(call.php)。但是,当我每次请求登录时单击该按钮。如何按下“注销”直到登录用户。
答案 0 :(得分:1)
自从你学习以来,我不会讨论这个问题的安全性。你能做的是以下几点:
1)在if($count==1)
行下方添加$userok=1;
之类的内容
并在else部分添加$userok=0;
2)将上面的.php重命名为init.php,
3)在所有其他页面的顶部做类似“
include ('init.php');
if (!($userok==1)) {
echo "Please do not call this directly, login first";
exit;
}
您可以使用header("Location: http://...")
重定向到您的登录页面来替换回音“请登录”。
答案 1 :(得分:0)
请注意marto的重要词汇 请确保您的sql是安全的 我看到你已经在使用mysql_real_escape_string也看看预备语句
自PHP 5.3.0起,sesssion寄存器也已弃用。只使用$ _SESSSION [“用户名”] 并且没有必要在会话中输入密码
在会话中获得值后,您可以在每个页面的顶部检查它们(使用包含此内容)虽然我建议不要在会话中使用任何特定数据,但只考虑设置像logged_in这样的会话var
e.g。
if(empty($_SESSION["username"])
{
//redirect to login
}
else
{
}
答案 2 :(得分:0)
如果设置了用户名会话,则典型的方法是检查所有页面。例如,您可以使用front controller pattern轻松实现它。如果不是,则将用户重定向到登录页面。
此外,我发现您没有哈希用户密码。这不是非常安全的方法。你应该看看how to deal with passwords in PHP。此外,注册密码会话是非常无用的,可能不安全。
正如@marto在评论中提到的那样,您应该了解脚本中的SQL注入可能性。 prevent it并不难。