2012-02-11 99 views
-4

我维护农贸市场网站。该网站的一部分包括一个数据库,其中包含所有不同的农民以及他们本周正在收获的东西。密码保护,同时跟踪谁是谁

目前我有一组管理页面,由于我没有告诉任何人他们在哪里,而被公众隐藏。通过管理页面,我可以根据需要编辑数据。随着越来越多的农民参与其中,我们需要更新他们的数据,并且我想设置它,这样每个农民都可以注册,使用自己的密码登录并在本周没有参与的情况下编辑他们在市场上的信息。

我已经看到了大量的密码保护页面的脚本。我所看到的那些已经成立了,这样一旦用户登录,他们可以查看一切,似乎没有成为一个简单的方法来跟踪谁在签署的。

如何建立密码保护,同时跟踪谁是谁,以便我可以即时构建自定义管理页面?请记住任何提示或最佳做法?

感谢,

布兰登 附:我一直在使用PHP和SQLite

+0

我不明白你的问题。你想要让每个用户都登录并编辑他自己的信息更特别吗? – 2012-02-11 13:10:08

+0

这是一个非常广泛的问题,在这里可能无法有效回答。听起来好像你需要看CMS。你可以谷歌,并选择一个适合。它会为您节省一大笔重金。 – vascowhite 2012-02-11 13:11:56

+0

目前我有一个管理页面,由于我没有告诉任何人这个事实,这个页面对公众是隐藏的......大声笑。你正在问麻烦的家伙.... – itachi 2012-02-11 15:29:01

回答

0

请按照您在网上找到的这些脚本。

所有它归结为:

  • 注册页面来收集用户的详细信息,在节省检查每个字段是有效的,同时检查所有必填字段(即使用正则表达式来检查电子邮件地址是有效的。)完成
  • 如果上述所有检查出来,然后保存到数据库后,你已经消毒的数据(我们不希望任何SQL注入吧!)
  • 我建议至少保存密码作为散列,所以请使用类似md5()的东西,我也会使用一个salt键(比如MD5($ password。$ salt)) - SALT可以是最短的当用户注册时,一串随机的字母/数字(我推荐) - 并将其保存到数据库中。
  • 当用户登录时,检查数据,检查用户名是否存在,并抓取匹配条目的salt键,然后用SALT键MD5输入密码并查看字符串是否匹配
  • 将某种标志保存到$ _SESSION,例如。$_SESSION['loggedin'] = true;然后在每个受保护的页面的顶部,你可以在例如做一些像下面
  • 你也可以再保存时间戳(time())或日期时间(date("Y-m-d H:i:s"))到数据库中标记last_logged_in

一栏下我知道这是不是一个代码负载,但它形成了一个基本的指南,让你开始

例以上

if($_SESSION['loggedin'] !== true){ 
    header("Location: login.php"); 
    exit; 
} else { 
    // rest of protected page 
} 
+0

谢谢你非常清楚待办事项列表,这将有很大的帮助。我需要跟踪谁在保持安全的情况下进行哪些会话?我在猜测,我应该做的不仅仅是在会话中将用户ID分配给会话中的变量,然后在切断页面之前检查该变量?或者它真的很简单吗? – Brandan 2012-02-11 17:50:21

+0

在会话中存储类似用户ID的东西也是一个好主意,以及令牌(在数据库和用户登录的每个会话中生成并存储新的令牌) - 然后,您可以将用户ID与如果令牌不匹配 - 为了安全防范,将用户自动注销。还有其他一些细微的东西可以添加,例如超时(因此将最后一个操作作为时间存储在数据库中,如果时间过长,则自动将用户注销)。如果这有帮助,随时打勾它作为答案:) – MrJ 2012-02-11 19:00:32

0

确保每个用户都有唯一的登录(最好是电子邮件)和密码。然后创建一个带有2个用户名和密码输入字段的表单,并在回发之后,将值与数据库进行匹配。如果数据匹配,请将user_id(或更多用户数据)存储在会话中。

0

为了找出谁是谁,我会使用会话($ _ SESSION变量)

做一些简单的登录页面,设置一些id或使用电子邮件作为登录,如果你想你可以做一些注册页面。

使用随机字符串作为用户的密码,将其发送给他们并告诉他们在首次登录时更改密码。

请勿在数据库中存储密码。只使用密码散列(例如sha512)。如果您想提高安全性,请使用某些服务器盐或用户盐。 在每次登录时比较用户输入的口令密码以及存储在数据库中的密码。 注意SQL注入漏洞,我会建议使用PDO并插入变量作为参数。

0

您可以使用Basic HTTP-Auth或根据Sessions建立自己的。在这两种情况下跟踪用户都非常简单(分别为唯一名称和会话ID)。