[英]Working with PHP Sessions
我剛剛開發了一個用戶登錄系統,並希望為不同的用戶創建不同的會話。
如何使用PHP編寫代碼,以便啟動會話,如果輸入的用戶名是“ a”,它將重定向到另一個頁面,如果用戶名是“ b”,則它將重定向到另一個頁面。
我用這個
session_start();
switch ($_SESSION['username']) {
case 'a':
// $_SESSION['username'] is 'a'
// redirect to file1.php
header('Location: file1.php');
die();
break;
case 'b':
// $_SESSION['username'] is 'b'
// redirect to file2.php
header('Location: file2.php');
die();
break;
default:
// $_SESSION['username'] is neither a, nor b, or is not set at all
// redirect to default.php
header('Location: default.php');
die();
break;
}
但是無論我輸入什么用戶名,它都會帶我到file1.php
session_start();
// ...
if ($_SESSION['username'] == 'a') {
header("Location: ./page_a");
} else if ($_SESSION['username'] == 'b') {
header("Location: ./page_b");
} else {
header("Location: ./otherpage");
}
只需通過以下方式開始php會話:
session_start() ;
然后,在登錄時,將登錄用戶的ID保存到:
$_SESSION['currentuser'] = $userid ;
注銷時,請不要忘記:
unset($_SESSION['currentuser']) ;
在您要針對每個用戶顯示的頁面上,檢查$_SESSION['currentuser']
,然后重定向:
if($_SESSION['currentuser'] == 1) {
Header("Location:/page1.php") ;
} else {
Header("Location:/page_default.php") ;
}
exit ;
您所有的PHP頁面均應以以下內容開頭:
<?php
session_start();
您將像這樣設置會話變量:
$_SESSION['myVariableName'] = 'myIntendedValue';
因此,在處理登錄時,您可能會為用戶名或用戶ID設置一個會話變量,然后可以處理該重定向:
if (isset($_SESSION['userName']) && $_SESSION['userName'] == "a") {
header("Location: pageA.php");
exit();
} else if (isset($_SESSION['userName']) && $_SESSION['userName'] == "b") {
header("Location: pageB.php");
exit();
}
使用switch()
代替if語句:
session_start();
switch ($_SESSION['username'])
{
case 'a':
// $_SESSION['username'] is 'a'
// redirect to file1.php
header('Location: file1.php');
die();
break;
case 'b':
// $_SESSION['username'] is 'b'
// redirect to file2.php
header('Location: file2.php');
die();
break;
default:
// $_SESSION['username'] is neither a, nor b, or is not set at all
// redirect to default.php
header('Location: default.php');
die();
break;
}
請注意,僅此一項是不夠的。 在file1.php和file2.php中,還必須調用session_start()
並執行類似的檢查,以允許用戶查看此頁面,然后再顯示頁面內容。
session_start();
if($_SESSION['username'] == 'a')
header('Location: pageA.php');
else
header('Location: pageB.php');
您可能需要閱讀session_start()上的PHP.net文檔。
基本上,每個頁面都將從session_start()
開始以啟動PHP會話。 之后,您可以訪問全局$_SESSION[]
數組,可用於存儲和讀取數據。
例如,您可以在登錄過程中將用戶名存儲在會話中:
$_SESSION['username'] = 'a';
然后,在其他頁面中,您將讀取會話用戶名,找出用戶名並進行適當的處理:
if (isset($_SESSION['username']))
{
header("Location: newlocation.php");
}
就像quantumSoup的代碼一樣,但是他犯了一個簡單的錯誤,請使用以下代碼:
在session_start();
// ...
if($ _SESSION ['username'] =='a'){header(“ Location:./ page_a”); }否則if($ _SESSION ['username'] =='b'){header(“ Location:./page_b”); } else {header(“ Location:./ otherpage”); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.