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

创建PHP登录页面的最佳方法是什么?,php,authentication,login,session,Php,Authentication,Login,Session,我对PHP相当陌生,正在寻找一些关于如何在PHP中实现身份验证的最佳实践 我是Adobe的传道者,让我烦恼的一件事是人们在登录屏幕上使用Flex/Flash。因此,我想做一篇关于使用HTML/PHP登录页面的博客文章/示例,然后在设置会话后将会话信息传递给Flex 我仍然在思考PHP创建有效会话所需的内容以及如何设置cookie。因此,与此相关的示例或信息将非常有用 提前感谢, =瑞安ryan@adobe.com这是一个相当广泛的话题。然而,对会话/cookie的良好理解将是一个良好的基础。你应

我对PHP相当陌生,正在寻找一些关于如何在PHP中实现身份验证的最佳实践

我是Adobe的传道者,让我烦恼的一件事是人们在登录屏幕上使用Flex/Flash。因此,我想做一篇关于使用HTML/PHP登录页面的博客文章/示例,然后在设置会话后将会话信息传递给Flex

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

提前感谢,


=瑞安ryan@adobe.com这是一个相当广泛的话题。然而,对会话/cookie的良好理解将是一个良好的基础。你应该看看——他有很多关于这些话题的好帖子

我是Adobe的传道者,让我烦恼的一件事是人们在登录屏幕上使用Flex/Flash。因此,我想做一篇关于使用HTML/PHP登录页面的博客文章/示例,然后在设置会话后将会话信息传递给Flex


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

转储PHP并进入ASP.NET。所有这些以及安全和成员详细信息都已完成。=)

如前所述,在PHP中创建一个健壮、安全的身份验证系统需要做很多工作,但基本原理很容易掌握

您要做的第一件事是调用
session\u start()
。完成此操作后,您可以使用
$\u会话
超全局获取和设置会话变量:

session_start();
$_SESSION['foo'] = $foo;
$bar = $_SESSION['bar'];
完成此操作后,您可以在成功登录后为当前用户设置登录详细信息,并使其在页面上保持不变(记住在使用前调用
session\u start
)。此外,在将任何内容发送到浏览器之前,必须调用
session\u start

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

网站上有很多有用的信息


Cookie可以使用函数进行操作。

创建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\u connection变量是链接标识符-mysql\u connect()或mysql\u pconnect()的结果。

Lol此注释毫无价值,只是燃烧而已。但我认为他现在已经有足够多的反对票了。我希望在几年前我开始使用PHP时,有人能给我这样“毫无价值”的建议有人想要一堆PHP架构师杂志吗?把它们放在壁炉里太可惜了。在很多情况下,Flash/Flex将处理会话并直接与PHP对话以进行身份验证。因此,我想做的是使用Flash Player中的HTML挂钩来提取“普通”cookie/会话信息,这些信息将用于常规PHP登录页面,并将其传递给Flash Player,以便播放器可以向PHP服务器发出经过身份验证的请求你的意思是我应该在检查登录凭证之前这么做吗?这似乎是实现它的正确方法,然后在成功登录时,我会更改这些会话变量(例如,将$\u session['logged\u in']从false更改为true)。是吗?是的,没错。在未初始化会话之前,无法访问
$\u会话
;你必须在每一页上都这样做。在SQL查询中直接使用用户名和密码是非常不安全的,不利于SQL注入。在SQL查询中使用之前,至少应该使用htmlentities函数清除用户名和密码。仅供参考。@subet当我看到上面的代码时,我刚刚遇到了一个“这东西是谁写的”的人。是的,绝对不要像我在回答中做的那样,对输入进行消毒。另外,注释(在代码中)中也提到了它,您可能想看看哪个是框架无关的,哪个是数据库无关的。