1、參照之前的(mvc框架總結)將整體框架定下來之後,那麼請求預設參數將變成:
<span>//</span><span>默认请求首页: </span><span>//</span><span>P=front </span><span>//</span><span>C=fIndex </span><span>//</span><span>A=show</span>
1.1 找到控制器fIndexController下的動作:
<span>//</span><span>首页展示动作</span> <span>public</span><span> function showAction() { </span><span>//</span><span>防止恶意调用</span> $<span>this</span>-><span>checkAuthority(); </span><span>//</span><span>不需要具体模型,直接载入模版</span> require CUR_VIE_PATH.<span>'</span><span>index.html</span><span>'</span><span>; }</span>
2、防止惡意調用這一塊放於我們的Controller層面,所有模型幾乎都要用到,因此將其放於基礎模型,、
<span>/*</span><span> * 防止恶意调用方法,适用于全部方法 </span><span>*/</span> <span>protected</span><span> function checkAuthority() { </span><span>if</span>(!defined(<span>'</span><span>IN_NG</span><span>'</span><span>)) { exit(</span><span>"</span><span>you no authority</span><span>"</span><span>); } }</span>
隨時呼叫該方法
3、拒絕php低版本,由於總是在運行,所以直接放入初始檔案Framework.class.php
4.1將 CSS做成包含檔案
每個頁面都要導入CSS,著實麻煩,我們定一個檔title.inc.html。
但是每個頁面卻有一個不相同的CSS,那麼可以定義一個常數來證明本頁。
define('SCRIPT','index');
<title>Your Title</title> <?<span>php require </span><span>'</span><span>application/view/front/title.inc.html</span><span>'</span> ?> </head>
其中title.inc.html程式碼
<link rel=<span>"</span><span>shortcut icon</span><span>"</span> href=<span>"</span><span>favicon.ico</span><span>"</span> /> <link rel=<span>"</span><span>stylesheet</span><span>"</span> type=<span>"</span><span>text/css</span><span>"</span> href=<span>"</span><span>public/front/css/1/basic.css</span><span>"</span> /> <link rel=<span>"</span><span>stylesheet</span><span>"</span> type=<span>"</span><span>text/css</span><span>"</span> href=<span>"</span><span>public/front/css/1/<?php echo SCRIPT?>.css<span>"</span> />
5.2 建立註冊頁面register.html
<span>参数请求为: 请求注册页 P</span>=<span>front C</span>=<span>fRegister A</span>=show
代碼為:
<div id=<span>"</span><span>register</span><span>"</span>> <h2>会员注册</h2> <form method=<span>"</span><span>post</span><span>"</span> action=<span>"</span><span>post.php</span><span>"</span>> <dl> <dt>请认真填写一下内容</dt> <dd><span> 用 户 名:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>username</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />(*<span>必填,至少两位) </span></dd> <dd><span> 密 码:</span><input type=<span>"</span><span>password</span><span>"</span> name=<span>"</span><span>password</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />(*<span>必填,至少六位) </span></dd> <dd><span> 确认密码:</span><input type=<span>"</span><span>password</span><span>"</span> name=<span>"</span><span>notpassword</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />(*<span>必填,同上) </span></dd> <dd><span> 密码提示:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>passt</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />(*<span>必填,至少两位) </span></dd> <dd><span> 密码回答:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>passd</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> />(*<span>必填,至少两位) </span></dd> <dd><span> 性 别:</span><input type=<span>"</span><span>radio</span><span>"</span> name=<span>"</span><span>sex</span><span>"</span> value=<span>"</span><span>男</span><span>"</span> <span>checked</span>=<span>"</span><span>checked</span><span>"</span> /><span>男 </span><input type=<span>"</span><span>radio</span><span>"</span> name=<span>"</span><span>sex</span><span>"</span> value=<span>"</span><span>女</span><span>"</span> /><span>女 </span></dd> <dd <span>class</span>=<span>"</span><span>face</span><span>"</span>> <img src=<span>"</span><span>public/front/face/m01.gif</span><span>"</span> alt=<span>"</span><span>头像选择</span><span>"</span><span> onclick</span>=<span>"</span><span>javascript:window.open('face.php','face','width=400,height=400,top=0,left=0')</span><span>"</span> /> </dd> <dd><span> 电子邮件:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>email</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> /> </dd> <dd><span> Q Q :</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>qq</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> /> </dd> <dd><span> 主页地址:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>url</span><span>"</span> <span>class</span>=<span>"</span><span>text</span><span>"</span> value=<span>"</span><span>http://</span><span>"</span> /> </dd> <dd><span> 验 证 码:</span><input type=<span>"</span><span>text</span><span>"</span> name=<span>"</span><span>yzm</span><span>"</span> <span>class</span>=<span>"</span><span>text yzm</span><span>"</span> /> </dd> <dd> <input type=<span>"</span><span>submit</span><span>"</span> <span>class</span>=<span>"</span><span>submit</span><span>"</span> value=<span>"</span><span>注册</span><span>"</span> /> </dd> </dl> </form> </div>
5.3點選頭像彈出選擇頭像框:
<img src=<span>"</span><span>public/front/face/m01.gif</span><span>"</span> alt=<span>"</span><span>头像选择</span><span>"</span><span> onclick</span>=<span>"</span><span>javascript:window.open('face.php','face','width=400,height=400,top=0,left=0')</span><span>"</span> />
這個頁面存放著64 張頭像頁面,可以透過數組循環的方式羅列出來
<?php <span>foreach</span> (range(<span>1</span>,<span>9</span>) <span>as</span> $number) {?> <dd><img src=<span>"</span><span>face/m0<?php echo $number?>.gif<span>"</span> /></dd> <?php }?>
6.提交資料
將資料提交到本頁,必須做一個名值對,用來判斷是否提交了資料。
?action=<span>register 也可以设计一个隐藏字段来做名值对 </span><<span>input type</span>=<span>"</span><span>hidden</span><span>"</span><span> name</span>=<span>"</span><span>action</span><span>"</span><span> value</span>=<span>"</span><span>register</span><span>"</span> />
6.1核對驗證碼
驗證碼的用途是為了防止惡意註冊和一些表單偽造跨站攻擊等。
驗證碼裡保存在session 裡面,可以判斷是否是當前表單提交,而刷新一次後驗證碼隨
即變化,又可以防止多次惡意註冊。
<span>if</span> (!($_POST[<span>'</span><span>yzm</span><span>'</span>] == $_SESSION[<span>'</span><span>code</span><span>'</span><span>])) { _alert_back(</span><span>'</span><span>验证码有误,请重新输入!</span><span>'</span><span>); }</span>
6.2.接受數據
<span>设计变量,将数据提交出来赋值给变量 $_username </span>=<span> $_POST[</span><span>'</span><span>username</span><span>'</span><span>]; 也可以通过一个数组来存放提交过来的值 $_clean </span>=<span> array(); $_clean[</span><span>'</span><span>username</span><span>'</span><span>] </span>=<span> $_POST[</span><span>'</span><span>username</span><span>'</span>]
6.3各種限制與過濾
<span>1.首先,必须去掉两边的空格 $_string </span>= trim($_string);
<span>2.其次长度限制 </span><span>if</span> (mb_strlen($_string,<span>'</span><span>utf-8</span><span>'</span>) < $_min_num || mb_strlen($_string,<span>'</span><span>utf-8</span><span>'</span>) > $_max_num)
<span>3.敏感字符限制 $_char_pattern </span>= <span>'</span><span>/[<>\'\"\ \ ]/</span><span>'</span><span>; </span><span>if</span> (preg_match($_char_pattern,$_string)) {}
<span>4.敏感用户名限制 $_mg[</span><span>0</span>] = <span>'</span><span>22</span><span>'</span><span>; $_mg[</span><span>1</span>] = <span>'</span><span>11</span><span>'</span><span>; $_mg[</span><span>2</span>] = <span>'</span><span>33</span><span>'</span><span>; </span><span>foreach</span> ($_mg <span>as</span><span> $value) { $_mg_string .</span>= <span>'</span><span>[</span><span>'</span>.$value.<span>'</span><span>]</span><span>'</span>.<span>'</span><span>\n</span><span>'</span><span>; } </span><span>if</span><span> (in_array($_string,$_mg)) { _alert_back($_mg_string.</span><span>'</span><span>以上敏感用户名不得注册!</span><span>'</span><span>); }</span>
<span>5.转义输入,有效防止SQL 注入问题 </span><span>//</span><span>mysql_escape_string(); </span><span>//</span><span>addslashes()</span> <span>return</span> mysql_real_escape_string($_string); <span>//</span><span>这个mysql_是需要连接数据库的</span>
以上就介紹了php留言系統(2),包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。