Chcę utworzyć stronę formularza php. Po przesłaniu automatycznie tworzy statyczną stronę html z wypełnionymi danymi formularza w lokalnym katalogu serwera WWW. powiedz mi proszę, jak mogę to zrobić.

0
Rohan Verma 16 czerwiec 2021, 13:19

2 odpowiedzi

Najlepsza odpowiedź

Ponieważ trudno jest nam pisać html, meta tag itp. za każdym razem w textarea ....

Tak więc utworzenie pliku szablonu, a następnie używanie go jako bazy, a na koniec edytowanie tylko tagu body i title (możesz zrobić więcej), znacznie ułatwia życie...

Najpierw musimy stworzyć plik.php, który wykorzystuje całą logikę tworzenia nowego pliku i wstrzykiwania całego kodu (używając metody php fopen, która tworzy nowy plik i file_put_contents, która umieszcza w nim wszystkie dane).

Po drugie, tworzymy plik szablonu, z którego zużyty jest cały boilerplate. (Zawiera jakąś zmienną, taką jak {BODY} ).

Na koniec używamy pliku.php wypełniając formularz i pobierając wszystkie wymagane dane wejściowe (pobierając wszystkie dane wejściowe i używając pętli do zmiany wszystkich zmiennych szablonu z wprowadzonymi danymi wejściowymi).

plik.php

   <?php
    if ($_SERVER["REQUEST_METHOD"] === "POST") {
      if (isset($_POST['filename'])) {
        $body = $_POST['body'];
        $title = $_POST['title'];
        $swap_var = array(
          "{BODY}" => $body,
          "{TITLE}" => $title
        );
        $template = "template.php";
        if (file_exists($template)) {
          $html = file_get_contents($template);
        } else {
          die ("Unable to locate your template file");
        }
        foreach (array_keys($swap_var) as $key) {
          if (strlen($key) > 2 && trim($swap_var[$key]) != '')
    
            $html = str_replace($key, $swap_var[$key], $html);
        }
         $filename = $_POST['filename'];
          if (!file_exists($filename)) {
            fopen($filename, "w");
          }
         file_put_contents($filename , $html);
      }
    }
    ?>
    
    
    <!DOCTYPE html>
    <html>
    <head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      <meta name="viewport" content="width=device-width">
      <title>Creating and adding text in File</title>
      <style type="text/css" media="all">
        input , textarea {
          width: 100% ;
        }
        body{
          padding: 10%;
        }
      </style>
    </head>
    <body>
      <form action="file.php" method="post" accept-charset="utf-8">
        <input type="text" name="filename" id="filename" placeholder="Enter Filename (with extension like .html)" />
        <br>
        <br>
        <input type="text" name="title" id="title" placeholder="title" />
        <br>
        <br>
        <textarea name="body" id="body" rows="8" placeholder="enter body"></textarea>
        <br>
        <br>
        <button type="submit">Create New html file</button>
      </form>
    </body>
    </html>

szablon.php

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width , initial-scale=1.0">
    <title>{TITLE}</title>
  </head>
  <body>
    {BODY}
  </body>
</html>

Upewnij się, że utworzyłeś te 2 pliki w tym samym katalogu i zauważ, że ten kod wygeneruje wszystkie nowe pliki w tym samym katalogu co te 2 pliki. Pamiętaj, że zawsze możesz zmienić lokalizację generowania nowych plików.

1
Sanmeet 16 czerwiec 2021, 11:31

Możesz użyć funkcji plików php, takich jak przykład.

$myfile = fopen("WHATEVER_THE_FILENAME_YOU_WANT.html", "w") or die("Unable to open file!");
$data = """
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>

ECHO YOUR FORM DATA HERE.

</body>
</html>
""";
fwrite($myfile, $data);
fclose($myfile);
0
Pranav Ghodake 16 czerwiec 2021, 11:01