環境要求:php7.0.9 + 小皮?+ navicat + phpstorm24.1
知識點:會寫(留言板 + 留言板后臺)+ 超全局變量 + 三方插件的使用 + 文件包含
1、開啟小皮并利用navicat新建一個數據庫
注意:本地的服務mysql關閉后 才可打開小皮。屬于是兩個系統。
總結:庫名demo01 ; 表名gbook
2、實例:html + php代碼實現?
2.1 單文件實現留言和留言顯示功能
<!-- html區域 利用的是adobe生成的 !注意html的注釋格式 不是/ 或者# --> <form id="form1" name="form1" method="post" action=""> <!-- action寫空表示接收的是自己 --><p>用戶名:</p><p><input type="text" name="username"> <!-- name這指的是將以變量username去傳遞變量的值(用戶輸入的實際用戶名) --></p><p>內容:</p><p><textarea name="content"></textarea> <!-- name這指的是將以變量content去傳遞變量的值(用戶輸入的實際評論內容) --></p><input type="submit" name="submit" id="submit" value="提交"></form><?php# 2.mysql相關部分 // 2.1 與mysql進行連接 $dbip = "localhost"; $dbuser = "root"; $dbpass = "123456"; $dbname = "demo01";// 創建連接 $con = mysqli_connect($dbip, $dbuser, $dbpass, $dbname);// 檢測連接 if (!$con) {die("連接失敗: " . mysqli_connect_error()); } # 1.php接收部分$u = @$_POST['username']; // 加@是為了防止提示空的報錯。 由于上面表單給的是post方法,下面對應去用postif(isset($u)){ // 由于全局變量提取ip,導致哪怕不評論,也會抓取到ip,所以寫一個if判斷防止空抓ip和ua$c = @$_POST['content'];// echo $u;// echo $c; # 1--確認php利用content和username變量接收到了來自前端用戶所提交的用戶名和內容后 進行數據庫的配置# 2.3 *引入超全局變量* #$i = $_SERVER['REMOTE_ADDR']; //利用全局變量語法直接獲得ip和ua頭,不需要用戶輸入$ua = $_SERVER['HTTP_USER_AGENT'];// 2.2 確認mysql連接后,我們進行數據的插入$sql = "INSERT INTO gbook(username,content,ipaddr,uagent) VALUES('$u','$c','$i','$ua');"; //插入到表中// 2.4 執行mysql的插入語句if(mysqli_query($con, $sql)){ // 返回$sql語句生效后的查詢結果echo "<script>alert('留言成功')</script>"; // html混編:寫一個js提示框 給用戶一個反饋// 2.5 寫mysql的查詢語句并執行,來進行留言查詢$sql1 = "select * from gbook";$data = mysqli_query($con,$sql1);while ($row=mysqli_fetch_row($data)){echo '<hr>';echo '用戶名:'.$row[0].'<br>'; //列名下標匹配 .的意思就是加echo '內容:'.$row[1].'<br>';echo 'ip地址:'.$row[2].'<br>';echo 'ua頭:'.$row[3].'<br>';}}else{echo "<script>alert('留言失敗')</script>";}} }?>
2.2 加入留言板后臺管理功能?
加入一個留言板的后臺管理功能:顯示所有留言,并可進行刪除
00x1 創建admin/gbook-admin.php
將負責留言查詢的語句copy到admin-gbook中
于是發現,與mysql的連接又需要重新配置,那么就寫一個config.php配置文件
00x2 創建配置文件config.php并做文件包含
注意:是在demo01根目錄下 與gbook同級
于是乎,將配置mysql相關代碼寫入config.php中
那么我們在后臺管理的文件gbook-admin就可直接包含config.php了無需重復配置mysql
include '../config.php'
00x3 刪除功能實現
echo "<a href='gbook-admin.php?del=$row[0]'>刪除</a>";在遍歷打印留言時候,加載一個跳轉刪除功能的a標簽?
$delstr = $_GET['del']; // 由于剛剛是href='gbook-admin.php?del 這種url類型提取數據 所以用get $sql2 = "delete from gbook where username='$delstr';"; if(mysqli_query($con,$sql2)){echo "<script>alert('刪除成功!')</script>"; }
但是這樣子,會有一點小問題,由于是根據用戶的username去匹配刪除條件的,那么同一個用戶多條留言可能一次性全部刪掉了。(不知迪總25課程改善代碼沒有hahaha
測試,成功刪除。
2.3 進一步利用函數封裝功能
留言功能
function add_gbook($con){$u = @$_POST['username'];if(isset($u)){$c = @$_POST['content'];$i = $_SERVER['REMOTE_ADDR'];$ua = $_SERVER['HTTP_USER_AGENT'];$sql = "INSERT INTO gbook(username,content,ipaddr,uagent) VALUES('$u','$c','$i','$ua');";if(mysqli_query($con, $sql)){echo "<script>alert('留言成功')</script>";}} }
留言顯示功能
function show_gbook($con,$del){$sql1 = "select * from gbook";$data = mysqli_query($con,$sql1);while ($row=mysqli_fetch_row($data)){echo '<hr>';echo '用戶名:'.$row[0].'<br>'; //列名下標匹配 .的意思就是加echo '內容:'.$row[1].'<br>';echo 'ip地址:'.$row[2].'<br>';echo 'ua頭:'.$row[3].'<br>';if($del == 'del') {echo "<a href='gbook-admin.php?del=$row[0]'>刪除</a>";}} }
然后根據邏輯,先加再顯示,進行函數的調用。
add_gbook($con); show_gbook($con);
2.4 再次優化后臺管理文件(admin-gbook.php)
由于后臺管理文件(admin-gbook.php)也有顯示全部留言功能,可以再用一次文件包含,直接調用show_gbook功能,進行代碼優化。
include 'gbook.php'; // 是直接調用gbook中的show_gbook函數,實現顯示全部留言功能show_gbook($con,'del');
2.5 利用ueditor第三方插件來實現上傳圖片的功能
00x1 將ueditor文件放入demo01文件夾下
00x2 調用
1)先導入插件包文件(寫在form表單上方)
<script src="/ueditor/ueditor.config.js">/*引入配置文件*/</script> <script src="/ueditor/ueditor.all.js">/*引入源碼文件*/</script>
?
2)確認需求是需要ed幫我生成一個富文本框(可上傳圖片)
于是我們將剛剛的文本框加一個id參數,值隨意,與調用保持一致即可。
3)再調用ueditor進行生成(確保id參數一致,類比對暗號)
放在hrml的<form>表單下面即可。
// 導入uitor的js腳本語句 <script>// 將腳本放在頁面底部也可以確保DOM已加載var ue = UE.getEditor('hi-ueditor'); </script>
?
4)利用小皮建站本地ip,導入demo01文件夾
5)查看效果
成功提交
3、Day1-留言板php開發知識點串聯:
1)超全局變量
PHP的全局變量是指在整個PHP腳本中都可以被訪問到的變量。這些變量存儲在PHP進程的內存中,并在整個腳本執行期間保持不變。全局變量的作用是在不同的函數和代碼塊中共享數據,從而使代碼更加簡潔和易于維護。
# 2.3 *引入全局變量* #
$i = $_SERVER['REMOTE_ADDR'];
$ua = $_SERVER['HTTP_USER_AGENT'];
我們在實現提取ip、和ua頭的時候 就利用的是全局變量。
PHP 超級全局變量 | 菜鳥教程?
2)mysql-php相關
// 2.1 與mysql進行連接
$dbip = "localhost";
$dbuser = "root";
$dbpass = "123456";
$dbname = "demo01";
// 創建mysql連接
$con = mysqli_connect($dbip, $dbuser, $dbpass, $dbname);
// 檢測連接
if (!$con) {
? ? die("連接失敗: " . mysqli_connect_error());
}
//??確認mysql連接后,可進行數據的增刪改查
$sql = "INSERT INTO gbook(username,content,ipaddr,uagent) VALUES('$u','$c','$i','$ua');";?
其中mysql的增刪改查語句:
// 執行mysql語句
if(mysqli_query($con, $sql)){?
? ? echo "<script>alert('留言成功')</script>";
}
3)第三方的插件ueditor的使用
看上面實例 很詳細。
4)文件包含的使用
使得代碼更加簡潔,文件包含可供其他地方去調用某片區域的代碼/功能。
include '地址' ;
?4、可能出現關于sqli的失敗問題:
主要是插件沒有開啟,根據下方操作可以正常開啟。
將下載的php7.0.9環境進行配置的時候,將development / production 進行復制一份并重命名為php.ini作為php的實際配置文件。
搜索mysqli,將前面的;注釋符號刪掉即可。
在ini文件的上面[PHP]下方,我們加上ext的路徑
mysql連接成功 ?
?