php留言系统(2)

1、参照之前的(mvc框架总结)将整体框架定下来之后,那么请求默认参数将变为:

//默认请求首页:
    //P=front
    //C=fIndex
    //A=show

1.1     找到控制器fIndexController下的动作:

//首页展示动作
        public function showAction()
        {
            //防止恶意调用
            $this->checkAuthority();
            //不需要具体模型,直接载入模版
            require CUR_VIE_PATH.index.html;
        }

2、防止恶意调用这一块放于我们的Controller层面,所有模型几乎都要用到,因此将其放于基础模型,、

/*
     * 防止恶意调用方法,适用于全部方法
     */
    protected function checkAuthority()
    {
        if(!defined(IN_NG))
        {
            exit("you no authority");
        }
    }

随时调用该方法

3、拒绝php低版本,由于总是在运行,所以直接放入初始文件Framework.class.php

4.1将 CSS做成包含文件

每个页面都要导入CSS,着实麻烦,我们定一个文件title.inc.html。

但是每个页面却有一个不相同的CSS,那么可以定义一个常量来证明本页。

define(‘SCRIPT‘,‘index‘);

<title>Your Title</title>
    <?php
        require application/view/front/title.inc.html
    ?>
</head>

技术分享

其中title.inc.html代码

<link rel="shortcut icon" href="favicon.ico" />
<link rel="stylesheet" type="text/css" href="public/front/css/1/basic.css" />
<link rel="stylesheet" type="text/css" href="public/front/css/1/<?php echo SCRIPT?>.css" />

5.2 创建注册页面register.html

参数请求为:
    请求注册页
        P=front
        C=fRegister
        A=show

代码为:

<div id="register">
        <h2>会员注册</h2>
        <form method="post" action="post.php">
            <dl>
                <dt>请认真填写一下内容</dt>
                <dd>
                    用 户 名:<input type="text" name="username" class="text" />(*必填,至少两位)
                </dd>
                <dd>
                    密 码:<input type="password" name="password" class="text" />(*必填,至少六位)
                </dd>
                <dd>
                    确认密码:<input type="password" name="notpassword" class="text" />(*必填,同上)
                </dd>
                <dd>
                    密码提示:<input type="text" name="passt" class="text" />(*必填,至少两位)
                </dd>
                <dd>
                    密码回答:<input type="text" name="passd" class="text" />(*必填,至少两位)
                </dd>
                <dd>
                    性 别:<input type="radio" name="sex" value="" checked="checked" /><input type="radio" name="sex" value="" /></dd>
                <dd class="face">
                    <img src="public/front/face/m01.gif" alt="头像选择"
                        onclick="javascript:window.open(‘face.php‘,‘face‘,‘width=400,height=400,top=0,left=0‘)" />
                </dd>
                <dd>
                    电子邮件:<input type="text" name="email" class="text" />
                </dd>
                <dd>
                    Q Q :<input type="text" name="qq" class="text" />
                </dd>
                <dd>
                    主页地址:<input type="text" name="url" class="text" value="http://" />
                </dd>
                <dd>
                    验 证 码:<input type="text" name="yzm" class="text yzm" />
                </dd>
                <dd>
                    <input type="submit" class="submit" value="注册" />
                </dd>
            </dl>
        </form>
    </div>

技术分享

5.3点击头像弹出选择头像框:

<img src="public/front/face/m01.gif" alt="头像选择"
                        onclick="javascript:window.open(‘face.php‘,‘face‘,‘width=400,height=400,top=0,left=0‘)" />

技术分享

这个页面存放着64 张头像页面,可以通过数组循环的方式罗列出来

<?php foreach (range(1,9) as $number) {?>
<dd><img src="face/m0<?php echo $number?>.gif" /></dd>
<?php }?>

 6.提交数据
将数据提交到本页,必须做一个名值对,用来判断是否提交了数据。

?action=register
也可以设计一个隐藏字段来做名值对
<input
type="hidden"
name="action"
value="register"
/>

6.1核对验证码
验证码的用途是为了防止恶意注册和一些表单伪造跨站攻击等。
验证码里保存在session 里面,可以判断是否是当前表单提交,而刷新一次后验证码随
即变化,又可以防止多次恶意注册。

if (!($_POST[yzm] == $_SESSION[code])) {
_alert_back(验证码有误,请重新输入!);
}

6.2.接受数据

设计变量,将数据提交出来赋值给变量
$_username
=
$_POST[username];
也可以通过一个数组来存放提交过来的值
$_clean
=
array();
$_clean[username]
=
$_POST[username]

6.3各种限制与过滤

1.首先,必须去掉两边的空格
$_string = trim($_string);
2.其次长度限制
if (mb_strlen($_string,utf-8) < $_min_num || mb_strlen($_string,utf-8) > $_max_num)
3.敏感字符限制
$_char_pattern = /[<>\‘\"\ \ ]/;
if (preg_match($_char_pattern,$_string)) {}
4.敏感用户名限制
$_mg[0] = 22;
$_mg[1] = 11;
$_mg[2] = 33;
foreach ($_mg as $value) {
$_mg_string .= [.$value.].\n;
}
if (in_array($_string,$_mg)) {
_alert_back($_mg_string.以上敏感用户名不得注册!);
}
5.转义输入,有效防止SQL 注入问题
//mysql_escape_string();
//addslashes()
return mysql_real_escape_string($_string); //这个mysql_是需要连接数据库的

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。