当点击时如何创建一个新的 .html 网页?

3
我想做的是,当用户单击我的HTML按钮时,我希望动态创建一个新的网页在服务器上。我需要新网页的URL有自己的URL,也就是说,它应该与其他网页不同。
更详细地说:当用户单击按钮时,我想将新的.html文件上传到服务器。例如,如果我有一个名为www.check.com/index.html的网站,当用户单击index.html中的按钮时,我需要创建一个包含一些HTML代码行(但没有CSS,页面上不会显示任何东西)的新.html文件。因此,当用户单击按钮时,我希望上传一个文件到具有唯一URL的服务器,例如www.check/1.html,第二次则为check.com/2.html等等。我可以接受它是1.html,2.html等等。
Javascript代码:
 function makePage(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200)
    alert("webpage " + xmlhttp.responseText + " was successfully created!");
}
var content = "<html><head></head><body><meta name=\"twitter:card\" content=\"summary_large_image\"><meta name=\"twitter:site\" content=\"@nytimes\"><meta name=\"twitter:creator\" content=\"@SarahMaslinNir\"><meta name=\"twitter:title\" content=\"Parade of Fans for Houston’s Funeral\"><meta name=\"twitter:description\" content=\"Blah Blah Blah content.\"><meta name=\"twitter:image\" content=\"\"><script>document.getElementById(\"imgTweet\").innerHTML.write(img);</script></body></html>";
xmlhttp.open("GET","makePage.php?content=" + content,true);
xmlhttp.send();}

“img”是我另一个页面中的变量。网页是由代码创建的,但没有执行。

3
您需要三个东西:(1)一个HTML按钮和JS代码,通过AJAX访问PHP脚本。 (2)一个PHP脚本,从数据库获取自动递增的数字,创建并保存HTML文件使用该自动递增的数字。 (3)一个具有一个表和一个自动递增ID字段的数据库。 - MonkeyZeus
你是否在使用框架?这允许基于URL变量创建页面。看起来你需要从那里开始。Laraval似乎很受欢迎,但最好去找一个MVC框架的视频教程,以构建自己简单版本,这样你可以学习一些基础知识。 - Daniel
1个回答

5

你必须使用AJAX来执行php。通过file_put_contents(),在php中创建新文件非常简单。

以下是一个示例:
makePage.html:

    <html>
    <body>
    <button onclick="makePage()">click</button>
    <script src="makePage.js">
    </script>
    </body>
    </html>

makePage.php:

<?php
$content = $_GET["content"];
$file = uniqid() . ".html";
file_put_contents($file, $content);
echo $file;
?>

makePage.js

function makePage(){
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState==4 && xmlhttp.status==200)
        alert("webpage " + xmlhttp.responseText + " was successfully created!");
    }
    var content = "<html><head><meta charset=\"utf-8\" /> </head><body>new website<script>alert(\"test\")</script></body></html>";
    xmlhttp.open("GET","makePage.php?content=" + content,true);
    xmlhttp.send();
}

希望这能有所帮助。


AJAX脚本已包含在“makePage.html”中。 - Peter G
好的,谢谢,我会尝试你的方法。我已经在问题中添加了一点内容。 - KidCoder
它完全按照您的要求工作,只需从.php文件中删除"path /"并编辑.html中的"content"变量以获取您想要在新页面中拥有的文本。而且,除非同时制作两个页面,否则php uniqid()将为您提供唯一名称。 - Peter G
非常感谢!它起作用了!这是如何工作的,文件保存在哪里? - KidCoder
通过编辑 .php 中的“$file”,您可以设置文件存储的位置,如果删除“path/”,则文件将存储在与 .php 文件相同的文件夹中。您可以在互联网上找到更多关于 file_put_contents() 的信息。 - Peter G
显示剩余17条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接