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 文件,以便用户在查看网络上的文件之前需要身份验证?我想要某种身份验证(密码/用户名),所以不是每个人都能看到它。而对于 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

一个简单的解决方案是创建一个包含 .txt 文件的目录,该目录受 .htpasswd 保护。这样,用户需要进行身份验证才能查看内容,并且您不会让自己面临无数安全漏洞的风险。

于 2013-03-05T15:18:14.350 回答
-1

您可以使用 .php 扩展名存储文件并添加标题信息以将它们作为纯文本而不是 html 提供。然后您可以在开头插入一个 php 代码,这将导致用户对自己进行身份验证。

于 2013-03-05T15:15:57.297 回答