本人因为要想自己写个小说网站练练手,在其中遇到的一些问题,将其解决方法总结出来,例如:
1:小说网站存储了大量的小说,每个小说主页都很相似,url不同,不是使用的history属性改写的,所以如果人工想写的话,那工作量就很大
如下图,用起点小说网来参考,放上我最爱的两本书
在这里我们将其url都当成html文件,不考虑url重写问题
所以,今天我就将我的解决方案放入其中,算是批量生成html文件
先写个数据提交网页:文件名为other.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title></title>
6 </head>
7 <body>
8 <!--输入你想让显示的内容-->
9 <input type="text" name="name" id="name" value="" />
10 <!--提交ajax-->
11 <button id="btnn">提交</button>
12 <!--提交成功后,则会通过数据库连接获取连接地址-->
13 <a href="" target="_blank"></a>
14 <!--js-->
15 <script src="js/jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script>
16 <script type="text/javascript">
17 $("#btnn").on('click',function(){
18 var name = $("#name").val();
19 //jq 的ajax请求
20 $.ajax({
21 type:"post",
22 url:"//127.0.0.1:9090/Project01/php/creathtml.php",
23 async:true,
24 data:{"name":name},
25 dataType:"JSON",
26 success:function(r){
27 console.log(r.token);
28 var hr="http://127.0.0.1:9090/Project01/php/ceshi/"+r.token+".html";
29 $('a').attr('href',hr);//改变a链接地址
30 $('a').text(r.token);//改变a链接访问跳转
31 }
32 });
33 })
34 </script>
35 </body>
36 </html>
接下来为php处理接受数据:文件名为creathtml.php
1 <?php
2 //引入mysql连接配置
3 require './config.php';
4 //接受other.html ajax请求过来的数据
5 $name = $_POST['name']; //ajax的data:{"name":name}
6
7 //判断$name是否存在
8 if (isset($name)) {
9 //mysql查询语句
10 $query_select = 'SELECT t1.token FROM ceshi t1 WHERE content="' . $name . '"';
11 //运行mysql语句,返回MySQL查询结果集,是个句柄
12 $result_select = @mysql_query($query_select) or die($error);
13 //将mysql查询结果集转为数组
14 $row_select = mysql_fetch_array($result_select, MYSQL_ASSOC);
15 //判断是否存在,存在则结束,本文为了方便,不写重复结果的返回处理
16 if ($row_select) {
17 echo "if(row)";
18 } else {//输入的不存在
19 //将其内容插入进去,并且生成个唯一标识符token,并对uuid处理 使其从 1600d45d-42e1-11e7-8106-1C39472981ff 转为 1600D45D42E111E781061C39472981FF
20 $query_insert = 'INSERT INTO ceshi VALUES(UPPER(REPLACE(UUID(),"-","")),"' . $name . '")';
21
22 $result_insert = @mysql_query($query_insert) or die($error);
23 //查询出其内容对应的token
24 $query_token = 'SELECT t1.token FROM ceshi t1 WHERE content="' . $name . '"';
25
26 $result_token = @mysql_query($query_token) or die($error);
27
28 $row_token = mysql_fetch_array($result_token, MYSQL_ASSOC);
29 //将其token值提取处理
30 $token = $row_token[token];
31 //在本程序文件下,将其创建的目录写成字符串
32 $path = "ceshi/";
33 //判断目录是否存在
34 if (is_dir($path)) {//目录存在,则直接复制并且重命名文件
35
36 //找到模板文件
37 $old = "win.html";
38 //复制的新文件写成一个字符串
39 $new = $path . $token . '.html';
40 //将其复制到上面创建的目录中,并且重命名为token
41 copy($old, $new);
42 //token的数组转为json数据返回 ajax请求的为dataType:"JSON"
43 echo json_encode($row_token, JSON_UNESCAPED_UNICODE);
44
45 } else {
46 //目录不存在则创建
47 $res = mkdir($path);
48 if ($res) {
49
50 $old = "win.html";
51 $new = $path . $token . '.html';
52
53 copy($old, $new);
54
55 echo json_encode($row_token, JSON_UNESCAPED_UNICODE);
56 } else {
57 echo "目录 $path 创建失败";
58 }
59 }
60
61 }
62 } else {
63 header('Location: http://127.0.0.1:9090/Project01/php/other.html');
64 }
65 ?>
接下来写模板文件:文件名为win.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title></title>
6 </head>
7 <body>
8 <h1 class="h1"></h1>
9
10 <script src="js/jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script>
11 <script type="text/javascript">
12 $(document).ready(function(){
13 /*
14 * 获取url的信息http://127.0.0.1:9090/Project01/php/win.html将其中的win获取出来
15 * 在复制的html中是win你输入的内容的token值,
16 * */
17 var strUrl=window.location.href;
18 var arrUrl=strUrl.split("html");
19 var strPage=arrUrl[0];
20 var last=strPage.split("/");
21 var filenameadd=last[last.length-1];
22 var filename=filenameadd.substring(0,filenameadd.length-1);
23
24 //通过获取到的值,进行数据查询
25 $.ajax({
26 type:"post",
27 url:"//127.0.0.1:9090/Project01/php/win.php",
28 async:true,
29 data:{"content":filename},
30 dataType:"JSON",
31 success:function(r){
32 var h1=$(".h1");
33 h1.text(r.content); //修改文本内容
34 $(document).attr("title",r.content); //修改title内容
35 }
36 });
37 })
38 </script>
39 </body>
40 </html>
接下来了便是复制成功后页面请求提交数据:文件名为:win.php
1 <?php
2 /*
3 * 一些注释在creathtml.php文件中已写
4 * */
5 require './config.php';
6
7 $win=$_POST['content'];
8
9 if(isset($win)){
10
11 $query_content = 'SELECT t1.content FROM ceshi t1 WHERE token="'.$win.'"';
12
13 $result_content = @mysql_query($query_content) or die($error);
14
15 $row_content = mysql_fetch_array($result_content, MYSQL_ASSOC);
16 //将其请求的内容返回
17 echo json_encode($row_content,JSON_UNESCAPED_UNICODE);
18
19 }else{
20 header('Location: http://127.0.0.1:9090/Project01/php/other.html');
21 }
22 ?>
下面是测试截图:
一:未开始前
MySQL
文件目录中:
二:使用开始
网页截图:
输入内容
点击提交
点击链接
mysql截图:
文件目录截图
至此传入数据,生成对应的html文件已成功,想要内容更好点,再添加点内容即可
注:本文为博主原创,允许所有人转载,但是请注明原文档出处