我是PHP的新手,正在寻找有关如何在PHP中实现身份验证的最佳实践。
我是Adobe的传播者,当人们使用Flex / Flash登录屏幕时,其中一件令我烦恼的事情就是。所以我想做一个关于使用HTML / PHP登录页面的博客文章/示例,然后将会话信息传递给Flex-after-会话已经设置。
我仍然围绕着PHP创建有效会话所需的内容以及它如何设置cookie。因此,与此特别相关的示例或信息将非常有用。
提前致谢,
= Ryan ryan@adobe.com
答案 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。所有这些都已经完成,还有安全和会员资料。 =)