Запись из формы на странице при отправке каждый раз в рандомный 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)";
    }
?>

Если запись не происходит, то вероятен один из следующих исходов:

  1. Неправильные права на папку или на родителей папки.
  2. Неправильный контекст SELinux.
  3. Закончилось место на жёстком диске или упёрлись в квоту на хостинге.
→ Ссылка