導航:首頁 > 編程語言 > php登錄驗證session

php登錄驗證session

發布時間:2024-11-24 13:01:38

php中使用session防止用戶非法登錄後台的方法

本文實例講述了php中使用session防止用戶非法登錄後台的方法。分享給大家供大家參考。具體如下:
一般來說,我們登錄網站後台時,伺服器會把登錄信息保存到session文件里,並通過讀取session文件來判斷是否可以進行後台操作。
以下面為例,假如admin.php是我們的後台操作頁面,如果沒有啟用
session,那麼,即便是沒有登錄,用戶照樣能訪問到該頁面,這時候,就需要用到
session
來防止用戶非法登錄到這個頁面了。下面是三個文件的代碼
登錄頁面:login.php
復制代碼
代碼如下:<h2>用戶登錄頁面</h2>
<form
action="loginProcess.php"
method="post">
用戶名:<input
type="text"
name="username"><br
/>
密 碼:<input
type="password"
name="pwd"><br
/>
<input
type="submit"
name="sub"
value="登錄後台">
</form>
<?php
if(!empty($_GET['errno'])){
if($_GET['errno']==1){

echo
"用戶名或密碼錯誤";
}else
if($_GET['errno']==2){

echo
"請輸入用戶名密碼";
}else
if($_GET['errno']==3){

echo
"非法訪問,請輸入用戶名和密碼";
}
}
?>
登錄信息處理頁面:loginProcess.php
復制代碼
代碼如下:<?php
//這里主要講session,關於登錄信息驗證,就不涉及到資料庫了
//接收登錄信息,保存session
if(!empty($_POST['sub'])){
if($_POST['username']=="admin"
&&
$_POST['pwd']=="admin"){

echo
"登錄成功";

session_start();//開啟session

$_SESSION['username']
=
$_POST['username'];//將登錄名保存到session中

header("Location:
admin.php");

exit();
}else{

header("Location:
login.php?errno=1");

exit();
}
}else{
header("Location:
login.php?errno=2");
exit();
}
?>
後台文件:admin.php
復制代碼
代碼如下:<?php
session_start();
if(empty($_SESSION['username'])){
header("Location:
login.php?errno=3");
exit();
}
echo
"你是管理員,你現在擁有後台管理許可權";
?>
希望本文所述對大家的php程序設計有所幫助。

② PHP會話驗證問題,怎麼解決

會話控制的思想就是指能夠在網站中根據一個會話跟蹤用戶。這里整理了詳細的代碼,有需要的小夥伴可以參考下。

概述

http 協議是無狀態的,對於每個請求,服務端無法區分用戶。PHP 會話控制就是給了用戶一把鑰匙(一個加密session字元串),同時這也是用戶身份的一個證明,服務端存放了這把鑰匙能打開的箱子(資料庫,內存資料庫或者使用文件做的),箱子裡面裝的就是用戶的各個變數信息。

傳統的php session 使用

<?php
//page1.php 啟動一個會話並注冊一個變數
session_start();
$_SESSION['user_var'] = "hello,codekissyoung!";
//這里的可以將$_SESSION理解為用戶的箱子,實際的實現是php在伺服器端生成的小文件
?>
<?php
//page2.php
session_start();
echo $_SESSION['user_var'];//通過鑰匙訪問自己的箱子內的變數
$_SESSION['user_var'] = "bey,codekissyoung!";
?>
<?php
//page3.php 銷毀鑰匙,一般在用戶注銷時,訪問page3.php文件
session_start();
session_destroy();
?>

提一個問題,鑰匙呢?沒看見給用戶鑰匙的操作啊?

這個操作是php背後幫我們做了的,自從你訪問page1.php 程序運行,session_start();這句時,php 會根據此刻的一些條件(用戶ip,瀏覽器號,時間等)生成一個PHPSESSID變數,http response 回客戶端後,這個PHPSESSID就已經存在你的瀏覽器cookie里了,每次你再次訪問這個域名時,該PHPSESSID都會發送到服務端。這個PHPSESSID 就是我這里說的用戶鑰匙了。

再一個問題,這個PHPSESSID的安全性,它是否容易被竊取,是否容易被偽造,是否容易被篡改?

使用 Https 可以防止被篡改。不使用PHPSESSID,而是自己生成一把秘鑰給用戶可以防止被偽造。至於是否容易被竊取,還真沒怎麼研究過。比如如果你電腦連著網,黑客入侵你電腦。

將生成的秘鑰存入瀏覽器cookie中

③ php登錄驗證問題session

你可以在資料庫中創建一個session表,裡面存放已登錄用戶的
用戶名、登陸IP、隨機碼
重要提示:用戶每成功登陸一次,那麼就更新IP和隨機碼,隨機碼會存在$_SESSION['code']里
假設A在機器01上登陸過,那麼seesion表存 A、127.0.0.1、123456
情況(1):
1、當A在另外一個機器02從登陸頁面登陸,那麼按「重要提示」的操作方法,session的數據會被更新成 A、127.0.0.2、456789.
2、然後A在第一台機器01上刷新網頁,程序發現資料庫中A最新的登陸IP有變動,那麼在機器01上將A踢下線。
情況(2):
1、A在同一機器上的另外一個瀏覽器從登陸頁面登陸,那麼按「重要提示」的操作方法,session的數據會被更新成 A、127.0.0.1、987545.
2、然後A在第一台機器01上的第一個瀏覽器刷新網頁,程序發現該瀏覽器與伺服器的SESSION中保存的$_SESSION['code']與資料庫中A最新的登陸隨機碼不同,那麼在第一個瀏覽器上將A踢下線。

補充一點:同一台機器上所有利用IE內核的瀏覽器,其實session是通用的,不管你用純正的IE、還是各大瀏覽器的兼容模式,或者是IETester的各個瀏覽器版本

④ php網站驗證登錄後怎麼跳向用戶管理頁面

PHP登陸後跳轉到用戶管理頁面,利用$_SERVER全局變數可以實現這個功能。
具體實現方法為:在提示用戶登錄的同時,在session或者cookie中記錄下請求頁面的URL;登錄驗證成功後在跳轉回該URL。
1、checklogin.php代碼:
session_start();
if (!isset ($_SESSION['login_ok']))
{
echo "<script language=javascript>alert ('要訪問的頁面需要先登錄。');</script>";
$_SESSION['userurl'] = $_SERVER['REQUEST_URI'];
echo '<script language=javascript>window.location.href="login.php"</script>';
}
2、login.php代碼
session_start();

//此處省略了賬號密碼驗證代碼,驗證OK再執行下面代碼

if (isset ($_SESSION['userurl']))
{
//會話中有要跳轉的頁面
$url = $_SESSION['userurl'];
}
else
{
//沒有要跳轉的頁面,則轉到首頁
$url = "userManager.php";
}
//0.5s後跳轉
echo "<meta http-equiv=\"refresh\" content=\"0.5;url=$url\">";

閱讀全文

與php登錄驗證session相關的資料

熱點內容
華為通話加密電話 瀏覽:58
什麼伺服器可以代替計算機 瀏覽:960
伺服器當電腦用怎麼安裝顯卡 瀏覽:519
回女友消息神器python 瀏覽:50
App分類框怎麼添加 瀏覽:543
海爾帥王子冰箱壓縮機啟動跳閘 瀏覽:479
cadfill命令什麼意思 瀏覽:334
中公專項題庫pdf 瀏覽:931
拼多多緩存在哪個文件夾 瀏覽:640
安卓無卡汽車導航怎麼升級 瀏覽:48
cs管理員命令是什麼 瀏覽:126
華為v10模擬加密門禁卡 瀏覽:725
android修改app名稱 瀏覽:640
輻射3夥伴命令 瀏覽:247
蘋果電腦pdf轉換成word 瀏覽:921
純小數運演算法則 瀏覽:385
php什麼是事務 瀏覽:859
怎麼添加網名文件夾 瀏覽:769
啊哈演算法語言 瀏覽:677
馬來西亞加密貨幣政策 瀏覽:233