使用PHP的登录系统

使用PHP的登录系统,php,authentication,Php,Authentication,我是PHP新手。作为一个新手,我开始了我的第一个项目。我为我的webapp建立了一个登录系统。但是有个问题。当我尝试访问索引或主页时,它会要求登录,但当我尝试访问其他页面时,它不会要求我登录 如何管理所有页面的相同限制? 我的登录码在这里 <? $connection=mysql_connect("localhost","admin",""); if(!$connection) { die("Database Connection Failed: " . mysql_error()

我是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";
}
?>

由于您正在学习,因此我不会讨论此安全性。您可以执行以下操作:
1) 在
if($count==1)
行下方添加类似
$userok=1的内容
在else部分添加
$userok=0
2) 将上面的.php重命名为类似init.php的名称,
3) 在所有其他页面的顶部,执行以下操作:


您可以用
标题(“位置:http://...“
重定向到您的登录页面。

注意marto的重要词语 请确保您的sql是安全的 我看到您已经在使用mysql\u real\u escape\u string了,请看准备好的语句

另外,由于从PHP5.3.0开始,session register已被弃用。只需使用$\u session[“username”] 而且在会话中并没有必要输入密码

一旦你有了会话中的值,你可以在每一页的顶部检查它们(使用一个包含),尽管我建议不要在会话中使用任何特定的数据,只要考虑设置像LoGdEdIn之类的会话Value/P> e、 g


典型的方法是在所有页面上检查是否设置了用户名会话。您可以轻松地实现它,例如,使用。如果未设置用户名会话,则将用户重定向到登录页面

此外,我发现你没有散列用户密码。这不是一种非常安全的方法。你应该看看。另外,注册密码会话是非常无用的,并且可能不安全


正如@marto在评论中提到的,您应该注意脚本中SQL注入的可能性。这并不难。

注意SQL注入:另一个技巧:不要只使用计数来验证用户是否有效。使用:if($username==mysql\u result($result,0,'username'))我刚刚添加了:$userok=$count;在$count==1行之后,我添加了Call.php->您必须使用会话并将$userok存储在cookie中。成功身份验证后,使用setcookie()设置cookie,然后在每个页面上使用$\u COOKIES['mycookie']检查cookie变量。为防止用户使用页面时cookie过期,请每次重新设置cookie。
   include ('init.php');
   if (!($userok==1)) { 
      echo "Please do not call this directly, login first";
      exit;
   }
if(empty($_SESSION["username"])
{
  //redirect to login
}
else
{

}