0

これは私の最初のphpスクリプトです。私は実際に vb.net でコーディングしています。.net アプリケーション用のこのライセンス システムを作成しています。このライセンス システムには、管理者が簡単に制御および表示できるマネージャーがあります。また、ログインして同じものに登録するためのクラスライブラリを作成しています。vb.net コードのみを使用してこれを行うことに成功しましたが、資格情報をアプリケーション内に保存する必要があるため、常に脅威が存在します。php を使用すると、この問題はいくらか克服できます :tongue: 。そこで、このちょっとした php スクリプトを使用して、ログイン + 登録システムを作成することにしました。mysql データベースの代わりに、管理者のみが読み書きできるテキスト ファイルを使用しています (すべてのホスティング サービスで簡単に管理できます)。それで、私はこの次のコードを思いついたので、ログイン部分を確認するのに助けが必要です. テキストファイルは次のようになります。

ユーザー名 パスワード hwid lastdate メンバーシップの種類

すべて「スペース」で区切り、1 行に 1 つのアカウントを入力します。十分な情報を提供できたことを願っています。追加情報が必要な場合は、提供します。

<?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 に答える