创建PHP登录页面的最佳方法是什么?

时间:2010-01-11 23:27:35

标签: php authentication login session

我是PHP的新手,正在寻找有关如何在PHP中实现身份验证的最佳实践。

我是Adobe的传播者,当人们使用Flex / Flash登录屏幕时,其中一件令我烦恼的事情就是。所以我想做一个关于使用HTML / PHP登录页面的博客文章/示例,然后将会话信息传递给Flex-after-会话已经设置。

我仍然围绕着PHP创建有效会话所需的内容以及它如何设置cookie。因此,与此特别相关的示例或信息将非常有用。

提前致谢,

= Ryan ryan@adobe.com

4 个答案:

答案 0 :(得分:7)

如前所述,在PHP中创建健壮且安全的身份验证系统有很多,但基本面很容易理解。

您要做的第一件事就是致电session_start()。完成此操作后,您可以使用$_SESSION超全局:

获取和设置会话变量
session_start();
$_SESSION['foo'] = $foo;
$bar = $_SESSION['bar'];

完成此操作后,您可以在成功登录后为当前用户设置登录详细信息,并将其保留在页面上(记住在使用之前调用session_start)。此外,在将任何内容发送到浏览器之前,必须先调用session_start

但是需要考虑安全问题,例如会话固定和cookie盗窃。例如,会话固定的一种方法是在使用PHP的session_regenerate_id(或类似的东西)提升权限时重新生成用户的会话ID。

PHP Security Consortium有很多有用的信息。

可以使用setcookie功能操作Cookie。

答案 1 :(得分:2)

这是一个相当广泛的话题。但是,对会话/ cookie的良好理解将是一个很好的基础。你应该看看Chris Shiflett's blog - 他有很多关于这些主题的好帖子。

  

我是Adobe的传播者,当人们使用Flex / Flash登录屏幕时,其中一件令我烦恼的事情就是。所以我想做一个关于使用HTML / PHP登录页面的博客文章/示例,然后将会话信息传递给Flex-after-会话已经设置。

我不完全确定你的目标。您是否需要Flash组件来验证用户身份?由于这是一种客户端技术,因此这种认证的范围有限。

答案 2 :(得分:2)

使用以下格式创建login.php页面:

<form method="post" action="login.php">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" name="submLogin">
</form>

然后添加你的php逻辑:

<?
if(isset($submLogin))
{
 $username = $_POST['username'];
 $password = $_POST['password'];

// run checks on vars not to pass on silly data + escape chars

 $query_login = 'SELECT * FROM users 
 WHERE username = ' . $username . ' AND password = ' . $password . ' LIMIT 1';
 $login = mysql_query($query_login, $db_connection) or die();
 $login_result = mysql_num_rows($login);

 if($login_result == 1)
 {
  // success
  session_start();
  $_SESSION['logged_in'] = TRUE;
  // redirect somewhere, set cookies, do whatever you want to do on success
 }
 else
 {
  // fail
  // display error or redirect
 }
}  
?>

$ db_connection变量是链接标识符 - mysql_connect()或mysql_pconnect()的结果

答案 3 :(得分:-10)

转储PHP并进入ASP.NET。所有这些都已经完成,还有安全和会员资料。 =)