創(chuàng)建conn.php,連接數(shù)據(jù)庫(kù)。
創(chuàng)新互聯(lián)專注于蘭坪網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供蘭坪營(yíng)銷型網(wǎng)站建設(shè),蘭坪網(wǎng)站制作、蘭坪網(wǎng)頁(yè)設(shè)計(jì)、蘭坪網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造蘭坪網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供蘭坪網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
$dns = 'mysql:host=127.0.0.1;dbname=test';
$username = 'root';
$password = 'root';
// 1.連接數(shù)據(jù)庫(kù),創(chuàng)建PDO對(duì)象
$pdo = new PDO($dns,$username,$password);
創(chuàng)建login.html,登陸頁(yè)面。
用戶名
密 碼
創(chuàng)建login.php,驗(yàn)證賬號(hào)密碼。
header("Content-Type: text/html; charset=utf8");
if(!isset($_POST["submit"])){
exit("錯(cuò)誤執(zhí)行");
}//檢測(cè)是否有submit操作
include('conn.php');//鏈接數(shù)據(jù)庫(kù)
$name = $_POST['name'];//post獲得用戶名表單值
$pwd = sha1($_POST['password']);//post獲得用戶密碼單值
if ($name $pwd){//如果用戶名和密碼都不為空
$sql = "select * from user where username = '$name' and password='$pwd'";//檢測(cè)數(shù)據(jù)庫(kù)是否有對(duì)應(yīng)的username和password的sql
$stmt = $pdo-prepare($sql);
$stmt-execute();
if($stmt-fetch(PDO::FETCH_BOUND)){//0 false 1 true
header("refresh:0;url=welcome.html");//如果成功跳轉(zhuǎn)至welcome.html頁(yè)面
exit;
}else{
echo "用戶名或密碼錯(cuò)誤";
echo "
setTimeout(function(){window.location.href='login.html';},1000);
";//如果錯(cuò)誤使用js 1秒后跳轉(zhuǎn)到登錄頁(yè)面重試;
}
}else{//如果用戶名或密碼有空
echo "表單填寫(xiě)不完整";
echo "
setTimeout(function(){window.location.href='login.html';},1000);
";
//如果錯(cuò)誤使用js 1秒后跳轉(zhuǎn)到登錄頁(yè)面重試;
}
$pdo = null;
創(chuàng)建signup.html,注冊(cè)頁(yè)面
用戶名:
密 碼:
創(chuàng)建signup.php
header("Content-Type: text/html; charset=utf8");
if(!isset($_POST['submit'])){
exit("錯(cuò)誤執(zhí)行");
}//判斷是否有submit操作
$name=$_POST['name'];//post獲取表單里的name
$pwd = sha1($_POST['password']);//post獲取表單里的password
include('conn.php');//鏈接數(shù)據(jù)庫(kù)
$sql="insert into user(id,username,password) values (null,'$name','$pwd')";//向數(shù)據(jù)庫(kù)插入表單傳來(lái)的值的sql
$stmt = $pdo-prepare($sql);
$stmt-execute();
$stmt-fetch(PDO::FETCH_BOUND);
if (!$stmt){
die('Error: ' . $stmt-getMessage());//如果sql執(zhí)行失敗輸出錯(cuò)誤
}else{
echo "注冊(cè)成功";//成功輸出注冊(cè)成功
}
$pdo = null;//關(guān)閉數(shù)據(jù)庫(kù)
兩個(gè)都有問(wèn)題才對(duì),你的SQL語(yǔ)句有錯(cuò),假設(shè)$_POST['username']='user';
$_POST['password']='pass';你得到的語(yǔ)句是SELECT username FROM DB_TABLE WHERE name= user and password= pass
而正確的語(yǔ)句應(yīng)該是SELECT username FROM DB_TABLE WHERE name= 'user' and password= 'pass'(掉了幾個(gè)引號(hào)所以報(bào)錯(cuò))
你可以做一個(gè)簡(jiǎn)單的例如你只有用戶名和密碼即可那么你先在數(shù)據(jù)庫(kù)(以mysql為例)中建表例如叫做user 字段為 id name pass分別是編號(hào)、用戶名、密碼長(zhǎng)度分別是int(8) a_t(自動(dòng)編號(hào)) 主鍵,varchar(50) ,varchar(50) 你可以添加一個(gè)測(cè)試數(shù)據(jù) 例如 1,admin,admin//說(shuō)明密碼這里不說(shuō)加密的問(wèn)題,用明文實(shí)現(xiàn) 登錄頁(yè)面的代碼:login.phphtmlheadtitle用戶登錄/title/headbodyform action="checklogin.php" name="loginform" method="post"用戶名:input name="name" type="text"br密 碼:input name="password" type="password"brinput value="登錄" type="submit"br/form/body/html checklogin.php代碼(檢測(cè)登錄): $name=$_POST[name];$pass=$_POST[password];session_start();//這個(gè)可以維持登錄狀態(tài),可以參照session的使用
//登錄檢查函數(shù) function login_state($uid,$user_shell){ $sql="SELECT * FROM `user` WHERE `name`='$name'";
$query=@mysql_query($sql) or die(mysql_error());
$us=is_array($row=@mysql_fetch_array($query));
$user_shell=$us ? $user_shell==$row[password]:FALSE;
if($user_shell){ echo "scriptalert('登錄成功');/script";
return $row;
}else{
echo "scriptalert('您暫時(shí)不能瀏覽該頁(yè)面,請(qǐng)先登錄');location.href='login.php';/script";
} }login_state($name,$password);?
希望可以幫到您,如果還有問(wèn)題可以聯(lián)系2458285853
建議樓主檢查一下sql對(duì)不對(duì),主要看你數(shù)據(jù)庫(kù)有沒(méi)有sql語(yǔ)句的字段或者表
還有,你的密碼是經(jīng)過(guò)md5處理的,所以,你看你在做注冊(cè)用戶的時(shí)候,密碼是不是也經(jīng)過(guò)了md5處理,沒(méi)有的話,系統(tǒng)會(huì)判斷2個(gè)密碼不相等,盡管他們的值是相同的(MD5不懂的話去搜搜,大把大把的),我估計(jì)是你注冊(cè)的時(shí)候密碼沒(méi)處理~,你把$password = MD5($_POST['password']);的MD5去掉試試
if($check_query){
$_SESSION['username'] = $username;
echo $username,' 歡迎你!進(jìn)入 a href="my.php"用戶中心/abr /';
exit;
} else {
exit('登錄失?。↑c(diǎn)擊此處 a href="javascript:history.back(-1);"返回/a 重試');
}
$_SESSION['username'] = $username 是把用戶名的值賦給一個(gè)叫username的session(這屬于會(huì)話,不懂去搜搜看)
?php
//注冊(cè)頁(yè)
$username?=?$_POST['username'];
$password?=?$_POST['password'];
$password1?=?$_POST['password1'];
$email?=?$_POST['mail'];
//判斷用戶名
if(empty($username)){
exit('用戶名不能為空');
}
//判斷密碼
if(empty($password)){
exit('密碼不能為空');
}
if($password?==?$password1){
}else{
exit('兩次密碼不相等');
}??
//判斷郵箱格式????
$yx?=?'/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/';????
if(preg_match($yx,$email)){
}else{
exit('郵箱格式錯(cuò)誤');
}?
//連接數(shù)據(jù)庫(kù)
$link?=?mysqli_connect('localhost','root','')?or?die('失敗');
//設(shè)置字符集,選擇數(shù)據(jù)庫(kù)表;
mysqli_select_db($link,"test")or?die('選擇數(shù)據(jù)表失敗');
mysqli_set_charset($link,'utf8')or?die('設(shè)置字符集失敗');
//寫(xiě)入注冊(cè)表
$reg?=?"insert?into?user(name,password)?value('$username',md5('$password'))";
$reg1?=?"insert?into?userdetail(name,emali,nickname)?value('{$username}','{$email}','{$username}')";
//釋放結(jié)果集;
//提交sql語(yǔ)句
$result1?=?mysqli_query($link,$reg1);
$result?=?mysqli_query($link,$reg);
if(mysqli_affected_rows($link)){
if(mysqli_affected_rows($link)?0){
mysqli_close($link);
die('用戶添加成功!');
}else{
mysqli_close($link);
die('用戶名重復(fù),請(qǐng)修改后重新添加');
}
}else{
mysqli_close($link);
die('用戶添加失敗,請(qǐng)重新添加');
}
//關(guān)閉退出
mysqli_close($link)?or?exit('no');
這是那過(guò)程 寫(xiě)的 ,