0

だから私はphpでこのログインスクリプトを書いています。私は mysql のようなデータベースを使用しないことを選択しているので、ユーザー名を 1 つのファイルに保存し、ハッシュを別のファイルに保存しています。次に、ユーザー名ファイルを検索し、ユーザー名がどの行にあるかを見つけます。次に、ハッシュ ファイルの同じ行を読み取り、ユーザーが入力したハッシュを比較します。何らかの理由で、ユーザー名がファイルの最後のユーザー名または最初のユーザー名である場合にのみ機能します。つまり、ユーザー名が最初または最後でない限り、$inFileUsernameKey には値がありません。これが私のコードです:

    //Above is the code to get username and password from html forum and generate hash.
    $usernameFileHandle = fopen("passStuff/usernames.txt", "r+");
    $usernameFileContent = file_get_contents("passStuff/usernames.txt");
    $usernameFileContent = explode("\n", $usernameFileContent);
    //Using fopen() and fclose b/c at some point I will be adding in a account creation section
    fclose($usernameFileHandle);

    $hashFileHandle = fopen("passStuff/hash.txt", "r+");
    $hashFileContent = file_get_contents("passStuff/hash.txt");
    $hashFileContent = explode("\n", $hashFileContent);
    //Using fopen() and fclose b/c at some point I will be adding in a account creation section
    fclose($hashFileHandle);

    $inFileUsernameKey = array_search($username, $usernameFileContent);
    $inFileUsername = $usernameFileContent[$inFileUsernameKey];
    $i = 0;
    echo "usernameFileContent: <br>";
    while($i < count($usernameFileContent)){
        echo "&nbsp&nbsp&nbsp&nbsp", $i, ": ", $usernameFileContent[$i], "<br>";
        $i = $i + 1;
    }
    echo "<br>";
    $i = 0;
    echo "hashFileContent: <br>";
    while($i < count($hashFileContent)){
        echo "&nbsp&nbsp&nbsp&nbsp", $i, ": ", $hashFileContent[$i], "<br>";
        $i = $i + 1;
    }
    echo "In File Username: ", $inFileUsername;
    $inFilePassword = $hashFileContent[$inFileUsernameKey];
    $inFilePassword = trim($inFilePassword);
    echo "<br>Username Key: ", $inFileUsernameKey;
    echo "<br>In File Hash: ", $inFilePassword;
    echo "<br><br>Login: ";
    if(strcmp($inFilePassword, $loginInputHash) == 0){
        echo "<div style='color: #0DFF00'>Accepted</div>";
    }
    if(strcmp($inFilePassword, $loginInputHash) != 0){
        echo "<div style='color: #FF0000'>Denied</div>";
        echo "STRCMP COMPARE: ", strcmp($inFilePassword, $loginInputHash);
    }

なぜこれが機能しないのか、誰にもわかりませんか?私のphp noob-nessを許してください。前もって感謝します。

4

0 に答える 0