日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

HTML+CSS+PHP+COOKIE在本地搭建一个简易的登陆注册网页

發布時間:2024/9/30 php 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTML+CSS+PHP+COOKIE在本地搭建一个简易的登陆注册网页 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

昨天晚上看了一葉飄零大佬的直播,大佬說:初學者最好自己先動手去做一些項目,這樣能更好的了解原理,恰好學長要求做一個簡易的登陸注冊系統,利用這個機會再學習一波。

做了兩天,搞懂了很多概念,也遇到了很多問題,但是這個過程特別有意思,記錄一下,把那些學到的知識也總結一下。

一:準備工作
打開mySQL

打開網站根目錄

這里我直接放在了WWW目錄下,有點亂。

這樣準備工作就做好了,開始奮斗了。

開始之前把我寫的php文件簡單描述一下:
login.php(登陸頁面)
logincookie.php(連接數據庫+設置cookie頁面)
welcome.php (判斷是否有cookie以防繞過+登陸后呈現的頁面)
end.php (清除cookie頁面)
Register.php (注冊頁面)
linkmysql.php(注冊時連接數據庫頁面)
Register link.php(注冊判斷是否注冊成功和導入數據庫用戶信息頁面)
fail.php (登陸失敗頁面)

二:創建登陸頁面和注冊頁面

感悟:
那句話怎么說,學到用時方恨少,差不多就這個意思,之前學過HTML和CSS,但一自己寫。。。,就會寫個簡單的表單,無非就是加一個外部樣式CSS改一下背景顏色什么的。。。所以還得查大佬的。


這個樣式干凈又好看(自己認為),所以模仿,但是并非是復制粘貼,自己一步一步敲。。。
(下面是轉載自mind_programmonkey 大佬的CSS)

html{width: 100%;height: 100%;overflow: hidden;font-style: sans-serif; } body{width: 100%;height: 100%;font-family: 'Open Sans',sans-serif;margin: 0;background-color: #4A374A; } #login{position: absolute;top: 50%;left:50%;margin: -150px 0 0 -150px;width: 300px;height: 300px; } #login h1{color: #fff;text-shadow:0 0 10px;letter-spacing: 1px;text-align: center; } h1{font-size: 2em;margin: 0.67em 0; } input{width: 278px;height: 18px;margin-bottom: 10px;outline: none;padding: 10px;font-size: 13px;color: #fff;text-shadow:1px 1px 1px;border-top: 1px solid #312E3D;border-left: 1px solid #312E3D;border-right: 1px solid #312E3D;border-bottom: 1px solid #56536A;border-radius: 4px;background-color: #2D2D3F; } .but{width: 300px;min-height: 20px;display: block;background-color: #4a77d4;border: 1px solid #3762bc;color: #fff;padding: 9px 14px;font-size: 15px;line-height: normal;border-radius: 5px;margin: 0; } --------------------- 作者:mind_programmonkey 來源:CSDN 原文:https://blog.csdn.net/Mind_programmonkey/article/details/78522494

這是我的HTML代碼

<?php ?> <!DOCTYPE html> <html> <head><meta charset="utf-8"><title>請登陸</title><link rel="stylesheet" type="text/css" media="screen" href="1.css"><script src="main.js"></script> </head> <body><div id="login"><h1>login</h1><form action="logincookie.php" method="post"><input type="text" name="username" placeholder="用戶名" /> <input type="password" name="password" placeholder="密碼" /><br /><button class="tj" type="submit">登陸</button></form><form action="Register.php" method="post"><button class="zc" type="submit">注冊</button></form> </body> </html>

做之前沒有懂其中的一些東西,現在做完了把之前不懂的弄懂。
(下面是我的,就是一些值改過)

body {width: 100px;height: 100px;background-color: beige;background-image: url(28.jpg);//加一張圖片 } #login{position: absolute;//通過絕對定位,元素可以放置到頁面上的任何位置。下面的標題距離頁面左側 50%,距離頁面頂部 50%。top:50%;left:50%;margin: -150px 0 0 -150px;//這個簡寫屬性設置一個元素所有外邊距的寬度,或者設置各邊上外邊距的寬度。該屬性可以有 1 到 4 個值,上外邊距是 -150px,右外邊距是 0px,下外邊距是 0px,左外邊距是 -150pxwidth: 300px;height: 300px; }#login h1{color: #9393FF;text-shadow: 0 0 10px;//text-shadow 屬性向文本設置陰影,其他添加的效果可以在W3school查到。letter-spacing: 1px;//letter-spacing 屬性增加或減少字符間的空白(字符間距)text-align: center;//text-align 屬性規定元素中的文本的水平對齊方式,這里是居中對齊。 }h1 {font-size: 2em;margin: 0.67em 0; }input {width: 300px;height: 20px;margin-bottom: 10px;//margin-bottom 屬性設置元素的下外邊距outline: none;//outline (輪廓)是繪制于元素周圍的一條線,位于邊框邊緣的外圍,可起到突出元素的作用padding: 10px;//padding 簡寫屬性在一個聲明中設置所有內邊距屬性,所有 4 個內邊距都是 10px.font-size: 20px;color: #fff;text-shadow: 1px 1px 1px;//text-shadow屬性向文本設置陰影border-top: 1px solid #312E3D;//border-top 屬性在一行聲明中為上邊框設置所有的屬性border-left: 1px solid #312E3D;border-right: 1px solid #312E3D;border-bottom: 1px solid #56536A;border-radius: 4px;background-color:#2D2D3F;}.tj {width: 300px;min-height: 20px;display: block;background-color: #4a77d4;border: 1px solid #3762bc;//border 簡寫屬性在一個聲明設置所有的邊框屬性color: #fff;padding: 9px 14px;font-size:15px;line-height: normal;//border-radius: 5px;margin: 0px; }.zc {width: 300px;min-height: 20px;display: block;background-color: #33CC33;border: 1px solid #3762bc;color: #fff;padding: 9px 14px;font-size:15px;line-height: normal;//line-height 屬性設置行間的距離(行高)border-radius: 5px;margin: 0px; }

了解了這些屬性,但還是不知道為啥大佬這樣設置其中的一些數據,畢竟目前是小白,慢慢來吧。

我用的是CSS外部樣式表,把CSS存到1.css文件中,在login.php(登陸頁面)文件中引用。

<link rel="stylesheet" type="text/css" media="screen" href="1.css">

這樣,就完成了第一步!
實現效果如下:

在登陸頁面加一個注冊按鈕

在1.css里面添加一段

.zc {width: 300px;min-height: 20px;display: block;background-color: #33CC33;border: 1px solid #3762bc;color: #fff;padding: 9px 14px;font-size:15px;line-height: normal;//line-height 屬性設置行間的距離(行高)border-radius: 5px;margin: 0px; }

實現效果:

再做一個注冊頁面(Register.php),采用相同的CSS,換個顏色即可。
Register.php
代碼如下:

<?php ?> <!DOCTYPE html> <html> <head><meta charset="utf-8"><title>請注冊</title><link rel="stylesheet" type="text/css" media="screen" href="3.css"> </head> <body><div id="Register"><h1>Register</h1><form action="Register link.php" method="POST"><input type="text" name="username" placeholder="請輸入用戶名" /> <input type="password" name="password" placeholder="請輸入密碼" /><br /><button class="zc" type="submit">注冊</button></form> </body> </html>

實現效果如下:

這樣就實現了登陸頁面和注冊頁面。

三:連接mySQL和設置COOKIE
我們的登陸頁面和注冊頁面都已經做好了,現在就來寫一個PHP文件來連接數據庫并且設置一下cookie.
logincookie.php(連接數據庫+設置cookie頁面)
代碼如下:

<?php //第一次登陸的時候,通過用戶輸入的信息來確認用戶 header('Content-type: texy/html;charset=utf-8'); //設置編碼,防止亂碼 if ( ( $_POST['username'] != null ) && ( $_POST['password'] != null ) ) {//判斷輸入是否為空$userName = $_POST['username'];//post方式接收傳來的參數,用定義的$userName和$password接收$password = $_POST['password'];//從數據庫獲取用戶信息//數據庫連接信息 分別為主機 數據庫用戶名 密碼$conn = mysqli_connect('localhost','root','root');mysqli_select_db($conn,'login');//連接所創建的login數據庫$sql = "select * from user where username = '$userName'";//從數據庫表中獲取數據$res = mysqli_query($conn,$sql);//針對login這個數據庫進行查詢, 查詢是否存在有這個用戶名$row = mysqli_fetch_array($res);//輸出查詢結果,傳給$rowif ($row['username']!=$userName) {echo '不能登陸';header('Location:fail.php');}else if($row['username']==$userName&&$row['password']!=$password){echo '不能登陸';header('Location:fail.php');}else if($row['username']!=$userName&&$row['password']!=$password) {echo '不能登陸';header('Location:fail.php');}else if($row['username']==$userName&&$row['password'] ==$password) { //如果密碼驗證通過,設置一個cookies,把用戶名保存在客戶端setcookie('username',$userName,time()+3600);//設置一個小時//最后跳轉到登錄后的歡迎頁面echo '登陸成功';header('Location:welcome.php');//跳轉到最后的歡迎頁面} } else {echo '登陸失敗';header('Location:fail.php');//跳轉到失敗頁面 }

這里面的PHP連接數據庫語法,需要學習一下才能知道這些語句的意思。
w3school網站
這個網站特別好,特別詳細,從這里面可以學習到PHP連接mySQL語法。

例如: mysql_connect(servername,username,password);//主機名、數據庫用戶名、密碼 //一般初始的數據庫用戶名和密碼都是 root

語法學習會再總結一個單獨的博客來記錄一下,這里主要介紹一下搭建流程和遇到的問題

通過PHP連接mySQL語法我們就可將用戶輸入的信息用POST方式傳入到數據庫中,然后利用查詢語句進行查詢數據庫數據,進行比對,然后判斷用戶名和密碼是否與數據庫所存數據相同。

接下來實現cookie,一開始真的不知道有什么用處,查了一些博客,看了一些概念,就知道是把用戶的信息存儲到客戶端,方便用戶下次登入。但其實cookie也可以設置防繞過的功能,就例如:
如果我不設置cookie,那么我的登陸頁面和最終頁面都是獨立的,靠的也只是HTML中的<form action=" "> 來連接進行跳轉功能。但這樣不安全,如果對方注冊一個用戶,登陸到你的最終頁面,可以直接在url地址欄里直接輸入這個文件,例如我的最終頁面是welcome.php,對方一輸入沒有如何阻攔,直接就可以進入。所以設置cookie的作用不僅是把用戶的信息保存在客戶端,更重要的防止繞過。

cookie的具體介紹可以看一下
B站孫勝利老師的講解的和菜鳥教程官網上的介紹,特別詳細。

一開始模仿大佬做,設置了兩個cookie,一個是用戶名的。另一個是密碼的,但已經寫過注銷cookie了PHP文件卻依舊能在url地址欄里直接進入后臺,一開始真的不知道錯誤點在那,搞了很長時間,但這個過程及其有意思,查資料,問朋友,自己修改代碼。最后發現。。。,其實完全不用設置密碼的cookie了,我設置用戶名cookie的前提便是用戶名輸入和數據庫密碼相等了,所以只要設置一個用戶名cookie,便能夠識別和登陸。也可以在注銷cookie時,把密碼的cookie注銷,之前直接能登入后臺就是因為我設置了兩個cookie,卻只清除了一個。。。

找到問題所在就可以成功設置好cookie,并且注銷cookie了。

四:實現登陸功能和注銷cookie
在上面我們實現了兩個頁面,一個是登陸頁面,一個連接數據庫+cookie的,下面我們還需要兩個頁面。
一個登陸失敗頁面(fail.php)
代碼如下:

<?php ?><!DOCTYPE html> <html> <head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>登陸失敗</title><link rel="stylesheet" type="text/css" media="screen" href="2.css"> </head> <body><div id="login"><h1>請重新登陸</h1></div><a href="login.php">重新登陸</a> </body> </html>

可以看logincookie.php的代碼中,如果用戶名和密碼有一個不正確的時候,都會跳轉到fail.php頁面。
實現效果:

下面我們再實現一個用戶登陸成功的頁面(welcome.php
代碼如下:

<?phpif(!isset($_COOKIE['username'])){//如果cookie沒有設置,則不能登陸。echo '不能登陸';exit();} ?> //上面的代碼便是設置cookie的作用便用于此,這樣便可防止直接登入后臺 <!DOCTYPE html> <html> <head><meta charset="utf-8"><title>請登陸</title><link rel="stylesheet" type="text/css" media="screen" href="4.css"> </head> <body><div id="Landingsuccessfully"><h1>Landingsuccessfully</h1><a href="end.php">Please cancel</a> </body> </html>

實現效果:
直接從url里面登陸,顯示結果:

正常用戶登陸,顯示結果:

因為我設置的cookie是一個小時的,我們需要手動清除一下cookie,否則客戶端會保留cookie,下次在url里直接可以登陸后臺。

所以再寫一個注銷cookie的頁面(end.php)
代碼如下:

<?php ini_set("error_reporting","E_ALL & ~E_NOTICE"); header('Content-type:text/html;charset=utf-8'); if (isset($_COOKIE['username'])) {setcookie('username',$userName,time()-3600);echo '注銷成功'; } ?>

之前這個頁面老是報錯,大致便是Notice:Undefined varialbe:變量名稱,但注銷功能能正常實現,加上

ini_set("error_reporting","E_ALL & ~E_NOTICE");

便可以解決報錯問題,查資料發現。
在4.3.0中運行正常,在4.3.1中運行會提示Notice:Undefined varialbe:tmp_i
修改方法:
在程序開頭加一句:
error_reporting(E_ALL & ~E_NOTICE); 或error_reporting(E_ALL ^ E_NOTICE);
具體查看:
報錯原因和修改方法

這樣就實現了cookie注銷的功能了
實現效果 :

進行一下測試,看是否清除cookie。
在url地址欄里直接登陸后臺試試

ok,看來確實注銷成功了,完成咯。

五:實現注冊功能
登陸功能也完全實現了,接下來我們就實現一下注冊功能。
這里我們又寫了三個頁面(好亂),不過畢竟是小白,只要能寫出來就行。
首先是注冊頁面(Register.php)
代碼如下:

<?php ?> <!DOCTYPE html> <html> <head><meta charset="utf-8"><title>請注冊</title><link rel="stylesheet" type="text/css" media="screen" href="3.css"> </head> <body><div id="Register"><h1>Register</h1><form action="Register link.php" method="POST"><input type="text" name="username" placeholder="請輸入用戶名" /> <input type="password" name="password" placeholder="請輸入密碼" /><br /><button class="zc" type="submit">注冊</button></form> </body> </html>

接下來是連接數據庫(linkmysql.php)
代碼如下:

<?phpheader("Content-type: text/html; charset=utf-8");//設置編碼,防止亂碼$con = mysql_connect("localhost","root","root") or die("數據庫連接失敗");mysql_select_db('login') or die("指定的數據庫不能打開");mysql_query("set names utf8"); ?>

再就是導入信息的頁面(Register link.php)
代碼如下:

<?phprequire_once("linkmysql.php");//首先連接數據庫$name=trim($_POST['username']);//trim函數,過濾空格,使用trim函數,我們可以把表單中空格給過濾掉$password=$_POST['password'];$sql = "select * from user where username='$name'";//從數據庫查找用戶名數據$info = mysql_query($sql);//函數執行一條 MySQL 查詢$res = mysql_num_rows($info);//返回一行的結果if(empty($name)){//empty() 函數用于檢查一個變量是否為空。echo "<script>alert('用戶名不能為空');location.href='login.php';</script>";}else if(empty($password)){echo "<script>alert('密碼不能為空');location.href='login.php';</script>";}else{ if($res){echo "<script>alert('用戶名已存在');location.href='login.php';</script>";}else{$sql1 ="insert into user(username,password) values('".$name."','" .$password."')";//PHP MySQL 插入數據$result = mysql_query($sql1);//判斷插入數據是否成功if($result){echo "<script>alert('注冊成功')</script>";header('Location:login.php');}else{echo "<script>alert('注冊失敗')</script>";}} } ?>

這樣就實現了注冊功能。
這里面涉及了數據庫的PHP mySQL插入的語法,可以在菜鳥教程學習,之后再寫一篇總結一下這些語句的用法。

?,到此為止我們就實現了簡易的登陸注冊頁面。

雖然這個項目很小,但做出了真的很有成就感,同時覺得學習的東西真的好有意思,加油,繼續努力學習(開心!!!)。

總結

以上是生活随笔為你收集整理的HTML+CSS+PHP+COOKIE在本地搭建一个简易的登陆注册网页的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。