1. 程式人生 > >使用php完成一個使用者註冊以及管理的demo(一)

使用php完成一個使用者註冊以及管理的demo(一)

1.設計mysql的使用者表
2.設計檔案結構
3.製作後臺增加使用者的介面
4.對於資料庫操作的封裝,用來操作資料庫的一些方式
5. include.php的製作

(1)使用者表的設計 mysql資料庫

/如果使用者表user已經存在的話,則刪除掉/
DROP TABLE IF EXISTS user;
/!40101 SET @saved_cs_client = @@character_set_client /;
/!40101 SET character_set_client = utf8 /;
CREATE TABLE user (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
username

varchar(20) NOT NULL,
password char(32) NOT NULL,
sex enum(‘男’,’女’,’保密’) NOT NULL DEFAULT ‘保密’,
email varchar(50) NOT NULL,
face varchar(50) NOT NULL,
/註冊時間/
regTime int(10) unsigned NOT NULL,
/活躍程度/
activeFlag tinyint(1) DEFAULT ‘0’,
PRIMARY KEY (id),
/使用者名稱不允許重複/
UNIQUE KEY username
(username)
)
/自增長從編號6開始,預設編碼為utf-8/
ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
(2)檔案的目錄結構
如圖片所示
其中addUser把資料提交到doAdminAction.php頁面中,在這個頁面中呼叫core(主幹,主要)資料夾裡的admin.inc.php中的函式操作與使用者有關的操作,lib資料夾裡的檔案裡的函式 mysql.func.php封裝了與資料庫有關的函式,page.func.php封裝了與分頁有關的函式(凡是帶test的是我自己用來測試的,不用管了(>_<))。在php中總是包含其他的檔案寫起來會很麻煩,利用include.php可以一次包含全部。具體的後邊再說。
(3)製作後臺增加使用者的介面

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<H3>新增管理員</H3>
<FORM  action="doAdminAction.php?act=addUser" method="post">
<TABLE width="60%" border="1" cellpadding="5" cellspacing="0" bgcolor="#cccccc">
<tr>
    <TD align="right">使用者名稱稱</TD>
    <TD><input type="text" name="username" placeholder="請輸入使用者名稱稱"/></TD>
</tr>
<tr>
    <TD align="right">使用者密碼</TD>
    <TD><input type="text" name="password" placeholder="請輸入使用者名稱稱"/></TD>
</tr>
<tr>
    <TD align="right">使用者郵箱</TD>
    <TD><input type="text" name="email" placeholder="請輸入使用者名稱稱"/></TD>
</tr>
<tr>
    <td align="right">性別</td>
    <td><input type="radio" name="sex" value="1" checked="checked"/><input type="radio" name="sex" value="2" /><input type="radio" name="sex" value="3" />保密
    </td>
</tr>
<tr>
        <td align="right">頭像</td>
        <td><input type="file" name="face" /></td>
</tr>
<tr>
    <TD colspan="2"><input type="submit" value="新增使用者"/></TD>
</tr>
</FORM>
</body>
</html>

效果如圖所示這裡寫圖片描述
(4)資料庫的封裝

<?php 
/**
 * 連線資料庫
 * @return resource
 */
function connect(){
    $link=mysql_connect(DB_HOST,DB_USER,DB_PWD) or die("資料庫連線失敗Error:".mysql_errno().":".mysql_error());
    mysql_set_charset(DB_CHARSET);
    mysql_select_db(DB_DBNAME) or die("指定資料庫開啟失敗");
    return $link;
}

/**
 * 完成記錄插入的操作
 * @param string $table
 * @param array $array
 * @return number
 */
function insert($table,$array){
    $keys=join(",",array_keys($array));
    $vals="'".join("','",array_values($array))."'";
    $sql="insert {$table}($keys) values({$vals})";
    mysql_query($sql);
    return mysql_insert_id();
}
//update imooc_admin set username='king' where id=1
/**
 * 記錄的更新操作
 * @param string $table
 * @param array $array
 * @param string $where
 * @return number
 */
function update($table,$array,$where=null){
    foreach($array as $key=>$val){
        if($str==null){
            $sep="";
        }else{
            $sep=",";
        }
        $str.=$sep.$key."='".$val."'";
    }
        $sql="update {$table} set {$str} ".($where==null?null:" where ".$where);
        $result=mysql_query($sql);
        //var_dump($result);
        //var_dump(mysql_affected_rows());exit;
        if($result){
            return mysql_affected_rows();
        }else{
            return false;
        }
}

/**
 *  刪除記錄
 * @param string $table
 * @param string $where
 * @return number
 */
function delete($table,$where=null){
    $where=$where==null?null:" where ".$where;
    $sql="delete from {$table} {$where}";
    mysql_query($sql);
    return mysql_affected_rows();
}

/**
 *得到指定一條記錄
 * @param string $sql
 * @param string $result_type
 * @return multitype:
 */
function fetchOne($sql,$result_type=MYSQL_ASSOC){
    $result=mysql_query($sql);
    $row=mysql_fetch_array($result,$result_type);
    return $row;
}


/**
 * 得到結果集中所有記錄 ...
 * @param string $sql
 * @param string $result_type
 * @return multitype:
 */
function fetchAll($sql,$result_type=MYSQL_ASSOC){
    $result=mysql_query($sql);
    while(@$row=mysql_fetch_array($result,$result_type)){
        $rows[]=$row;
    }
    return $rows;
}

/**
 * 得到結果集中的記錄條數
 * @param unknown_type $sql
 * @return number
 */
function getResultNum($sql){
    $result=mysql_query($sql);
    return mysql_num_rows($result);
}

/**
 * 得到上一步插入記錄的ID號
 * @return number
 */
function getInsertId(){
    return mysql_insert_id();
}

?>

(5)include.php的製作

<?php
header("content-type:text/html;charset=utf-8");
define("ROOT",dirname(__FILE__));
//設定包含的路徑,之後引入的檔案路徑都在這裡
set_include_path(".".PATH_SEPARATOR.ROOT."/lib".PATH_SEPARATOR.ROOT."/configs".PATH_SEPARATOR.ROOT."/core".PATH_SEPARATOR);
//引入檔案
require_once 'mysql.func.php';
require_once 'page.func.php';
require_once 'test.func.php';
require_once 'admin.inc.php';
require_once 'configs.php';
connect();//連線資料庫
?>

之後在其他的程式碼中如果需要以上的部分,再開頭加一句
require_once ‘../include.php’;