一步一步制作一个php项目

目录结构:
项目名称:订餐派
dingcanpai:
    cache             //缓存
    core               //核心代码,本来想把一些类对象放入,因为我之前一直用的是面向对象的语言。
    image            //图片资源
    inc                 //include的文件,引用的文件
    scripts            //js文件夹
    styles             //css文件夹
    uploads        //上传的文件的文件夹
 
注册:
注册的本质还是向数据库内插入信息。
 
注册前需要做些准备:
启动session,顶一个常量,引入公共函数库。
 
 1     //启动session
 2     session_start();
 3     //定义个常量,用来授权调用includes里面的文件
 4     define('IN_TG',true);
 5     //定义个常量,用来指定本页的内容
 6     define('SCRIPT','register');
 7     //引入公共文件
 8     require dirname(__FILE__).'/inc/common.inc';
 9     //引入验证文件
10     include ROOT_PATH.'inc/check.func.inc';

获取url中的动作 用$_GET['action'],如果想测试的话可以用print_r($_POST) 打印出post的内容。 这是个很好用的测试过程。 

代码中的_is_repeat是用来执行传入的sql语句,并获得一行的内容。 以此行来判断是否正确。 

 1 if(isset($_GET['action']) && $_GET['action']=='register'){
 2        /* if (empty($_system['register'])) {
 3             exit('不要非法注册!');
 4         }*/
 5         //echo('测试');
 6 
 7         //创建一个空数组,用来存放提交过来的合法数据
 8         $_clean = array();
 9         //可以通过唯一标识符来防止恶意注册,伪装表单跨站攻击等。
10         //这个存放入数据库的唯一标识符还有第二个用处,就是登录cookies验证
11         $_uniqid =  $_SESSION['uniqid'];
12         $_clean['uniqid'] = _check_uniqid($_POST['uniqid'],$_SESSION['uniqid']);
13         //active也是一个唯一标识符,用来刚注册的用户进行激活处理,方可登录。
14         $_clean['username'] = _check_username($_POST['username'],2,20);
15         $_clean['password'] = _check_password($_POST['password'],6);
16         $_clean['reg_real_name'] = $_POST['reg_real_name']; //真实姓名
17 
18         //在新增之前,要判断用户名是否重复
19         _is_repeat(
20             "SELECT name FROM user WHERE name='{$_clean['username']}' LIMIT 1",
21             '对不起,此用户已被注册'
22         );
23 
24         //新增用户  //在双引号里,直接放变量是可以的,比如$_username,但如果是数组,就必须加上{} ,比如 {$_clean['username']}
25         _query("INSERT INTO USER (name, pwd, uniqid, realname)values
26                                  ('{$_clean['username']}','{$_clean['password']}', '{$_clean['uniqid']}', '{$_clean['reg_real_name']}' )");
27 
28         if (_affected_rows() == 1) {
29             //获取刚刚新增的ID
30             $_clean['id'] = _insert_id();
31             _close();
32             //_session_destroy();
33             //生成XML
34             //_set_xml('new.xml',$_clean);
35             _location('恭喜你,注册成功!','active.php?active='.$_clean['active']);
36         } else {
37             _close();
38             //_session_destroy();
39             _location('很遗憾,注册失败!','register.php');
40         }
41     }
1 function _is_repeat($_sql,$_info) {
2     if (_fetch_array($_sql)) {
3         _alert_back($_info);
4     }
5 }

_fetch_array 执行的是mysql_fetch_array的这个方法,这个方法直接判断query的值是否是多行的如果是的就认为是错误的。

_query调用的是mysql_query的方法,用来执行sql,如果失败直接进来,如果成功,就返回结果

1 function _query($_sql){
2     if (!$_result = mysql_query($_sql)) {
3         exit('SQL执行失败'.mysql_error());
4     }
5     return $_result;
6 }

_affected_rows是获取受影响函数的方法。

_insert_id 调用的是mysql_insert_id 获取刚刚插入的数据的id。这样就OK了。

 

登录:

 1   $_clean = array();
 2         print_r($_POST);
 3         //可以通过唯一标识符来防止恶意注册,伪装表单跨站攻击等。
 4         //这个存放入数据库的唯一标识符还有第二个用处,就是登录cookies验证
 5         $_uniqid =  $_SESSION['uniqid'];
 6         $_clean['uniqid'] = _check_uniqid($_POST['uniqid'],$_SESSION['uniqid']);
 7         //active也是一个唯一标识符,用来刚注册的用户进行激活处理,方可登录。
 8         $_clean['username'] = _check_username($_POST['login_name'],2,20);
 9         $_clean['password'] = _get_modify_password($_POST['password'],6);
10 
11         //登录
12         $_rows = _fetch_array("SELECT name,uniqid FROM user WHERE name='{$_clean['username']}' AND pwd='{$_clean['password']}' LIMIT 1");
13         if(!empty($_rows)){//成功
14             print_r($_rows);
15             //登录成功?
16             _close();
17             _setcookie($_rows['name'], $_rows['uniqid']);
18             //_location('恭喜你,登录成功!','active.php?active='.$_clean['active']);
19         }else{
20             _close();
21             _location('登录失败,请确认你的用户名和密码.','active.php?active='.$_clean['active']);
22         }

empty($rows)通过判断返回的值是否为空来确定是否登录成功。

当然返回有结果了这事儿还没有完,要设置下cookie才行,设置后才算是完成。这样才能把前面和后面的都穿起来。 

 

posted @ 2014-07-24 00:01  行者,无疆  阅读(427)  评论(0)    收藏  举报