Định nghĩa và cách sử dụng
Phiên hoặc xử lý phiên là một cách để cung cấp dữ liệu trên các trang khác nhau của ứng dụng web. Hàm session_name () được sử dụng để đặt tên cho phiên hiện tại hoặc, truy xuất tên của phiên.session_name() function is used to name the current session or, retrieve the name of the session.
Cú pháp
session_name([$name]);Thông số
1 | name(Optional) Đây là một giá trị chuỗi đại diện cho tên của phiên, nếu bạn muốn đặt tên của phiên bằng phương thức này. |
Trả về giá trị
Nếu bạn đã vượt qua bất kỳ tham số nào, chức năng này sẽ trả về giá trị chuỗi đại diện cho tên của phiên hiện tại. Nếu bạn đã chuyển một giá trị chuỗi để đặt tên thành phiên hiện tại bằng cách sử dụng chức năng này, hãy trả lại tên của phiên cũ.
Phiên bản PHP
Chức năng này lần đầu tiên được giới thiệu trong Php phiên bản 4 và hoạt động trong tất cả các phiên bản sau.
ví dụ 1
Ví dụ sau đây cho thấy việc sử dụng hàm session_name ().session_name() function.
<html> <head> <title>Setting up a PHP session</title> </head> <body> <?php //Starting the session session_start(); $name = session_name(); print("Session Name: ".$name); ?> </body> </html>Một lần thực hiện tệp HTML ở trên, nó sẽ hiển thị thông báo sau -
Session Name: PHPSESSIDVí dụ 2
Sau đây là một ví dụ khác về chức năng này, ở đây chúng tôi có hai trang từ cùng một ứng dụng trong cùng một phiên -
session_page1.htm
html> <body> <form action="#" method="post"> <label for="fname">Enter the values click Submit and click on Next</label> <br><br><label for="fname">Name:</label> <input type="text" id="name" name="name"><br><br> <label for="lname">Age:</label> <input type="text" id="age" name="age"><br><br> <input type="submit" name="SubmitButton"/> <?php if(isset($_POST['SubmitButton'])){ //Setting the session name session_name("my_session"); //Starting the session session_start(); $_SESSION['name'] = $_POST['name']; $_SESSION['age'] = $_POST['age']; print("<br><br>Session name: ".session_name()); } echo '<br><br><a href="session_page2.htm">Next</a>'; ?> </form> </body> </html>Điều này sẽ tạo ra đầu ra sau -
Khi bạn nhấn gửi trang sẽ giống như -
Khi nhấp vào tiếp theo, tệp sau được thực thi.Next the following file is executed.
session_page2.htm
<html> <head> <title>Second Page</title> </head> <body> <?php //Changing the session name again $s_name = session_name(); //Starting a Session session_start(); print($_SESSION['name']); echo "<br><br>"; print($_SESSION['age']); echo "<br><br>"; print("Previous Session Name: ".$s_name); ?> </body> </html>Điều này sẽ tạo ra đầu ra sau -
Krishna 30 Previous Session Name: PHPSESSIDKhi bạn nhấn gửi trang sẽ giống như -
Khi nhấp vào tiếp theo, tệp sau được thực thi.
<html> <head> <title>Setting up a PHP session</title> </head> <body> <?php //Starting the session session_start(); $id = session_create_id("test-"); print("Id: ".$id); ?> </body> </html>Ví dụ 3
Id: test-es6j8171lluesjrokpvqqb4b4dphp_function_reference.htm
Khi tôi sử dụng:
session_name( 'fObj' ); session_start(); $_SESSION['foo'] = 'bar';Sau đó tải trang và chạy:
session_start(); print_r( $_SESSION );DOE không trả về dữ liệu phiên.
Nếu tôi xóa session_name (); nó hoạt động tốt.
Có ai biết cách sử dụng các phiên với một tên phiên khác không?
UPDATE::
Nếu tôi chạy mã trên, dưới dạng tải hai trang, sau đó thay đổi thành:
<html> <head> <title>Setting up a PHP session</title> </head> <body> <?php //Starting the session session_start(); $name = session_name(); print("Session Name: ".$name); ?> </body> </html> 0Tôi có thể truy cập dữ liệu. Tuy nhiên, nếu nó chỉ hoạt động nếu lần đầu tiên tôi tải trang mà không có dòng:
<html> <head> <title>Setting up a PHP session</title> </head> <body> <?php //Starting the session session_start(); $name = session_name(); print("Session Name: ".$name); ?> </body> </html> 1Hỏi ngày 22 tháng 8 năm 2014 lúc 2:55Aug 22, 2014 at 2:55
Kohjah Breesekohjah BreeseKohjah Breese
3,8926 Huy hiệu vàng30 Huy hiệu bạc47 Huy hiệu đồng6 gold badges30 silver badges47 bronze badges
2
John Robertson là chính xác, tuyên bố mà ông đề cập đến trực tiếp từ hướng dẫn sử dụng PHP (//php.net/manual/en/function.session-dame.php).
Tên phiên của bạn theo mặc định đến từ biến PHP.INI 'phiên.name' và điều này thường được đặt thành 'phpsessid'. Tại mỗi thời gian yêu cầu khởi động (như đã đề cập), phiên sẽ được đổi tên thành phpsessid trừ khi bạn gọi session_name ('fobj') trước session_start () trên mỗi trang, vì vậy trang1:
<html> <head> <title>Setting up a PHP session</title> </head> <body> <?php //Starting the session session_start(); $name = session_name(); print("Session Name: ".$name); ?> </body> </html> 2trang 2:
<html> <head> <title>Setting up a PHP session</title> </head> <body> <?php //Starting the session session_start(); $name = session_name(); print("Session Name: ".$name); ?> </body> </html> 3Sau đó, bạn có thể truy cập cài đặt php.ini của mình và thay đổi biến phiên. Định tên từ PHPSessID sang FOBJ và tất cả các phiên được tạo của bạn sẽ có tên phiên của FOBJ.
Đã trả lời ngày 22 tháng 8 năm 2014 lúc 3:29Aug 22, 2014 at 3:29
Trong bài đăng của Nwolybug, tôi nghĩ rằng điều này phải là do một số môi trường môi trường. Tôi có thể làm cho việc này hoạt động thông qua việc làm như sau:
<html> <head> <title>Setting up a PHP session</title> </head> <body> <?php //Starting the session session_start(); $name = session_name(); print("Session Name: ".$name); ?> </body> </html> 4Đã trả lời ngày 22 tháng 8 năm 2014 lúc 3:24Aug 22, 2014 at 3:24
Kohjah Breesekohjah BreeseKohjah Breese
3,8926 Huy hiệu vàng30 Huy hiệu bạc47 Huy hiệu đồng6 gold badges30 silver badges47 bronze badges
Tôi có thể giúp nó hoạt động tốt và trả về dữ liệu phiên với mã sau:
<html> <head> <title>Setting up a PHP session</title> </head> <body> <?php //Starting the session session_start(); $name = session_name(); print("Session Name: ".$name); ?> </body> </html> 5Nếu tôi chạy nó với phiên thứ hai_start (); Nó trở lại với một lỗi cho tôi biết một phiên đã được bắt đầu. Nếu bạn đang ở Dev, hãy đảm bảo bật ERROR_ALL trong Php.ini. Hãy chắc chắn để tắt nó trở lại trong sản xuất. Một liên kết đến các chức năng báo cáo lỗi PHP.
Cập nhật: cũng hoạt động với: session_name ('fobj'); $ _Session ['foo'] = 'Bar';
<html> <head> <title>Setting up a PHP session</title> </head> <body> <?php //Starting the session session_start(); $name = session_name(); print("Session Name: ".$name); ?> </body> </html> 6Sử dụng Ubuntu 14.04 LTS, PHP 5.5.9-1 (cho tôi biết nếu bạn cần thêm thông tin hệ thống để giải quyết vấn đề)
Đã trả lời ngày 22 tháng 8 năm 2014 lúc 3:16Aug 22, 2014 at 3:16
NWOLYBUGNWOLYBUGnwolybug
4525 Huy hiệu bạc12 Huy hiệu Đồng5 silver badges12 bronze badges