最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php+MySql實(shí)現(xiàn)登錄系統(tǒng)與輸出瀏覽者信息功能

 更新時(shí)間:2016年07月01日 11:06:26   投稿:lijiao  
這篇文章主要介紹了php+MySql實(shí)現(xiàn)登錄系統(tǒng)與輸出瀏覽者信息功能 的相關(guān)資料,需要的朋友可以參考下

本系統(tǒng),與之前在《ASP 連接Access數(shù)據(jù)庫(kù)的登陸系統(tǒng)》(點(diǎn)擊打開(kāi)鏈接)一文中的asp登錄系統(tǒng)的思想完全一樣,只是編程語(yǔ)言從asp變成了php,數(shù)據(jù)庫(kù)從Access變成了mysql。

一、基本目標(biāo)

首先在mysql存在著如下的用戶信息表:


在頁(yè)面中有一個(gè)登錄表單,上面需要用戶填寫(xiě)用戶名與密碼等信息

如果用戶輸入的用戶名在用戶信息表里面根本就沒(méi)有,那么則彈出“查無(wú)此人”的對(duì)話框,并返回本頁(yè)


如果用戶輸入的密碼錯(cuò)誤,那么則彈出“密碼錯(cuò)誤”的對(duì)話框,并返回本頁(yè)


如果用戶輸入的登錄信息正確,那么則跳到“登錄成功”的頁(yè)面,并輸出用戶當(dāng)前的IP、使用的系統(tǒng)的語(yǔ)言環(huán)境、與瀏覽器信息


“登錄成功”的頁(yè)面是被保護(hù)的,瀏覽器并不可以通過(guò)在瀏覽器中輸入地址的方式,繞開(kāi)輸入密碼的頁(yè)面,直接訪問(wèn)“登錄成功”頁(yè)面


二、基本思想


用戶輸入用戶名與密碼的那一頁(yè)用靜態(tài)頁(yè)面,只要其表單指向登錄判斷頁(yè)login.php就可以了。

welcome.php是用戶成功登錄的頁(yè)面,

exit.php用來(lái)銷毀session。

session就是用來(lái)存放用戶名與密碼的瀏覽器全局變量。

三、制作過(guò)程
 (1)login.html 
沒(méi)什么好說(shuō)的,就一個(gè)登錄表單,見(jiàn)如下代碼: 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登錄頁(yè)面</title>
</head>

<body>
<form action="login.php" method="post">
用戶名:<input type="text" name="username" /><br />
密碼:<input type="password" name="password" /><br />
<input type="submit" value="登錄" />
</form>
</body>
</html>

 (2)exit.php

銷毀session頁(yè)面,并且在銷毀session之后,把頁(yè)面打回login.html
值得注意的是,在php一旦需要使用session,就應(yīng)該在所有代碼的第一行使用session_start();系統(tǒng)函數(shù),否則可能會(huì)出錯(cuò)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登出頁(yè)面</title>
</head>

<body>
<?php
session_start();
session_destroy();
?>
<script>
window.location.href="login.html";
</script>
</body>
</html>

 (3)login.php

登錄判斷頁(yè)面,還是經(jīng)典的登錄三段論,首先接收l(shuí)ogin.html傳遞過(guò)來(lái)的username與password,查詢用戶信息表中是否有這個(gè)username,如果沒(méi)有,再登錄失敗,如果有,再同時(shí)判斷傳過(guò)來(lái)的、用戶輸入的password是否等于這個(gè)username在數(shù)據(jù)庫(kù)中對(duì)應(yīng)的dbpassword,如果是,登錄成功,并把username存入session,傳遞給登錄成功頁(yè)面,否則登錄失敗。
本頁(yè)面還用到了系統(tǒng)內(nèi)置函數(shù)is_null判斷查詢結(jié)果是否為空,如果數(shù)據(jù)庫(kù)查詢結(jié)果為空,根本就不會(huì)有值賦予給新定義的dbusername,這個(gè)dbusername依舊為空。
同時(shí),如果登錄成功之后,還要使用mt_rand(0,100000);在0~100000中產(chǎn)生一個(gè)保護(hù)登錄成功頁(yè)面的隨機(jī)數(shù)code。
并且做完一切判斷之后,記得在最后加入一條關(guān)閉數(shù)據(jù)庫(kù)的語(yǔ)句,人走帶門。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登陸中……</title>
</head>

<body>
<?php
session_start();
$username=$_REQUEST["username"];
$password=$_REQUEST["password"];
$con=mysql_connect("localhost","root","root");
if(!$con){
 die("數(shù)據(jù)庫(kù)連接失敗!");
 }
mysql_select_db("test",$con);
$dbusername=null;
$dbpassword=null;
$result=mysql_query("select * from user where username='".$username."';");
while($row=mysql_fetch_array($result)){
 $dbusername=$row["username"];
 $dbpassword=$row["password"];
}
if(is_null($dbusername)){
?>
<script>
alert("查無(wú)此人!");
window.location.href="login.html";
</script>
<?php 
 }
else{
 if($dbpassword!=$password){
?>
<script>
alert("密碼錯(cuò)誤!");
window.location.href="login.html";
</script>    
<?php
 }
 else{
 $_SESSION["username"]=$username;
 $_SESSION["code"]=mt_rand(0,100000);
?>
<script>
window.location.href="welcome.php";
</script> 
<?php
 }
 }
mysql_close($con);
?>

</body>
</html>

 (4)welcome.php

在welcome.php成功登錄頁(yè)面中,先要用isset來(lái)判斷是否有l(wèi)ogin.php傳遞過(guò)來(lái)的code,這里的isset與上面is_null的區(qū)別,isset是判斷有沒(méi)有這個(gè)變量,is_null是在有這個(gè)變量的前提下,判斷這個(gè)變量是否為null,如果沒(méi)有code這個(gè)session則說(shuō)明用戶非正常途徑登錄的,馬上扔到exit.php再見(jiàn)走人
如果是正常登錄,則通過(guò)server對(duì)象里面的各個(gè)小對(duì)象輸出用戶信息。

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>歡迎登錄</title>
</head>

<body>
<?php
session_start();
if(isset($_SESSION["code"])){
?>
歡迎登錄!<?php
echo "${_SESSION["username"]}";
?><br />
你的IP:<?php
echo "${_SERVER['REMOTE_ADDR']}";
?>
<br />
你的系統(tǒng)語(yǔ)言:<?php
echo "${_SERVER['HTTP_ACCEPT_LANGUAGE']}";
?>
<br />
你的瀏覽器為:<?php
echo "${_SERVER['HTTP_USER_AGENT']}";
?>
<br />
<a href="exit.php">退出登錄</a>
<?php
}
else{
?>
<script>
alert("請(qǐng)正常登錄!");
window.location.href="exit.php";
</script>
<?php
}
?>
</body>
</html>

 至此,整個(gè)登錄系統(tǒng)開(kāi)發(fā)完成。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)觀察者模式(Observer)

    學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)觀察者模式(Observer)

    這篇文章主要介紹了php設(shè)計(jì)模式中的觀察者模式,使用php實(shí)現(xiàn)觀察者模式,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 探討:如何使用PhpDocumentor生成文檔

    探討:如何使用PhpDocumentor生成文檔

    本篇文章是對(duì)使用PhpDocumentor生成文檔的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php 獲取全局變量的代碼

    php 獲取全局變量的代碼

    php 獲取全局變量的代碼,需要的朋友可以參考下。
    2011-04-04
  • 詳解PHP7開(kāi)啟OPcache和Swoole性能的提升對(duì)比

    詳解PHP7開(kāi)啟OPcache和Swoole性能的提升對(duì)比

    laravel作為最熱門的php框架之一,廣受認(rèn)可與歡迎。同時(shí)由于集成度很高,每次運(yùn)行都加載了大量文件,加之使用了大量的閉包、魔術(shù)方法,導(dǎo)致laravel框架很重,并發(fā)性能極差。OPcache和Swoole都是php的擴(kuò)展,這次旨在比較這兩個(gè)擴(kuò)展分別開(kāi)啟后對(duì)Laravel應(yīng)用的加速效果。
    2021-05-05
  • PHP自定義函數(shù)實(shí)現(xiàn)assign()數(shù)組分配到模板及extract()變量分配到模板功能示例

    PHP自定義函數(shù)實(shí)現(xiàn)assign()數(shù)組分配到模板及extract()變量分配到模板功能示例

    這篇文章主要介紹了PHP自定義函數(shù)實(shí)現(xiàn)assign()數(shù)組分配到模板及extract()變量分配到模板功能,可模擬tp框架中模板變量分配功能,涉及php基于面向?qū)ο蟮臄?shù)組賦值相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • PHP中非常有用卻鮮有人知的函數(shù)集錦

    PHP中非常有用卻鮮有人知的函數(shù)集錦

    這篇文章主要介紹了PHP中非常有用卻鮮有人知的函數(shù),結(jié)合實(shí)例形式總結(jié)分析了PHP中l(wèi)evenshtein、get_defined_vars、php_check_syntax、ignore_user_abort、highlight_string、highlight_file、get_browser等函數(shù)使用方法,需要的朋友可以參考下
    2019-08-08
  • php中iconv函數(shù)使用方法

    php中iconv函數(shù)使用方法

    最近在做一個(gè)程序,需要用到iconv函數(shù)把抓取來(lái)過(guò)的utf-8編碼的頁(yè)面轉(zhuǎn)成gb2312, 發(fā)現(xiàn)只有用iconv函數(shù)把抓取過(guò)來(lái)的數(shù)據(jù)一轉(zhuǎn)碼數(shù)據(jù)就會(huì)無(wú)緣無(wú)故的少一些。
    2008-05-05
  • PHP Header用于頁(yè)面跳轉(zhuǎn)時(shí)的幾個(gè)注意事項(xiàng)

    PHP Header用于頁(yè)面跳轉(zhuǎn)時(shí)的幾個(gè)注意事項(xiàng)

    大家都知道header函數(shù)中Location類型的標(biāo)頭是一種特殊的header調(diào)用,常用來(lái)實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn),在新手剛學(xué)習(xí)的時(shí)候有些注意事項(xiàng)要注意,下面通過(guò)本文來(lái)詳細(xì)看看吧。
    2016-10-10
  • PHP對(duì)文件進(jìn)行加鎖、解鎖實(shí)例

    PHP對(duì)文件進(jìn)行加鎖、解鎖實(shí)例

    這篇文章主要介紹了PHP對(duì)文件進(jìn)行加鎖、解鎖實(shí)例,本文直接給出實(shí)現(xiàn)代碼和代碼的使用方法,需要的朋友可以參考下
    2015-01-01
  • php超詳細(xì)講解命名管道

    php超詳細(xì)講解命名管道

    這篇文章主要介紹了php中通過(guò)命名管道實(shí)現(xiàn)跨語(yǔ)言進(jìn)程間通信的案例,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下
    2022-07-07

最新評(píng)論

夏河县| 隆昌县| 杭锦后旗| 拜城县| 阿巴嘎旗| 中超| 大理市| 蒲江县| 和龙市| 无极县| 武宣县| 杭州市| 开化县| 秀山| 萝北县| 古丈县| 城步| 克东县| 田林县| 黄石市| 楚雄市| 镶黄旗| 乌拉特中旗| 余江县| 玛纳斯县| 石狮市| 上高县| 多伦县| 易门县| 阿坝| 新宁县| 武威市| 宁晋县| 佛山市| 长岭县| 通州区| 宜兰市| 阳新县| 静宁县| 沂水县| 秀山|