使用php完成一個使用者註冊以及管理的demo(一)
阿新 • • 發佈:2019-01-22
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
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’;