摘要:前言第到章,我們完成了一個屬于自己的框架,麻雀雖小五臟俱全。接下來,我們使用框架開發一個迷你項目書簽收藏。內包含框架的核心文件。源碼分享書簽從零開始打造自己的框架與之詳解
前言
第0到5章,我們完成了一個屬于自己的php框架,麻雀雖小五臟俱全。接下來,我們使用vkphp框架開發一個迷你項目——書簽收藏。在開發過程中,也許會遇到很多問題,這時候我們就可以對框架進行調整,使之更加完善。
系統描述:
用戶登錄系統,能夠看到自己收藏的書簽,并且可以對書簽進行增刪改查。
系統功能:
1、注冊登錄。
2、書簽展示。
3、增刪查改。
原文鏈接:http://www.voidking.com/2017/...
項目結構vkphp ├─app │ ├─ctrl │ │ └─bookmark │ ├─model │ └─smarty │ ├─templates │ │ └─bookmark │ └─templates_c ├─assets ├─config ├─core ├─log └─vendor
app內包含控制器、model、smarty模板。
config內包含全局配置文件。
core內包含框架的核心文件。
log內存放日志文件。
assets包含靜態資源文件。
vendor內包含第三方庫。
我們編寫業務代碼的位置,主要在app、assets兩個目錄。
注冊登錄 表結構修改vk_user表結構為:
DROP TABLE IF EXISTS `vk_user`; CREATE TABLE `vk_user` ( `id` int(10) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `password` varchar(32) NOT NULL COMMENT "md5加密", `salt` varchar(16) NOT NULL, `screen_name` varchar(20) DEFAULT "低調的用戶", `email` tinytext, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;model
app/model目錄下,已經有了user.php這個model類。
控制器app/ctrl/bookmark目錄下,新建user_ctrl.php。
create(300,80,40); } public function check(){ if(!(isset($_REQUEST["code"]) && $_REQUEST["code"] !== "")){ $result = array( "code"=>"-4", "ext"=>"驗證碼不能為空" ); echo json_encode($result,JSON_UNESCAPED_UNICODE); return; } $code = $_REQUEST["code"]; $captcha = new coreutilcaptcha(); $ret = $captcha->check($code); if($ret == 0){ $result = array( "code"=>"0", "ext"=>"驗證成功" ); }else if($ret == -1){ $result = array( "code"=>"-1", "ext"=>"請先獲取驗證碼" ); }else if($ret == -2){ $result = array( "code"=>"-2", "ext"=>"驗證碼超時" ); }else if($ret == -3){ $result = array( "code"=>"-3", "ext"=>"驗證碼錯誤" ); } echo json_encode($result,JSON_UNESCAPED_UNICODE); } public function reg(){ if(!(isset($_POST["username"]) && isset($_POST["password"]) && isset($_POST["password2"]) && $_POST["username"] !== "" && $_POST["password"] !== "" && $_POST["password2"] !== "") ){ $result = array( "code"=>"-1", "ext"=>"參數不能為空" ); echo json_encode($result,JSON_UNESCAPED_UNICODE); return; } $username = $_POST["username"]; $password = $_POST["password"]; $password2 = $_POST["password2"]; if($password !== $password2){ $result = array( "code"=>"-2", "ext"=>"兩次密碼不同" ); echo json_encode($result,JSON_UNESCAPED_UNICODE); return; } $salt = coreutil andom::get_random_string(16); $password = md5($password.$salt); $data = array( "username"=>$username, "password"=>$password, "salt"=>$salt ); $user = new appmodeluser(); $ret = $user->find_by_condition(["username"=>$username]); if($ret){ $result = array( "code"=>"-2", "ext"=>"用戶名已存在" ); echo json_encode($result,JSON_UNESCAPED_UNICODE); return; } $user_id = $user->add($data); if($ret >= 1){ $result = array( "code"=>"0", "user_id"=>$user_id, "ext"=>"注冊成功" ); echo json_encode($result,JSON_UNESCAPED_UNICODE); } } public function login(){ if(!(isset($_POST["username"]) && isset($_POST["password"]) && $_POST["username"] !== "" && $_POST["password"] !== "") ){ $result = array( "code"=>"-1", "ext"=>"參數不能為空" ); echo json_encode($result,JSON_UNESCAPED_UNICODE); return; } $username = $_POST["username"]; $password = $_POST["password"]; $user = new appmodeluser(); $ret = $user->find_by_condition(["username"=>$username]); if($ret){ $salt = $ret["salt"]; $req_password = md5($password.$salt); $real_password = $ret["password"]; if($req_password == $real_password){ session_start(); $_SESSION["user_id"] = $ret["id"]; $result = array( "code"=>"0", "ext"=>"登錄成功" ); echo json_encode($result,JSON_UNESCAPED_UNICODE); } }else{ $result = array( "code"=>"-2", "ext"=>"用戶不存在" ); echo json_encode($result,JSON_UNESCAPED_UNICODE); } } public function logout(){ session_start(); if(isset($_SESSION["user_id"])){ unset($_SESSION["user_id"]); $result = array( "code"=>"0", "ext"=>"下線成功" ); echo json_encode($result,JSON_UNESCAPED_UNICODE); } } public function to_login(){ $this->smarty->assign("basepath",$this->basepath); $this->smarty->assign("assets",$this->assets); $this->smarty->display("bookmark/user/login.html"); } }前端如果需要詳細代碼,請到源碼中查看,下面只描述思路。
1、實現靜態頁面的最終效果,包括html、css和js。
2、把靜態頁面改寫為smarty頁面。
3、使用postman測試寫好的注冊登錄接口。
4、打通前后端。訪問地址: http://vkphp.dev/bookmark/use... ,即可看到注冊登錄頁面。
源碼分享https://github.com/voidking/v...
書簽從零開始打造自己的PHP框架
session與PHP之session_start()
PHP session詳解
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26190.html
摘要:市場上已經有了這么多好的框架,為什么還要開發自己的框架答假裝大神。為了在裝神的道路上走的更遠,小編決定開發一個自己的框架,命名為。源碼分享書簽從零開始打造自己的框架 前言 使用過thinkphp和yii,涉獵過shopnc。市場上已經有了這么多好的框架,為什么還要開發自己的框架?答:假裝大神。為了在裝神的道路上走的更遠,小編決定開發一個自己的php框架,命名為vkphp。 原文地址:h...
摘要:命名空間的作用解決重名問題。不同的命名空間中,可以存在相同類名和函數名。完全限定名稱,或包含了全局前綴操作符的名稱,例如,或。源碼分享書簽從零開始打造自己的框架使用命名空間基礎使用命名空間后備全局函數常量基礎安裝進階安裝 目標 本篇,我們來實現加載控制器、數據查詢和頁面渲染。 原文地址:http://www.voidking.com/2017/... 加載控制器 控制器 在app目錄下...
摘要:本篇,我們就在自己的項目中使用來進行依賴管理。輸入,即可安裝依賴到目錄中,并且自動生成和。安裝依賴,提示從提示可以看出,讀取的是中的依賴,而不是最新的。訪問,正常工作。源碼分享書簽從零開始打造自己的框架中文網中文文檔 Composer Composer 是 PHP5.3以上 的一個依賴管理工具。它允許你申明項目所依賴的代碼庫,它會在你的項目中為你安裝他們。Composer 不是一個包管...
摘要:內包含框架的核心文件。在目錄中,新建,內容如下判斷文件是否存在判斷配置是否存在沒有配置項找不到配置文件找不到配置文件配置類在目錄中,新建配置文件和。使用修改目錄中的和。源碼分享書簽從零開始打造自己的框架 目標 本篇,我們的目標有三個: 調整項目結構 加載配置類 添加日志類 原文地址:http://www.voidking.com/2017/... 調整項目結構 vkphp ├─ap...
摘要:回調函數拿到,然后進行文件的引入。支持訪問地址,無法正常獲取控制器方法和參數,修改如下路由控制隱藏獲取中的控制器和方法獲取中的參數去掉項目名稱去掉源碼分享書簽從零開始打造自己的框架檔案引入路徑問題 目標 本篇,我們來實現類庫自動加載,以及路由解析。 原文地址:http://www.voidking.com/2017/... 類庫自動加載 常規加載 常規加載一般使用include或者re...
閱讀 2585·2021-11-22 12:01
閱讀 1111·2021-11-15 11:37
閱讀 3692·2021-09-22 14:59
閱讀 1755·2021-09-04 16:45
閱讀 1387·2021-09-03 10:30
閱讀 1019·2021-08-11 11:18
閱讀 2465·2019-08-30 10:53
閱讀 2018·2019-08-29 15:13