0

这是我的第一个 php 脚本。我实际上是在 vb.net 中编写代码。我正在为 .net 应用程序制作这个许可系统。该许可系统有一个管理员可以轻松控制和查看的管理器。我也在制作一个类库来登录和注册。我仅使用 vb.net 代码就成功了,但由于凭据需要存储在应用程序中,因此总是存在威胁。使用 php 可以稍微克服这个问题 :tongue: 。所以我决定使用这种 php 脚本制作登录 + 注册系统。我正在使用仅管理员读取、写入文本文件而不是 mysql 数据库(所有托管服务都易于管理)。所以,我想出了下面这段代码,我需要一些帮助来确认登录部分。文本文件是这样的:

用户名密码 hwid lastdate 会员类型

全部由“空格”分隔,每行一个帐户。我希望我已经提供了足够的信息,如果需要额外的信息,我会提供。

<?php
$user = addslashes($_GET['username']);
$pass = addslashes($_GET['password']);

  $username = "theusername";  
  $password = "thepassword";  
  $url = "mywebsite.com/file.txt";
  $hostname= "ftp://$username:$password@$url";  
  $contents = file_get_contents($hostname); 
// That gives me the txt file which can only be read and written by the admin
if (strpos($contents,$user) !== false) {
   // Need code here to check if the adjacent word and the $pass are same to establish a successfull login
} else {
 echo "Username does not exist, please register"
}
?>
4

1 回答 1

1

试试这个,希望对你有帮助:

file.txt 需要采用这种格式,以:、 空格分隔的值不是分隔值的好方法。

username:password:hwid:lastdate:membershiptype

PHP位:

<?php
$user = $_GET['username'];
$pass = $_GET['password'];

if(check_auth(get_auth(),$user,$pass)==true){
    echo 'Yes';
}else{
    echo 'No';
}

/**
 * This function will grab the text file and create a user array
 * 
 * @return array(0=>username,1=>password)
 */
function get_auth(){
    $username = "theusername";
    $password = "thepassword";
    $url = "mywebsite.com/file.txt";
    $location = "ftp://$username:$password@$url";

    $users = file($location);
    function split_auth(&$value){
        $value = explode(':',$value);
    }
    array_walk($users,'split_auth');
    return $users;
}

/**
 * This Function will check the username and password
 *  against the users array
 *
 * @param array $users
 * @param string $username
 * @param string $password
 * @return bool (true|false)
 */
function check_auth($users,$username,$password){
    foreach($users as $user){
        if($user[0]==$username && $user[1]==$password){
            return true;
        }
    }
    return false;
}
?>
于 2012-05-20T04:19:04.260 回答