我剛剛創建完整的登錄並在PHP中註冊了systsem,但是我的問題是我還沒有使用過任何會話。我在PHP中是一個新手,我以前從未使用過會話。我想要做的是,在用戶註冊並填寫登錄表單後,他們仍然保持在同一頁面上。因此,如果會話是logged_in,其他部分將會是其他部分(用戶未登錄,因此顯示登錄表單),將會有一部分會話。任何人都可以告訴我如何開始?在PHP登錄腳本中使用會話和會話變量
回答
希望這有助於:)
開始的會議,你需要在頁面頂部的說,這還是你打的會話代碼之前
session_start();
把用戶ID在會話跟蹤誰是登錄
$_SESSION['user'] = $user_id;
檢查是否有人在
if (isset($_SESSION['user'])) {
// logged in
} else {
// not logged in
}
登錄
查找登錄的用戶ID
$_SESSION['user']
所以你的頁面上
<?php
session_start();
if (isset($_SESSION['user'])) {
?>
logged in HTML and code here
<?php
} else {
?>
Not logged in HTML and code here
<?php
}
好的,簡單的,可讀的代碼。剛剛完美 – IchHabsDrauf 2017-03-04 11:27:50
首先,PHP文件對sessions一些excellent information。其次,您需要一些方法來存儲您網站的每個用戶(例如數據庫)的憑證。不要將密碼存儲爲可讀,未加密的純文本。存儲密碼時,您應該使用PHP的crypt()
哈希函數。這意味着如果任何憑證被泄露,密碼不是隨時可用。
大多數登錄系統會散列/加密用戶輸入的密碼,然後將結果與相應用戶名的存儲系統(例如數據庫)中的散列進行比較。如果輸入密碼的散列與存儲的散列匹配,則用戶輸入了正確的密碼。
您可以使用會話變量來存儲有關用戶當前狀態的信息 - 即他們是否已登錄,如果他們是您還可以存儲他們唯一的用戶ID或您需要的任何其他信息。
要啓動PHP會話,您需要致電session_start()
。同樣,要摧毀一個會話,它的數據,你需要調用session_destroy()
(例如,當用戶註銷):
// Begin the session
session_start();
// Use session variables
$_SESSION['userid'] = $userid;
// E.g. find if the user is logged in
if($_SESSION['userid']) {
// Logged in
}
else {
// Not logged in
}
// Destroy the session
if($log_out)
session_destroy();
我也建議你看看this。在那裏創建一個簡單的登錄系統有一些很好的,容易遵循的信息。
PHP 5.5引入了[密碼散列函數](http://php.net/manual/en/ref.password.php)(帶有5.3.7兼容性代碼),應該用於密碼散列生成和驗證。這些函數消除了某些程序員在使用'crypt()'或其他PHP通用散列函數時可能產生的安全弱化錯誤。有關爲什麼要使用password_hash()而不是crypt()的詳細信息,請參閱[rfc:password_hash](https://wiki.php.net/rfc/password_hash) – 2015-05-14 20:25:30
答案底部的鏈接(this)已損壞現在。你能爲這個資源提供永久鏈接嗎? – dmcgill50 2016-01-08 16:10:03
我總是做OOP並使用這個類來維護會話,所以你可以使用函數is_logged_in來檢查用戶是否登錄,如果沒有,你做你想做的事。
<?php
class Session
{
private $logged_in=false;
public $user_id;
function __construct() {
session_start();
$this->check_login();
if($this->logged_in) {
// actions to take right away if user is logged in
} else {
// actions to take right away if user is not logged in
}
}
public function is_logged_in() {
return $this->logged_in;
}
public function login($user) {
// database should find user based on username/password
if($user){
$this->user_id = $_SESSION['user_id'] = $user->id;
$this->logged_in = true;
}
}
public function logout() {
unset($_SESSION['user_id']);
unset($this->user_id);
$this->logged_in = false;
}
private function check_login() {
if(isset($_SESSION['user_id'])) {
$this->user_id = $_SESSION['user_id'];
$this->logged_in = true;
} else {
unset($this->user_id);
$this->logged_in = false;
}
}
}
$session = new Session();
?>
謝謝,它是一個很好的開始,但應該擴展你的課堂用戶認證與電子郵件;) – 2017-03-23 13:10:15
這裏是使用php的最簡單的會話代碼。 我們正在使用3個文件。
的login.php
<?php session_start(); ?> // session starts with the help of this function
<?php
if(isset($_SESSION['use'])) // Checking whether the session is already there or not if
// true then header redirect it to the home page directly
{
header("Location:home.php");
}
if(isset($_POST['login'])) // it checks whether the user clicked login button or not
{
$user = $_POST['user'];
$pass = $_POST['pass'];
if($user == "Ank" && $pass == "1234") // username is set to "Ank" and Password
{ // is 1234 by default
$_SESSION['use']=$user;
echo '<script type="text/javascript"> window.open("home.php","_self");</script>'; // On Successful Login redirects to home.php
}
else
{
echo "invalid UserName or Password";
}
}
?>
<html>
<head>
<title> Login Page </title>
</head>
<body>
<form action="" method="post">
<table width="200" border="0">
<tr>
<td> UserName</td>
<td> <input type="text" name="user" > </td>
</tr>
<tr>
<td> PassWord </td>
<td><input type="password" name="pass"></td>
</tr>
<tr>
<td> <input type="submit" name="login" value="LOGIN"></td>
<td></td>
</tr>
</table>
</form>
</body>
</html>
home.php
<?php session_start(); ?>
<html>
<head>
<title> Home </title>
</head>
<body>
<?php
if(!isset($_SESSION['use'])) // If session is not set then redirect to Login Page
{
header("Location:Login.php");
}
echo $_SESSION['use'];
echo "Login Success";
echo "<a href='logout.php'> Logout</a> ";
?>
</body>
</html>
logout.php
<?php
session_start();
echo "Logout Successfully ";
session_destroy(); // function that Destroys Session
header("Location: Login.php");
?>
//start use session
$session_start();
extract($_POST);
//extract data from submit post
if(isset($submit))
{
if($user=="user" && $pass=="pass")
{
$_SESSION['user']= $user;
//if correct password and name store in session
}
else {
echo "Invalid user and password";
header("Locatin:form.php");
}
if(isset($_SESSION['user']))
{
//your home page code here
exit;
}
順便說一句,你想散列和鹽密碼就此。然後對輸入進行散列和加鹽以進行比較。 – 2016-12-17 06:07:03
你需要在頁面的頂部開始會話,或者你之前呼叫會話代碼
session_start();
$session_start();
extract($_POST);
//extract data from submit post
if(isset($submit))
{
if($user=="user" && $pass=="pass")
{
$_SESSION['user']= $user;
//if correct password and name store in session
}
else {
echo "Invalid user and password";
header("Locatin:form.php");
}
if(isset($_SESSION['user']))
{
//your home page code here
exit;
}
- 1. 會話變量登錄
- 2. 使用會話登錄PHP
- 3. PHP登錄腳本會話問題
- 4. PHP登錄腳本會話不存活
- 5. PHP - 登錄腳本不創建會話
- 6. PHP登錄腳本,會話變量或$ _GET
- 7. PHP會話(使用myPajamas登錄腳本)改變網絡
- 8. PHP登錄,商店會話變量
- 9. 無法登錄使用會話變量
- 10. 在php中登錄會話
- 11. PHP登錄會話和cookie
- 12. PHP登錄和會話
- 13. PHP會話和登錄
- 14. 如何在PHP中使用會話後登錄變量?
- 15. php登錄會話
- 16. PHP會話登錄
- 17. PHP會話登錄
- 18. 使用cookie和會話登錄php
- 19. PHP登錄腳本,PHP的安全登錄會話
- 20. 用戶用會話變量登錄
- 21. Php用戶登錄會話
- 22. 使用會話變量登錄後,在其他PHP文件
- 23. 在登錄時保持會話變量
- 24. XML登錄腳本和會話中的PHP
- 25. 在perl中使用PHP會話變量
- 26. 在PHP中使用ColdFusion會話變量
- 27. 使用PHP會話變量保持用戶登錄到網站
- 28. PHP會話變量和jQuery
- 29. 會話變量沒有從登錄腳本傳遞
- 30. PHP變量和會話使用問題
「如果你能想象回答您的問題一整本書,你問太多。 「 - [StackOverflow常見問題](http://stackoverflow.com/faq) 爲了澄清,您的問題太寬泛。 – orourkek 2012-04-10 23:30:59
以前沒有發生過。看看[php.net的會話文檔](http://www.php.net/manual/en/book.session.php),這是一個很好的開始:] – orourkek 2012-04-10 23:37:44
也看看這個http:// www。 phpro.org/tutorials/Introduction-To-PHP-Sessions.html – 2012-04-10 23:40:09