中国设计秀欢迎投稿
中国设计秀设计资源站
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
广州网站设计 维美网站建设 域名注册 虚拟主机 广州网站建设 广州网页设计 虚拟主机 域名注册 素材下载 广告服务 中国品牌形象设计 网站推广 家具中国
求创科技
中国设计秀
中国福网
金视觉
中国设计秀欢迎你
中国品牌形象设计网
中国设计秀
当前位置:网络学院首页 >> 编程开发 >> php >> php如何更好更有效的实现-----用户注册页面

php如何更好更有效的实现-----用户注册页面

来源:中国设计秀    作者:    点击:48     加入收藏    发表评论
0
顶一下
中资源
当程序员的人应该都去过论坛,都在应该注册过论坛的用户吧.论坛上用户注册的步骤分为几部:

第一步 \ 协议页面, 只有同意这个协议才可以进入下一步注册
第二步 \ 表单输入页面, 输入用户的注册信息
第三步 \ 注册结果页面,提示注册成功


在实际工作中,如果我们要开发实现这种注册页面,要注意很多的问题:

1\用户跳过"第一步",没有阅读协议页面,直接通过第二步的url直接访问表单输入页面.
2\用户在完成"第三步"的时候,不停的刷新页面,这个用户输入的信息就在每刷新一次的时候被重新保存一次
3\用户在完成"第三步"的时候,点击后退,修改某个信息后,再次提交.


类似这种得表单在web开发的过程中会经常碰到, 对于第3点, 几乎目前所有的论坛中都有这个问题存在,;第2点在一些留言板中经常遇到, 但是怎么作才可以避免上述的问题呢?


今天老板让我帮别人做个文件上传的东西, 允许任何人来上传符合要求文件, 页面模板已经设计好了, 就是和用户注册的步骤是一样的, 分三步骤. 以前做过类似的东西, 但是防刷新机制设计的不是很好. 反正今天没事做, 就稍微研究一下, 看看如何实现代码可以避免上述的问题.
-----------------------------------------------
-----------------------------------------------
下面是个人设计的实现代码,可以避免上述的问题. 通过浏览器访问register.php,在输入"用户名"和"地址"的时候, 两个都不能为空,为空的时候,会提示错误信息; 当两个输入框都不为空的时候, 可以提交成功,提交成功以后,你再进行刷新和后退,看看是不是达到了效果了.


文件一: config.inc.php

<?php

//开始session
session_start();

//设置不进行本地缓存
header('Expires: '.date('D,d M Y H:i:s',mktime(0,0,0,1,1,2000)).' GMT');
header('Last-Modified:'.gmdate('D,d M Y H:i:s').' GMT');
header('Cache-control: private, no-cache,must-revalidate');
header('Pragma: no-cache');

?>


文件二: register.php

<?php

require_once "config.inc.php";

if(isset( $_SESSION[step2]) && isset( $_POST[step2])) {
    //注册的最后一步
     $errorStr = formStep3();
    if( $errorStr!=null){
        require_once('step2.html');
    }else{
        require_once('step3.html');
        unset( $_SESSION[step2],  $_SESSION[step1]);
    }

} else if(isset( $_SESSION[step1]) && isset( $_GET[step1])) {
    //注册的第二步
    require_once('step2.html');
     $_SESSION[step2] = 1;

} else {
    //注册的第一步
    require_once('step1.html');
     $_SESSION[step1] = 1;

}

//判断用户提交的表单的数据的 准确性 和 保存提交数据 的函数
function formStep3(){
     $errors = array();
     $errorStr = null;

    if(strlen( $_POST[username])<1)  $errors[] = "用户名的长度不能为空";
    if(strlen( $_POST[address])<1)  $errors[] = "地址的长度不能为空";

    if(sizeof( $errors)>0){
        $errorStr .= "<br><font color=\"red\" size=\"2\">";
        $errorStr .= "信息输入错误:";
       foreach( $errors as  $error)
                $errorStr .= "<li> $error</li>";
        $errorStr .= "</font><br><br>";
    }else{
        //用来保存用户输入的信息到数据库或其他地方
        //这个保存的过程就略了
    }
    return  $errorStr;
}

?>


模板文件一: step1.html

<font size="2"><strong>步骤一 阅读《章程》</strong></font><br>
<textarea name="textarea" cols="20" rows="4" wrap="VIRTUAL">
第一条 不吸烟
第二条 不喝酒
第三条 不吃饭
</textarea>
<form name="form3" method="get" action="works.php"&

gt;
<input type="hidden" name="step1" value="1">
<input type="submit" value="我同意">
<input type="button" value="我不同意" onclick="window.close();">
</form>


模板文件二: step2.html

<strong><font size="2">步骤二 提交登记表</font></strong><br>
<form method="post" action="works.php">
<?= $errorStr ?>
<input type="hidden" name="step2" value="1">
输入登记名:<input type="text" name="username" value="<?=htmlspecialchars( $_POST[username]) ?>"><br> 
输入地址:<input type="text" name="address" value="<?=htmlspecialchars( $_POST[address]) ?>"><br>
<input type="submit" name="Submit4" value="提交">
</form>


模板文件三: step3.html

<font size="2"><strong>步骤三 提交成功</strong></font>

2007-09-04 10:20:00    出处:
热点文章/相关文章
关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口