Skip to content
Advertisement

How can i make it so that the server creates a new html page every time i post a blog on my site?

So i am trying to make the server create a new HTML file every time i create a blog on my page on the make page of my website.

So what i tried is getting all the details with $_POST with this:

HTML:

<form name="bloginput" action="blogpost.php" method="POST" class="bloginputform">
    <input type="text" name="bloginput" placeholder="Type your blog here..." id="bloginput" class="bloginput">
    <div class="popup">
    <input type="button" placeholder="Submit" id="popupbtn" onclick="toggleHideShow()">
    <span class="popuptext hide" id="myPopup">
    <input type="name" name="author" placeholder="Name:" id="nameinput" class="nameinput">
    <br>
    <input type="email" name="authoremail" id="emailinput" placeholder="E-mail..." class="emailinput">
    <br>
    <label class="filelabel" id="filelabel">
        <input type="file" name="post-image" accept="image/*" id="fileinput" class="fileinput">
        <p class="fileinputtext" id="fileinputtext">
            Upload Image:
        </p>
    </label>
    <p><button class="crossbtn" onclick="toggleHideShow()" id="crossbtn">✕</button><input type="submit" value="Post" placeholder="Post" class="submitbtn" id="submitbtn"></p>
</form>

PHP:

<?php
    $blogtext = $_POST["bloginput"];
    $author = $_POST["author"];
    $email = $_POST["authoremail"];
    $image = $_POST["post-image"];
    $Title = "My blog."
    $file = "blogposttest.html"
    $code = '
    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Blog</title>
    <link rel="stylesheet" href="CSS/Blogs.css">
</head>
<body>
    <div class="wrapperdiv" id="wrapperdiv">
        <h1 class="Title" id="Title">$Title<br>By: $author</h1>
        <br>
        <br>
        <br>
        <center>
        <img src="$image" name="Blogimage" class="blog-img" id="blog-img">
        </center>
        <br>
        <br>
        <br>
        <p class="blogtext" id="blogtext">$blogtext</p>
    </div>
</body>
</html>
';
file_put_contents($file, $code)
header("Location: http://blogmedia.nl")
?>

I would really like some help on this.

Advertisement

Answer

You have some syntax errors in your code. you can use the below code and when I test it will create an HTML file but consider that if you want to create multiple files you should give a dynamic name and also it’s better to validate your variables in PHP.

<form name="bloginput" action="#" method="POST" class="bloginputform">
    <input type="text" name="bloginput" placeholder="Type your blog here..." id="bloginput" class="bloginput">
    <div class="popup">
    <input type="button" placeholder="Submit" id="popupbtn" onclick="toggleHideShow()">
    <span class="popuptext hide" id="myPopup">
    <input type="name" name="author" placeholder="Name:" id="nameinput" class="nameinput">
    <br>
    <input type="email" name="authoremail" id="emailinput" placeholder="E-mail..." class="emailinput">
    <br>
    <label class="filelabel" id="filelabel">
        <input type="file" name="post-image" accept="image/*" id="fileinput" class="fileinput">
        <p class="fileinputtext" id="fileinputtext">
            Upload Image:
        </p>
    </label>
    <p><button class="crossbtn" onclick="toggleHideShow()" id="crossbtn">✕</button><input type="submit" value="Post" placeholder="Post" class="submitbtn" id="submitbtn"></p>
</form>


<?php
    $blogtext = $_POST["bloginput"];
    $author = $_POST["author"];
    $email = $_POST["authoremail"];
    $image = $_POST["post-image"];
    $Title = "My blog.";
    $file = "blogposttest.html";
    $code = <<<EOD
    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Blog</title>
    <link rel="stylesheet" href="CSS/Blogs.css">
</head>
<body>
    <div class="wrapperdiv" id="wrapperdiv">
        <h1 class="Title" id="Title">$Title<br>By: $author</h1>
        <br>
        <br>
        <br>
        <center>
        <img src="$image" name="Blogimage" class="blog-img" id="blog-img">
        </center>
        <br>
        <br>
        <br>
        <p class="blogtext" id="blogtext">$blogtext</p>
    </div>
</body>
</html>
EOD;
file_put_contents($file, $code)
?>

Use the below condition to check $_POST is empty or not. This resolves as true even if all $_POST values are empty string

if (!empty($_POST))
{
// Your code
}

Check specific key is available in post data. You can use this condition:

if (isset($_POST['author']) )
{

}

Using this code you can check before creating a new file to avoid rewriting an old HTML file. If the file with the same name exists:

if (file_exists( $file )) {
  // todo acction. for example create a random name for your new file. 
}
User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement