0

フォームから値を取得し、フォームに新しい値が入力されるたびにテキスト ファイルに追加する次のスクリプトがあります。

$filename = "nic.txt"; #Must CHMOD to 666, set folder to 777
$text = "\n" . str_pad($fname, 30) . "" . str_pad($lname, 30) . "" . str_pad($tdate, 20) . "" . str_pad($ydept, 30) . "" . str_pad($percentage, 0) . "%";

$fp = fopen ($filename, "a"); # a = append to the file. w = write to the file (create new if doesn't exist)
if ($fp) {
    fwrite ($fp, $text);
    fclose ($fp);
    #echo ("File written");
}
else {
    #echo ("File was not written");
}

問題は、データを保存する際に保護されていないtxtファイルに書き込む代わりに、phpファイルに追加して、ユーザーがWeb上でファイルを表示する前に認証を必要とするようにするにはどうすればよいですか? 何らかの認証 (パスワード/ユーザー名) を設定して、誰もが見られないようにしたい. そしてtxtファイルでは、それは不可能だと思います。

最適なオプションが見つかるまでコメントアウトしたデータファイルへのSQL書き込みは次のとおりです。

// Write to DB
//$conn = new mysqli('host', 'user', 'pass', 'db');

// check connection
//if (mysqli_connect_errno()) {
//  exit('Connect failed: '. mysqli_connect_error());
//}

// store the values in an Array, escaping special characters for use in the SQL statement
//$adds['fname'] = $conn->real_escape_string($fname);
//$adds['lname'] = $conn->real_escape_string($lname);
//$adds['tdate'] = $conn->real_escape_string($tdate);
//$adds['ydept'] = $conn->real_escape_string($ydept);
//$adds['percentage'] = $conn->real_escape_string($percentage);

// sql query for INSERT INTO users
//$sql = "INSERT INTO keepScore ('fname', 'lname', 'tdate', 'ydept', 'percentage' ) VALUES ('". $adds['fname']. "', '". $adds['lname']. "', '". $adds['tdate']. "', '". $adds['ydept']. "', '". $adds['percentage']. "')"; 

// Performs the $sql query on the server to insert the values
//if ($conn->query($sql) === TRUE) {
//  echo 'users entry saved successfully';
//}
//else {
//  echo 'Error: '. $conn->error;
//}

//$conn->close();
4

4 に答える 4

6

テキスト ファイルを Web サーバーのドキュメント ルートから離し、PHP スクリプトを使用して、ファイルの読み取り時に認証/承認を提供します。

をご覧くださいreadfile()

于 2013-03-05T15:13:00.867 に答える
4

PHPファイルテキストファイルです。あなたが求めていることを達成するには、ただ$filename終わらせるだけです.php(人々が追加するデータが単なるデータであり、実行可能なコードではないことを確認してください).

…しかし、コードをプログラムで編集することは良い考えではありません。Web ルートの外のどこかにデータを保存し (おそらくファイルに保存しますが、データベースの方がよいでしょう)、auth/authz が渡されたときにスクリプトでデータを取得します)。

于 2013-03-05T15:12:58.253 に答える
1

簡単な解決策は、.htpasswdで保護された.txtファイルを含むディレクトリを作成することです。このように、ユーザーはコンテンツを表示するために認証する必要があり、膨大な数のセキュリティの脆弱性のリスクにさらされることはありません。

于 2013-03-05T15:18:14.350 に答える
-1

ファイルを .php 拡張子で保存し、ヘッダー情報を追加して、html ではなくプレーン テキストとして提供できます。次に、ユーザーが自分自身を認証するようにする php コードを先頭に挿入できます。

于 2013-03-05T15:15:57.297 に答える