2011-01-16 12 views
0

私は自分のサーバーで認証を設定しようとしていますが、私はPHPについてほとんど知っていません。PHP:ファイルにテキストを追加する

私は、ユーザーとパスワードで満たされたPHPファイルがあります:手動でパスワードの配列を編集せず

function getPassword($user) 
{ 
    // the user/password database. For very small groups 
    // of users, you may just get away with expanding this 
    // array. 
    $passwords= array (
     'user1' => 'password1', 
     'user2' => 'password2', 
     'user3' => 'password3', 
     'user4' => 'password4' 
     ); 
    $password = $passwords[ $user ]; 
    if (NULL == $password) 
     return NULL; 

を、私は、PHPファイルはユーザー名とパスワードのためのユーザ入力を読み込み、配列にそれを追加したいです。

<?php 
function fwrite_stream($fp, $string) { 
    $fp = fopen('shit.php', 'w'); 
    for ($written = 0; $written < strlen($string); $written += $fwrite) { 
     $fwrite = fwrite($fp, substr($string, $written)); 
     if ($fwrite === false) { 
      return $written; 
     } 
    } 
    return $written; 
    fclose($fp); 
} 
?> 

がどのように私は、アレイへの書き込みにこれを教えてください:

私はドキュメントを調べて、これが仕事ができるかの漠然とした考えを持っていますか?

+0

はEDIT:実は、私は何を考えます私はやっているが間違っている。おそらく私が使うはずの機能は次のとおりです:http://uk.php.net/manual/en/function.file-put-contents.php – dukevin

+0

パスワードはプレーンテキストで保存するのではなく、そのハッシュだけを保存してください([ 'crypt'](例えばhttp://php.net/crypt)を参照してください)。 – Gumbo

答えて

1

で内容を取得後

(もちろん、あなたがエスケープ適用する必要がありますおよび/またはユーザ名/パスワードの確認)あなたの最善の策はfile_put_contents('filename.txt', "\"$username\",\"$password\\n" FILE_APPEND);だと思いますPHPスクリプトのユーザー名とパスワードのリスト私の代わりに、ディスクからの配列を読み取るため、このような何かをするだろう:

// Web server must have read permission for the file, 
// but it should be placed outside of public_html 
// for security reasons. 
$gPasswordFile = '/home/kevin/password.db'; 

// Read the password file's entire contents as a string. 
$contents = file_get_contents($gPasswordFile); 

// Unserialize the file's contents, assuming an empty array 
// if the file does not exist. 
$passwords = $contents ? unserialize($contents) : array(); 

ディスクに配列を書き込むために:

file_put_contents($gPasswordFile, serialize($contents)) or die('Could not save password file!'); 

あなたが公共のウェブサイト上として数千のユーザーを持っているとしたら、試行されたログインごとにユーザーデータベース全体をロードするのは非効率的です。その後、MySQLなどの実際のDBMSに情報を格納する可能性が高くなります。 (。。注意点として、あなたが本当にパスワードファイルの妥協の影響を制限するために、ユーザーごとの塩でパスワードをハッシュ化されなければならないけれども別の質問のためにそれを保存します)

1

私が今やろうとしていることに強くお勧めします。なぜパスワードを別のファイルに保存し、そのスクリプトを読み書きするのはなぜですか?このようにPHPを操作することは、ユーザがそれに投げるかもしれないあらゆる種類の入力を心に留める必要があるので、問題を求めています。

私はハードコードしません$passwords = fgetcsv('filename.txt')