从Web的工作原理来看,用户访问HTML所带来的服务器负载要远小于访问动态页面,因为在前者中,服务器只用把对应的html代码发送给客户端即可,而在后者中,服务器则需要根据访问条件进行一系列的计算,然后生成html代码,最后把运算结果代码发送给客户端。 所以,对于访问量较大的宣传式网站(比如新闻类),要尽可能地使用静态页面。
另一方面,我们不可能让网站编辑人员来一个一个地手工制作这些HTML,那样就是回到多年前的纯静态时代了。我们可以用动态语言来方便、快捷地生成这些静态网页。而且,目前这一技术已经十分成熟。本文仅以最简单的原理和案例着手,试图讲明白大致的方法和流程,不关心具体的细节(比如文本编辑器)。
原理步骤:
1、制作一个内容为空的html页面,作为模板。
2、当网站编辑人员通过后台添加一条记录时,将其内容添加到模板文件的相应的位置上,然后将其保存为特定位置的html文件
3、在数据库中记录下该文件的信息
4、在前台,读取数据库中的记录并显示
5、后台编辑,本质上是对html文件的增、删、改,顺带对数据库中的记录也进行如上操作。
目录结构:
数据库设计:
create database cms_php_html;
use cms_php_html;
CREATE TABLE IF NOT EXISTS `newslist` (
`nID` int(11) NOT NULL AUTO_INCREMENT,
`nTitle` varchar(50) COLLATE utf8_bin NOT NULL,
`nURL` varchar(100) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`nID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
代码:
1、前台首页: index.html
<meta charset="utf-8"> <title>NewsList</title> <script src="js/jquery-1.8.2.min.js" type="text/javascript" charset="utf-8"></script> <script src="js/query.js" type="text/javascript" charset="utf-8"></script> <script> $(function(){ $.ajax({ type:"get", url:"admin/query.php", dataType:"json", success:function(data){ $("#newsList").html(); $.each(data, function(index,row) { $("#newsList").append("<li><a href='"+ row['nURL']+"'>"+row['nTitle']+""); }); } }); }) </script>
2、前台查询数据库页面:admin/query.php
<?phpmysql_connect ("localhost","root","root");mysql_query("set names utf8");mysql_select_db("cms_php_html");$myrs=mysql_query("select * from newsList order by nID");while($row=mysql_fetch_array($myrs)){ $temp[]=$row;}echo(json_encode($temp));?>
3、后台编辑首页:admin/admin_index.html
<meta charset="utf-8"> <title>CMS后台</title> <script src="../js/jquery-1.8.2.min.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" src="../js/new.js"></script> <!--<script src="../js/query.js" type="text/javascript" charset="utf-8"></script>--> <script src="../js/saveEdit.js" type="text/javascript" charset="utf-8"></script> <script src="../js/delete.js" type="text/javascript" charset="utf-8"></script> <div><a href="../index.html" target="_blank">前台查看</a></div>
|
|
News List |
4、与新增记录、修改记录有关的js:js/new.js
$(function() { //首先在表格正文列出已有记录 $.ajax({ type:"get", url:"../admin/query.php", dataType:"json", success:function(data){ $("#newsList").html(""); $.each(data, function(index,row) { $("#newsList").append("
5、与修改记录有关的js:js/saveEdit.js
$(function(){ $("#oldSubmit").click(function(){ if($("#pageFile").text()!="" && $("#oldTitle").val()!="" && $("#oldContent").val()!="") { $("#oldSubmit").val('修改中...'); fileURL=$("#pageFile").html(); $("#oldSubmit").attr("disabled","disabled"); newTitle=$("#oldTitle").val() newContent=$("#oldContent").val(); $.ajax({ type:"post", url:"../admin/saveEdit.php", data:{url:fileURL,title:newTitle,content:newContent}, dataType:'html', success:function(data){ $("#oldSubmit").removeAttr("disabled"); $("#oldSubmit").val('修改'); alert(data); $.ajax({ type:"get", url:"../admin/query.php", dataType:"json", success:function(data){ $("#newsList").html(""); $.each(data, function(index,row) { $("#newsList").append("
$(function(){ $("#oldDelete").click(function(){ if(window.confirm('确定删除?')==true) { currentURL=$("#pageFile").text(); $.ajax({ type:"post", url:"../admin/delete.php", data:{curl:currentURL}, dataType:'html', success:function(data){ alert(data); $.ajax({ type:"get", url:"../admin/query.php", dataType:"json", success:function(data){ $("#newsList").html(""); $.each(data, function(index,row) { $("#newsList").append("
7、新增记录的php实现代码:admin/new.php
<?php $title=$_POST['txtTitle'];$content=$_POST['txtContent'];$fopen=fopen("../template/t1.html", "r");$templateContent=fread($fopen, filesize("../template/t1.html"));fclose($fopen);$templateContent=str_replace("{TITLE}",$title,$templateContent);$templateContent=str_replace("{CONTENT}",$content,$templateContent);$htmlName="../html/".date("YmdHis").'.html';$fwrite=fopen($htmlName,"w"); fwrite($fwrite,$templateContent); mysql_connect('localhost','root','root');mysql_query("set names utf8");mysql_select_db('cms_php_html');$url="http://localhost/phpToHtml".substr($htmlName, 2);$insertSql="insert into newsList values(null,'".$title."','".$url."')";mysql_query($insertSql);echo json_encode("ok");?>
8、修改现有记录的php实现代码:admin/saveEdit.php
<?php $url=$_POST['url'];$title=$_POST['title'];$content=$_POST['content'];$oldContent=file_get_contents($url);$newContent=preg_replace("#<title>(.*?)#s", "<title>".$title."</title>", $oldContent);$newContent=preg_replace("#(.*?)#s", "".$content."", $newContent);preg_match("#http://localhost/phpToHtml/(.*?).html#s", $url,$m);$fwrite=fopen("../".$m[1].".html","w");fwrite($fwrite,$newContent); mysql_connect("localhost","root","root");mysql_query("set names utf8");mysql_select_db("cms_php_html");mysql_query("update newsList set nTitle='".$title."' where nURL='".$url."'");echo("ok");?>
9、读取已有的某条记录的php实现代码:admin/read.php
<?php $htmlURL=$_GET['htmlUrl'];$fcontents=file_get_contents($htmlURL);preg_match("#<title>(.*?)#s",$fcontents,$titleMatches);preg_match("#(.*?)#s",$fcontents,$contentMatches);$row[0]=$titleMatches[1];$row[1]=$contentMatches[1];echo(json_encode($row));?>
10、删除某条记录的php实现代码:admin/delete.php
<?php $url=$_POST['curl'];mysql_connect("localhost","root","root");mysql_query("set names utf8");mysql_select_db("cms_php_html");mysql_query("delete from newsList where nURL='".$url."'");echo("ok");?>
11、模板文件:template/t1.html
<meta charset="utf-8"> <title>{TITLE}</title> <a href="../index.html">返回列表页</a> <div>{CONTENT}</div>
结果:
前台:
前台打开链接后:
后台首页:
添加记录:
添加后:
修改记录:
删除记录:
删除后的列表:

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP可以輕鬆創建互動網頁內容。 1)通過嵌入HTML動態生成內容,根據用戶輸入或數據庫數據實時展示。 2)處理表單提交並生成動態輸出,確保使用htmlspecialchars防XSS。 3)結合MySQL創建用戶註冊系統,使用password_hash和預處理語句增強安全性。掌握這些技巧將提升Web開發效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP在現代Web開發中仍然重要,尤其在內容管理和電子商務平台。 1)PHP擁有豐富的生態系統和強大框架支持,如Laravel和Symfony。 2)性能優化可通過OPcache和Nginx實現。 3)PHP8.0引入JIT編譯器,提升性能。 4)雲原生應用通過Docker和Kubernetes部署,提高靈活性和可擴展性。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)