2-4-2
寫入活動到資料庫中
您沒有觀看影片的權限
請先登入,登入後,確認您的權限後,即可觀看影片。
- WebDeveloper 附加元件:
- FireFox:https://addons.mozilla.org/zh-tw/firefox/addon/web-developer/
- Chrome:https://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm?hl=zh-TW
- 表單是用 post 方式傳遞變數,所以,index.php 會收到
$_POST['op']
的值為 tad_signup_actions_store
- switch 必須有
tad_signup_actions_store
對應的動作,如:
//新增資料
case 'tad_signup_actions_store':
$id = Tad_signup_actions::store();
// header("location: {$_SERVER['PHP_SELF']}?id=$id");
redirect_header($_SERVER['PHP_SELF'] . "?id=$id", 3, "成功建立活動!");
exit;
- 其中
header("location: 網址");
用來轉向。若要加上訊息,亦可改用XOOPS內建的
redirect_header("網址", 秒數, "訊息");
- 修改
class/Tad_signup_actions.php
中的 Tad_signup_actions
類別下的 store()
方法來儲存資料
//新增資料
public static function store()
{
global $xoopsDB;
if (!$_SESSION['tad_signup_adm']) {
redirect_header($_SERVER['PHP_SELF'], 3, "您沒有權限使用此功能");
}
//XOOPS表單安全檢查
Utility::xoops_security_check();
$myts = \MyTextSanitizer::getInstance();
foreach ($_POST as $var_name => $var_val) {
$$var_name = $myts->addSlashes($var_val);
}
$uid = (int) $uid;
$number = (int) $number;
$enable = (int) $enable;
$sql = "insert into `" . $xoopsDB->prefix("tad_signup_actions") . "` (
`title`,
`detail`,
`action_date`,
`end_date`,
`number`,
`setup`,
`enable`,
`uid`
) values(
'{$title}',
'{$detail}',
'{$action_date}',
'{$end_date}',
'{$number}',
'{$setup}',
'{$enable}',
'{$uid}'
)";
$xoopsDB->query($sql) or Utility::web_error($sql, __FILE__, __LINE__);
//取得最後新增資料的流水編號
$id = $xoopsDB->getInsertId();
return $id;
}
- 一樣先檢查身份,並驗證一下表單token是否合法(避免偽造表單)
Utility::xoops_security_check();
- 取得XOOPS內建的文字檢查工具(固定用法)
$myts = \MyTextSanitizer::getInstance();
- 將所有
$_POST
都進行文字過濾( 存入時,若有特殊符號,如:「\」、「"」、「'」,若沒有處理,那麼可能無法存入 ),避免資料庫的隱碼攻擊,也確保資料能完整寫入資料庫
foreach ($_POST as $var_name => $var_val) {
$$var_name = $myts->addSlashes($var_val);
}
- 接著就是把整理後的值,存入資料庫
$sql = "insert into `" . $xoopsDB->prefix("tad_signup_actions") . "` (
`title`,
`detail`,
`action_date`,
`end_date`,
`number`,
`setup`,
`enable`,
`uid`
) values(
'{$title}',
'{$detail}',
'{$action_date}',
'{$end_date}',
'{$number}',
'{$setup}',
'{$enable}',
'{$uid}'
)";
$xoopsDB->query($sql) or Utility::web_error($sql, __FILE__, __LINE__);
- 最後取得剛新增的資料其自動流水號,並將之傳出,因為後續可能會用到
//取得最後新增資料的流水編號
$id = $xoopsDB->getInsertId();
return $id;
link to https://github.com/tadlearn/tad_signup/commit/acd4ef349392a7c7ce71a03dbd91e7dcb12d7901 \