Làm cách nào để tạo phiên đăng nhập và đăng xuất trong PHP?

Tôi biết với tư cách là người mới bắt đầu sử dụng PHP, Phiên và Cookie là một trong những chủ đề khó hiểu. Bởi vì cả hai đều lưu trữ dữ liệu người dùng. Nhưng sự khác biệt ở cả hai là dữ liệu người dùng được lưu trữ phiên trong máy chủ trong khi cookie lưu trữ dữ liệu người dùng trong trình duyệt người dùng. Dữ liệu phiên chỉ khả dụng cho phiên hiện tại trong khi cookie có thể được lưu trữ trong một khoảng thời gian dài hơn

Trong hướng dẫn này, tôi sẽ không đề cập đến cookie nhưng tôi sẽ đề cập đến Phiên PHP bằng cách sử dụng ví dụ đăng nhập và đăng xuất. Chúng ta hãy xem những gì phiên làm

  • Phiên cung cấp dữ liệu người dùng trên toàn bộ trang web
  • Phiên tạo một tệp tạm thời trong thư mục tạm thời của máy chủ để lưu dữ liệu phiên. Đường dẫn tệp tạm thời được lưu trong php. tập tin ini
  • Phiên bị hủy nguyên tử khi người dùng đóng trình duyệt
  • Phiên sẽ bắt đầu bằng cách gọi hàm session_start()
  • Phiên sẽ bị hủy bằng cách gọi hàm session_destroy()


Phiên trong ví dụ PHP để đăng nhập và đăng xuất

Tôi sẽ tạo một biểu mẫu Đăng nhập HTML với các trường email và mật khẩu. Khi người dùng gửi biểu mẫu, trước tiên tôi sẽ kiểm tra xem cả hai trường phải có giá trị hay không, sau đó tôi sẽ kiểm tra email của người dùng có tồn tại hay không. nếu email sẽ tồn tại thì tôi sẽ xác nhận mật khẩu người dùng. Mật khẩu sẽ được kiểm tra bằng chức năng password_verify. Nếu bạn không biết chức năng password_verify hoạt động như thế nào, vui lòng đọc bài viết của tôi về cách sử dụng PHP password_hash trong biểu mẫu đăng ký và đăng nhập để hiểu rõ hơn
Nếu người dùng thêm email và mật khẩu chính xác thì sẽ tạo phiên và gửi người dùng tới dashboard.php. Trong trang dashboard.php sẽ có nút đăng xuất. Bằng cách nhấp vào đăng xuất, người dùng sẽ dễ dàng đăng xuất và sẽ chuyển hướng đến trang index.php. Đừng bắt đầu

Làm cách nào để tạo phiên đăng nhập và đăng xuất trong PHP?

Tạo nên cơ sở dữ liệu

1

2

3

 

Tạo cơ sở dữ liệu bản trình diễn;

 

Tạo bảng cơ sở dữ liệu

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

TẠO BẢNG `người dùng` (

`id` INT(11) NOT NULL AUTO_INCREMENT,

`first_name` VARCHAR(255) NULL DEFAULT NULL,

`last_name` VARCHAR(255) NULL DEFAULT NULL,

`email` VARCHAR(255) NULL DEFAULT NULL,

`điện thoại` VARCHAR(255) NOT NULL,

`mật khẩu` VARCHAR(255) NULL DEFAULT NULL,

`đã tạo` NGÀY KHÔNG NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

CHÍNH CHÍNH KEY (`id`)

)

THUỘC TÍNH = 'latin1_swedish_ci'

ĐỘNG CƠ = InnoDB

AUTO_INCREMENT = 7

;

 

Tạo tệp cấu hình cơ sở dữ liệu. (cấu hình. php)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

$host = 'localhost';

$DBUser = "root";

$DBPassword = '';

$db = 'demo';

$conn = mysqli_connect($host,$DBUser, $DBPassword, $db);

nếu(. $conn)

{

die(mysqli_error());

}

?>

 

Đây là hướng dẫn dành cho người mới bắt đầu nên tôi đang sử dụng chức năng mysqli_connect() để kết nối với cơ sở dữ liệu

Biểu mẫu đăng nhập HTML. (mục lục. php)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

 

<div class = "vùng chứa">

<h1>PHP Đăng nhập and Logout with Session</h1>

<hình thức hành động = " echo $_SERVER['PHP_SELF']?>" method="post">

<div class = "field-container">

<nhãn>Email</label>

<đầu vào loại = "email" name="email" required placeholder="Enter Your Email">

< / div>

<div class = "field-container">

<nhãn>Mật khẩu</label>

<đầu vào loại = "mật khẩu" name="password" required placeholder="Enter Your Password">

< / div>

<div class = "field-container">

<nút loại = "gửi" name="submit">Submit</button>

< / div>

< / biểu mẫu>

< / div>

 

Như bạn có thể thấy trong mã html ở trên. Chỉ có một vùng chứa div dưới đó mã biểu mẫu được viết. Hành động biểu mẫu có $_SERVER['PHP_SELF'] có nghĩa là biểu mẫu sẽ được gửi trên cùng một trang

Phong cách. css

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

 

cơ thể{

phông chữ - gia đình. xanh tươi;

nền - màu. #aaaae3;

}

 

.vùng chứa{

chiều rộng. 40%;

lề. 10% tự động;

đường viền. 1px rắn #eeeeee;

nền. #ffffff;

}

 

.vùng chứa - trang tổng quan{

chiều rộng. 90%;

đường viền. 1px rắn #eeeeee;

nền. #ffffff;

phần đệm. 10px;

}

 

.trường - vùng chứa{

lề. 10px tự động;

chiều rộng. 400px;

}

h1{

văn bản - căn chỉnh. trung tâm;

đường - chiều cao. 30px;

phông chữ - kích thước. 24px;

màu. #061e5a;

}

 

nhãn{

hiển thị. chặn;

phần đệm - đáy. 5px;

màu. #F05519;

phông chữ - trọng lượng. 500;

}

 

đầu vào[loại = email],input[type=password]{

đường viền. 1px rắn #eeeeee;

chiều rộng. 100%;

chiều cao. 30px;

phần đệm - trái. 4px;

}

 

nút{

nền. #061e5a;

đường viền. 1px rắn #061e5a;

màu. #ffffff;

lề. 10px 0px;

phần đệm. 5px;

}

 

nút. di chuột{

nền. #F05519;

đường viền. 1px rắn #F05519;

}

 

 

.lỗi - tin nhắn{

đường viền. 1px rắn #ee0000;

nền. #ee0000;

màu. #ffffff;

phần đệm. 2px;

phông chữ - kích thước. 13px;

}

 

.thành công - tin nhắn{

đường viền. 1px rắn #0ebc6f;

nền. #0ebc6f;

màu. #ffffff;

phông chữ - kích thước. 13px;

phần đệm. 2px;

}

 

 

.người dùng - tên{

màu. #ee0000;

}

 

.đăng xuất - liên kết{

lề - top. 10px;

hiển thị. chặn;

nền. #061e5a;

đường viền. 1px rắn #061e5a;

màu. #ffffff;

chiều rộng. 48px;

phần đệm. 5px;

văn bản - trang trí. không có;

phông chữ - kích thước. 13px;

}

 

Sau khi gửi biểu mẫu Gửi mã PHP. (mục lục. php)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

 

yêu cầu('config. php');

session_start();

if(isset($_POST['submit']))

{

if((isset($_POST['email']) && $_POST['email'] !='') && (isset($_POST['password']) && $_POST['password'] !=''))

{

$email = trim($_POST['email']);

$password = trim($_POST['password']);

$sqlEmail = "chọn * từ những người dùng có email = '". $email. "'";

$rs = mysqli_query($conn,$sqlEmail);

$numRows = mysqli_num_rows($rs);

if($numRows   == 1)

{

$row = mysqli_fetch_assoc($rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs$rs);

if(password_verify($password,$row['password']))

{

$_SESSION['user_id'] =< $row['id'];

$_SESSION['first_name'] =< $row['first_name'];

$_SESSION['last_name'] =< $row['last_name'];

tiêu đề('vị trí. bảng điều khiển. php');

thoát;

}

khác

{

$errorMsg =   "Email hoặc mật khẩu sai";

}

}

khác

{

$errorMsg =   "Không tìm thấy người dùng";

}

}

}

?>

 

Tôi đã đề cập rằng biểu mẫu đăng nhập sẽ được đăng trên cùng một trang nên tôi đã viết mã gửi biểu mẫu ở đầu tệp index.php. Đầu tiên tôi bao gồm tệp session_destroy()0 bằng hàm session_destroy()1. Sau đó, tôi bắt đầu phiên bằng cách gọi hàm session_start()

Luôn nhớ rằng khi bạn đang làm việc với các phiên, hãy đảm bảo rằng hàm session_start() phải được đặt ở trên cùng

Sau đó, tôi đã sử dụng session_destroy()3 để gửi biểu mẫu và sau đó tôi đảm bảo rằng email và mật khẩu phải có giá trị trong điều kiện session_destroy()3 tiếp theo. Sau đó, tôi đã lưu trữ email và mật khẩu bằng cách sử dụng hàm session_destroy()5 trong các biến session_destroy()6 và session_destroy()7 tương ứng. session_destroy()8 là một truy vấn mysql để kiểm tra xem email có tồn tại trong bảng người dùng không. Biến session_destroy()9 giữ số lượng kết quả mysql và nếu session_destroy()9 trả về 1 thì tôi đã tìm nạp bản ghi người dùng đó và lưu trữ trong biến password_verify1

Hàm password_verify2 nhận 2 tham số để xác minh mật khẩu người dùng. Tham số 1 là mật khẩu do người dùng gửi và tham số 2 là mật khẩu đã tồn tại

Nếu mật khẩu do người dùng gửi và mật khẩu cơ sở dữ liệu khớp nhau thì tôi đã lưu id người dùng trong biến password_verify3, tên người dùng trong password_verify4 và họ của người dùng trong password_verify5, sau đó tôi sử dụng chức năng password_verify6 để chuyển hướng và gửi trang dashboard.php của người dùng

Biến password_verify8 được sử dụng để giữ các thông báo lỗi

Cũng đọc. Biểu mẫu liên hệ PHP với xác thực jQuery và mã gửi email

Sau khi đăng nhập thành công. (Bảng điều khiển. php)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

 

session_start();

nếu(. isset($_SESSION))

{

tiêu đề('vị trí. mục lục. php');

thoát;

}

?>

 

<. DOCTYPE html>

<html>

<đầu>

<tiêu đề>Trang tổng quan . PHP Đăng nhập đăng xuất ví dụwith session</title>

<liên kết rel = "biểu định kiểu" href="style.css">

< / đầu>

 

<nội dung>

<div class = "container-dashboard">

Chào mừng đến với trang tổng quan. <span lớp = "> echo ucwords($_SESSION['first_name'])?> echo ucwords($_SESSION['last_name']);?> </span>

<br>

<a href = "đăng xuất. php?logout=true" lớp = "liên kết đăng xuất">Logout</a>

< / div>

< / body>

< / html>

 

Ở phần dashboard.php mình thêm hàm session_start() sau đó mình thêm một điều kiện nữa là nếu không đặt ____2_______1 thì người dùng sẽ redirect sang ____6_______. Điều kiện này ngăn dashboard.php không truy cập mà không có phiên

Sau đó, có một đoạn html nhỏ trong đó có văn bản chào mừng với tên người dùng. Và trong dòng tiếp theo có một nút đăng xuất đi tới password_verify4


Hủy phiên. (đăng xuất. php)

1

2

3

4

5

6

7

8

9

10

11

 

 

if(isset($_GET['logout']))

{

session_destroy();

tiêu đề('vị trí. mục lục. php?logout=true');

thoát;

}

?>

 

Trong tệp password_verify5, password_verify6 là một chuỗi truy vấn đến từ trang dashboard.php. Hàm session_destroy() hủy biến phiên và hàm password_verify6 sẽ đưa người dùng đến trang index.php

Thông báo lỗi. (mục lục. php)

1

2

3

4

5

6

7

8

9

10

11

 

if(isset($errorMsg))

{

echo ";

echo $errorMsg;

echo "";

bỏ đặt($errorMsg);

}

?>

 

Làm cách nào để tạo phiên đăng nhập và đăng xuất trong PHP?

Thông báo đăng xuất thành công. (mục lục. php)

1

2

3

4

5

6

7

8

9

10

11

 

if(isset($_GET['logout']))

{

echo ";

echo "Bạn đã đăng xuất thành công";

echo "";

}

?>

 

Làm cách nào để tạo phiên đăng nhập và đăng xuất trong PHP?

Ngay bây giờ có một người dùng trong mã tải xuống. Email id đăng nhập là johndoe@example. com và mật khẩu là john123. Nếu bạn sẽ gặp phải bất kỳ vấn đề nào, vui lòng bình luận bên dưới bài đăng

Làm cách nào để tạo chức năng đăng xuất trong php?

php session_start(); . đăng nhập. php"); exit; ?> Đến đây, chúng ta đã thêm thành công chức năng đăng xuất cho website.

Làm cách nào để sử dụng phiên trong php để đăng nhập người dùng?

phiên lớp php { private $logged_in=false;

Làm cách nào để tạo phiên trong php?

Bạn có thể bắt đầu một phiên trong PHP bằng cách sử dụng hàm session_start() . Theo mặc định, chức năng này sẽ kiểm tra phiên hiện có trước tiên. Nếu một phiên đã tồn tại, nó sẽ không làm gì cả, nhưng nó sẽ tạo một phiên nếu không có phiên nào tồn tại trước đó.

Làm cách nào để duy trì phiên đăng nhập trong php?

$name = mysqli_real_escape_string( $connect , $_POST [ "user_name" ]);