首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP登录系统

问用PHP登录系统
EN

Stack Overflow用户
提问于 2014-05-12 07:11:58
回答 3查看 202关注 0票数 4

日安。

我有关于登录系统的问题,这困扰了我很长时间。为此,我想让您想象一下,我有2页login.php和userpage.php。login页面包含输入用户名和密码的字段。而userpage包含有关丢失用户的所有信息。当用户输入数据时,某个类Connection会在数据库中检查他,如果用户存在,则创建一个会话。

  1. 在创建从login.php到userpage.php的重定向时,应该如何重定向用户数据?(我应该使用全局数组(如$_SESSION)来传输信息,还是应该从用户页面再次连接数据库?)
  2. 我是否应该为userpage.php创建一些多线程(不要严格判断,我是新手),以便为同时登录的多个用户创建?
  3. 我应该如何保护信息(代码方面),因为很难阅读?(例如,Facebook页面源代码。因为我不想让一些“坏人”来看我的资料)和其他东西。
  4. 我怎么能让一些用户看到其他用户做不到的事情呢?例如,userpage.php为不同的用户显示不同的链接和信息,为我显示所有的信息。
  5. 如何防止membership.php被查看?(除了使用header之外,还有其他方法吗?)
  6. 如何防止我的require和require_once在login.php和userpage.php上被查看?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-12 07:29:28

( 1.)在创建从login.php到userpage.php的重定向时,应该如何重定向用户数据?(我应该使用全局数组(如$_SESSION)来传输信息,还是应该从用户页面再次连接数据库?)。

每次要获取用户数据时,都需要连接到db。当用户成功登录时,您可以创建一个会话来存储用户的唯一属性,比如$_SESSION['id'],并且可以在任何页面上使用该值查询db并获取必要的用户数据。

( 2.)我是否应该为userpage.php创建一些多线程(不严格判断,我是新手),以便为同时登录的多个用户创建?

不,你不需要担心用户同时连接。服务器可以处理这个问题。当您有大约一百万用户时,您可以开始考虑这一点。(尽管如此,我还是不太确定。不幸的是,我从来没有遇到过这个问题;)

( 3.)我应该如何保护信息(代码方面),因为很难阅读?(例如,Facebook页面源代码。因为我不想让一些“坏人”来查看我的资料)和其他东西。

您不能阻止任何人看到您的标记和样式,即html和css,或者任何客户端脚本,比如javascript。但是,您的php是服务器端的,没有显示在源代码中。“坏蛋”将无法查看源代码来查看您的db连接、php逻辑等等。

( 4.)我怎么能让一些用户看到其他用户做不到的事情呢?例如,userpage.php为不同的用户显示不同的链接和信息,为我显示所有的信息.。

有不同的方法可以采取。最简单的方法可能是将用户的“权限级别”存储在db中,然后在每次加载内容时检查它。例如,

代码语言:javascript
复制
    if ($user['permission']==1)
        // Show something
    elseif ($user['permission']==2)
        // show something else

( 5.)如何防止查看membership.php?(除了使用标头之外,还有其他方法吗?)。

最简单的方法是检查是否有活动会话,如果没有,则重定向:

代码语言:javascript
复制
    if (!isset($_SESSION['id']))
        header("Location: login.php");

( 6.)如何防止我的需求和require_once在login.php和userpage.php上被查看?

不太清楚这是什么意思,但请考虑以下几点:require和require_once与直接包含在文件中的代码完全相同。如果您指的是客户通过点击“视图源”直接查看它们,请不要担心--参见问题3的答案。

注:

这些答案都很简单,还有很多其他的复杂问题要考虑。有些东西可能没有道理,但我不会过多地操心。我建议从小开始-找到一个或两个不错的教程,如何创建一个简单的用户数据库,注册,登录页面,并从那里开始。你在这里得到的任何答案都不会取代研究、实践和尝试与错误。从小事做起,事情就会随着你的进步而迅速变得清晰起来。

票数 4
EN

Stack Overflow用户

发布于 2014-05-12 07:18:50

  1. 将用户状态保存在cookie或会话中。请注意,如果用户连接了session_start(),则需要userpage.php页面以及页面的其余部分。关于http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL的更多信息
  2. 见上面的链接。
  3. 没有人能够读取PHP代码,因为它是服务器端,而不是客户端。因此,您的代码已经从它自己的结构中获得了安全。
  4. 让用户拥有与swl-数据库不同的级别。如果用户获得auth 1,他们会看到一些链接,如果他们获得了用户auth 2,他们会看到其他东西。
  5. 见答案1页
  6. 见答案1页
票数 3
EN

Stack Overflow用户

发布于 2014-05-12 07:36:03

考虑到你说的事实,你是新手,我也会假设登录系统是更多的实践,而不是一个现实世界的应用程序。

现在,按点回答您的问题。

  1. 在SESSION变量中存储数据是alright.However,不要在SESSIONS.I中存储太多的数据,建议只为用户存储用户is,并使用它在userpage.php中收集和显示信息。随着应用程序变得越来越大,您肯定需要在每个单独的页面中建立连接。
  2. 使用会话和COOKIE组合创建多个用户登录。但是,不要尝试实现/允许同一浏览器多次登录.安全问题。
  3. PHP源代码无论如何都不能从客户端读取,readable javascript & css-u可能会使it.But变得更小,而it.But仍然不能使客户端安全。
  4. 当管理员登录并使用它在this.Maybe上显示/隐藏信息时,有许多实现$_SESSION['admin'] =true的方法。
  5. 与NEXT相同
  6. 你想隐藏什么?如果它的HTML/JS,你没有太多的选择。一种解决方案可能是在ur php代码中使用if-else,并限制header.php中的代码以及通过require和require_once包含的页面的显示。

这是一个非常基本的guide.Your策略,取决于应用程序的复杂性以及是否/何时开始使用framweorks。登录愉快!!

将 wrt添加到应用程序结构中。考虑到您的最终产品将是一个允许用户注册和登录/注销的系统,我建议首先使用以下结构。

结构-

代码语言:javascript
复制
index.php
    |--action    
         |---register.php
         |---logged_in_user_landing.php
  1. index.php--这是主页,用于根据操作重定向到各个页面。检查是否设置了会话。 If yes,action/logged_in_user_landing.php else包括action/register.php。 随着操作的增加,您可以添加if-else并相应地包含更多的页面。
  2. 在register.php,中,您有登录表单。在提交时,重定向到index.php (通过表单操作)。
  3. 在索引页中建立db连接并检查用户名-密码combination.If正确,为该用户设置会话并包含‘action/logged_ user _landing.php’。
  4. 在从每个单独的页面重定向时发送一个唯一的标识符,以便您能够识别在index.php中要做什么。

这是一种非常简单的体系结构,它应该可以使u started.Its成为一种基于控制器的体系结构,并且在将来进入MVC体系结构时将对您有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23603052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档