2014-02-06 64 views
0

因此,我试图建立一个不使用MySQL的登录脚本,因为我根本没有任何经验,所以我需要等待一年,直到我可以注册一个在我们学校的课程。没有MySQL的PHP​​登录系统

我接近这一思想:

用户需要输入用户名和一个邀请码登录。我想要一个.txt文件(我知道这是不安全的,但不管怎么说),其中存储了被接受人的用户名和邀请密钥。 PHP脚本将发送的凭证与存储在.txt中的凭证进行比较。如果匹配,则会登录,如果不匹配,则会中止。

那么,如何从.txt读取数据,以及如何格式化.txt,以便我的脚本可以在用户名和邀请码之间有所不同?

这里是我到目前为止有:

if(isset($_POST['auth']) && $_SERVER['REQUEST_METHOD'] == 'POST'){ 

    session_start(); 

    $usr=$_POST['user']; 
    $invkey=$_POST['key']; 

    function authenticate($usr, $invkey){ 

    } 
} 

提前感谢! PS:我知道这将是非常不安全的,所以如果你觉得无聊,你可以给我提示我如何保护它。 :)

+0

为了安全使用。htaccess,并从文本文件中读取是一种非常基本的事情,试图在互联网上搜索它。 – 2014-02-06 18:15:39

+0

我会推荐一个格式正确的CSV文件来存储这些东西 – MonkeyZeus

回答

0

您可以将用户名和密钥保存在一个字符串中,一个用户每行在一个txt文件中。

user1|user1_inv_key 
user2|user2_inv_key 
... 

所以,你可以使用fgets()explode()

您的代码应该是这样的:

if(isset($_POST['auth']) && $_SERVER['REQUEST_METHOD'] == 'POST'){ 

    session_start(); 

    $usr=$_POST['user']; 
    $invkey=$_POST['key']; 

    function authenticate($usr, $invkey){ 
     $fh = fopen('auth.txt', 'r'); 
     if ($handle) { 
      while (($line = fgets($handle)) !== false) { 
      // Exploding the line, using | as separator. 
      $info = explode($line, '|'); 
      $username = $info[0]; 
      $key = $info[1]; 
      if($usr == $username && $key == $invkey) return true; 
      } 
     } else { 
     // error opening the file. 
     } 
     // Return false because something went wrong or data wasn't correct. 
     return false; 
    } 
} 
0

你将不得不做一些像

$txt_file = file_get_contents('path/to/file.txt'); 

然后,你可以根据每个用户,或者一个新行或某事的分隔符爆炸$ txt_file。然后,你可以一个新的用户喜欢的东西

file_put_contents("path/to/file.txt", $user_string, FILE_APPEND); 

保护它,你可以为用户保存密码的单向散列的产品,如MD5添加到您的文件。

$salt = 'whatever you want'; 
$securish_pw = md5($password.$salt); 

然后存储。然后,有人登录,您在txt文件中找到他们的行,通过相同的md5函数输入他们的比较密码,如果他们相同,则您登录。这样,您不会存储纯文本密码。

所有说,你应该学习一点关于如何使用数据库。如果您使用PHP的PDO库,并且有一百万个教程解释如何完成您想要完成的任务,这非常简单。