PHP SMARTY 樣板引擎
1. 開發環境及工具 1-1 UniformServer 伺服器架設 1-2 編輯器 1-3 設定FILEZILLA 2. PHP簡介與語法 3. PHP變數 4. 套用Smarty樣板 5. php smarty mysql 結構 5-1 bootstrap 3 5-2 smarty 樣版 5-3 bootstrap 3 預設樣 5-4 安裝 6. 註冊機制 6-1 加密方法 6-2 規劃users資料表 6-3 註冊流程圖 6-3-1 上方選單 6-3-2 註冊表單(modal) 6-3-3 按收表單,寫入資料庫 6-3-3-1 過濾接收變數,寫入資料庫 6-3-3-2 檢查email是否已經存在 6-3-3-3 20171025上課範例 6-4 登入表單(modal) 6-4-1 接收表單,判斷帳密是否正確 6-4-2 20171025上課範例 6-5 防止偽造表單 6-6 轉向 7. MYSQL 資料庫 7-1 MYSQL語法 7-2 索引 7-3 MYSQL 函數 8. 規劃資料結構 8-1 admin_update.php 9. 商品管理 9-1 商品管理 - 表單 9-2 上課範例 10. 商品管理(二) 10-1 實做 10-2 實做2 10-3 實做3 10-4 20171115-上課程式碼 11. 商品管理(三)寫入資料表 11-1 商品 列表 11-1-1 列表 - 縮圖 12. 商品管理(四) 12-1 商品更新 12-2 商品刪除 13. 類別物件 13-1 ugmKind.php 14. 使用 ugmKind 物件 14-1 表單驗證 14-2 分頁 14-3 上傳物件 14-4 安裝 GD庫 14-5 設定php.ini 15. ugm_show 使用 15-1 套用佈景 16. 套用佈景 16-1 取得2層選單 17. 擴充後台 17-1 新增 - 新聞管理 17-2 輪播圖 18. 金流介紹 18-1 智付通註冊流程 19. 綜合練習 20. 其它 20-1 驗證上傳之副檔名 20-2 Google Maps JavaScript API 20-3 bootstrap carousel 輪播 20-4 ajax debug 20-5 自動跳轉 21. function.php 21-1 redirect_header() 22. 說明 22-1 theme_admin.tpl 說明 22-2 表單說明 22-3 htmlspecialchars 22-4 PHP的 filter_var 過濾器 23. 套件 23-1 ckeditor + elFinder 23-2 小月曆 23-3 FONTAWESOME 23-4 fontawesome-iconpicker 23-5 sweetalert2 23-6 jquery-treetable 23-7 bootstrapvalidator 表單驗證 23-8 輪播圖 24. 導入PHP樣板引擎 smarty 24-1 SMARTY保留變數 24-2 除錯畫面
流程:
#商品更新
case "opUpdate" :
$msg = opUpdate($sn);
redirect_header($_SESSION['returnUrl'], 3000, $msg);
exit;
程式:
#################################################
# 商品更新
#################################################
function opUpdate($sn){
global $db;
if(!$sn) redirect_header($_SESSION['returnUrl'], 3000, "商品編號錯誤!");
#驗證token
verifyToken($_POST['token']);
#過濾
$_POST['title'] = db_CleanVars($_POST['title'], "商品名稱");
$_POST['kind'] = db_CleanVars($_POST['kind'], "類別");
$_POST['price'] = db_CleanVars($_POST['price'], "");//商品價格
$_POST['amount'] = db_CleanVars($_POST['amount'], "");//商品數量
$_POST['enable'] = db_CleanVars($_POST['enable'], "啟用");
$_POST['choice'] = db_CleanVars($_POST['choice'], "精選");
$_POST['date'] = db_CleanVars($_POST['date'], "建立日期");
$_POST['date'] = strtotime($_POST['date']);
$_POST['sort'] = db_CleanVars($_POST['sort'], "排序");
$_POST['icon'] = db_CleanVars($_POST['icon'], "");//圖示
$_POST['summary'] = db_CleanVars($_POST['summary'], "");//商品摘要
$_POST['content'] = db_CleanVars($_POST['content'], "");//商品內容
#更新資料庫
$sql = "update `ugm_p_prod` set
`title` = '{$_POST['title']}',
`kind` = '{$_POST['kind']}',
`price` = '{$_POST['price']}',
`amount` = '{$_POST['amount']}',
`enable` = '{$_POST['enable']}',
`choice` = '{$_POST['choice']}',
`date` = '{$_POST['date']}',
`sort` = '{$_POST['sort']}',
`icon` = '{$_POST['icon']}',
`summary` = '{$_POST['summary']}',
`content` = '{$_POST['content']}'
where `sn` = '{$sn}'"; //die($sql);
$db->query($sql) or redirect_header("", 3000, $db->error."\n".$sql,true);
#上傳圖片
if($_FILES['pic']['tmp_name'] and !$_FILES['pic']['error']){
#先刪除圖片
deleteFiles_center("prod",$sn);
#處理新檔名
$ext_name = strrchr($_FILES['pic']['name'], "."); //取得副檔名 .jpg,請注意有包含點
$rand = substr(md5(uniqid(mt_rand(), 1)), 0, 5);//取得一個5碼亂數
$new_name = $rand ."_".$sn.$ext_name;
#檢查資料夾
$DirName = "prod";
mk_dir(WEB_PATH . "/uploads/{$DirName}");
mk_dir(WEB_PATH . "/uploads/{$DirName}/pic");
#上傳
if(move_uploaded_file($_FILES['pic']['tmp_name'] , WEB_PATH . "/uploads/{$DirName}/pic/{$new_name}")){
#上傳成功,把圖片資訊寫入圖片檔
$sql = "insert into `ugm_p_files_center`
(`col_name`,`col_sn`,`sort`,`kind`,`file_name`,`file_type`,`file_size`,`description`,`original_filename`,`sub_dir`) values
('{$DirName}','{$sn}','1','img','{$new_name}','{$_FILES['pic']['type']}','{$_FILES['pic']['size']}','{$_POST['title']}','{$_FILES['pic']['name']}','{$DirName}/pic')"; //die($sql);
$db->query($sql) or redirect_header("", 3000, $db->error."\n".$sql,true);
}else{
return "商品圖片上傳失敗!!";
}
}
return "編輯商品成功!!";
}
刪除圖片
#################################################
# 刪除圖片
#################################################
function deleteFiles_center($col_name,$col_sn){
global $db;
#取得記錄
$Files=getFilesBYcol_nameCol_sn($col_name,$col_sn);
#將檔案刪除
if(file_exists(WEB_PATH."/uploads/".$Files['sub_dir']."/".$Files['file_name'])){
unlink(WEB_PATH."/uploads/".$Files['sub_dir']."/".$Files['file_name']);
}
#刪除圖片檔資料
$sql = "delete
from `ugm_p_files_center`
where `files_sn`='{$Files['files_sn']}'
";
$db->query($sql) or redirect_header("", 3000, $db->error."\n".$sql,true);
}
用「col_name」、「col_sn」得到圖片記錄
function getFilesBYcol_nameCol_sn($col_name,$col_sn){
global $db;
#撈資料
$sql = "select *
from `ugm_p_files_center`
where `col_name`='{$col_name}' and `col_sn`='{$col_sn}'
";
$result = $db->query($sql) or redirect_header("", 3000, $db->error."\n".$sql,true);
$row = $result->fetch_assoc();
return $row;
}