Запись из формы на странице при отправке каждый раз в рандомный txt
Есть два файла index.php и lib.php
Код в index.php
<body>
<?php
require_once 'lib.php';
?>
<form action="index.php" method="post" target="_self"></form>
<input type="text" name="user_name" id="">
<input type="text" name="user_tel" id="">
<input type="submit" name="btn" id="" value="Send">
</form>
</body>
lib.php
<? php
function testPost() {
if ($_POST["btn"]) {
$rez = "";
if (trim($_POST["user_name"])=="") $rez = "Error!";
else if (trim($_POST["user_tel"])=="") $rez = "Error!";
else {
$info = "Name: ".trim($_POST["user_name"]).
"Tel: ".trim($_POST["user_tel"]);
$file_name = "request".rand(1000000,9999999).".txt";
$rez = "Ok!";
$f = fopen("./doc/".$file_name, "w");
if ($f) {
fwrite($f,$info);
fclose($f);
}
}
echo "that's Ok)";
}
}
?>
Ответы (1 шт):
Автор решения: DiD
→ Ссылка
<?php
if ($_POST["btn"]) {
$rez = "";
if (trim($_POST["user_name"])=="") $rez = "Error!";
else if (trim($_POST["user_tel"])=="") $rez = "Error!";
else {
$info = "Name: ".trim($_POST["user_name"])."\n".
"Tel: ".trim($_POST["user_tel"]);
$file_name = "request".rand(1000000,9999999).".txt";
/* вместо rand(1000000,9999999) лучше заюзать на выбор:
* - md5($info)
* - base64_encode(random_bytes(10))
* - date("YmdHis")
*/
$rez = "Ok!";
$saveBytes = file_put_contents(__DIR__."/doc/".$file_name, $info);
/* вместо fopen()..fclose() в php используют
file_put_contents() */
echo $saveBytes;
}
echo "that's Ok)";
}
?>
Если запись не происходит, то вероятен один из следующих исходов:
- Неправильные права на папку или на родителей папки.
- Неправильный контекст SELinux.
- Закончилось место на жёстком диске или упёрлись в квоту на хостинге.