本人因為要想自己寫個小說網站練練手,在其中遇到的一些問題,將其解決方法總結出來,例如:
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文件已成功,想要內容更好點,再添加點內容即可
注:本文為博主原創,允許所有人轉載,但是請注明原文檔出處