24/05/2018, 17:11

Một số đối tượng truyền giá trị trong PHP

Bài học này chúng ta sẽ làm quen với đối tượng Session và một số đối tượng khác Đối tượng Session Đối tượng khác Trong PHP4.0 đối tượng Session được xem như một đối ...

Bài học này chúng ta sẽ làm quen với đối tượng Session và một số đối tượng khác

  • Đối tượng Session
  • Đối tượng khác

Trong PHP4.0 đối tượng Session được xem như một đối tượng cho phép bạn truyền giá trị từ trang PHP này sang PHP khác. Để sử dụng Session, bạn khai báo thư mục được lưu trữ dữ liệu do đối tượng nay ghi ra.

Session được sinh ra và được biến mất khi người sử dụng huỷ chúng, thời gian sống của chúng đã hết hoặc người sử dụng đóng trình duyệt.

Chẳng hạn, trong trường hợp này chúng ta sử dụng thư mục C:PHPsessiondata được khai báo trong tập tin php.ini.

session.save_path = C:PHPsessiondata

Ngoài ra, khi muốn sử dụng Sessoin thì bạn phải khởi tạo chúng. Để khởi tạo Session bạn có thể khởi tạo trong trang PHP mỗi khi truy cập hay gán giá trị cho Session.

session_start();

Tuy nhiên, bạn có thể cấu hình trong trang php.ini (1 là start).

session.auto_start = 0

Nhận dạng Session

Mỗi phiên làm việc được tạo ra từ Web Server thì sẽ có một nhận dạng duy nhất có giá trị là chuỗi do trình chủ Web tạo ra. Điều này có nghĩa là mỗi khi người sử dụng triệu gọi trang Web của Web Site lần đầu tiên thì phiên làm việc sẽ được tạo ra, khi đó một nhận dạng được cấp cho phiên làm việc đó.

Để lấn giá trị nhận dạng của Session do trình chủ Web cấp phát bạn sử dụng cú pháp:

$x= session_id();

Chẳng hạn, bạn khai báo báo để lấy giá trị session_id trong trang sessionid.php như ví dụ 1

Nhận dạng Session
<?php session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Session_ID</h4>
<?php
$sessionid=session_id();
echo $sessionid;
?>
</BODY>
</HTML>


 

Mỗi người sử dụng truy cập đến Web Site sẽ có một nhận dạng khác như như hình 1.

Nhận dạng duy nhất

Khai báo Session

Khi muốn khai báo biến session, bạn phải sử dụng hàm session_register có cú pháp như sau:

session_register("sessioname");

Khi muốn khởi tạo session, bạn có thể gán giá trị cho session này như gán giá trị cho biến trong PHP, sau đó sử dụng hàm trên để đắng ký.

$sessioname=value;
    session_register("sessioname");
    

Trong trường hợp có nhiều session, bạn có thể sử dụng hàm session_register để đăng ký cùng một lúc nhiều session như sau:



$sessioname1=value1;
$sessioname2=value2;
$sessioname3=value3;
session_register("sessioname1","sessioname2","sessioname3");

Chẳng hạn, trong trường hợp này chúng ta khai báo trang sessionregister.php và đăng ký 3 sessoin có tên userid, email và fullname như ví dụ 2 sau:

Trang Sessionregister.php
<?php session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Registered Session</h4>
<?php
$userid="123";
$email="test@yahoo.com";
$fullname="Nguyen Van Ba"; session_register("userid"); session_register("email","fullname");
?>
</BODY>
</HTML>

Kết quả trả về như hình 2.

Đăng ký Session

Lấy giá trị từ Session

Sau khi khai báo khởi ạo một số session với giá trị tương ứng của session đó, bạn có thể truy cập các biến session này để lấy giá trị torng trang PHP khác. Chẳng hạn, chúng ta khai báo trang getsession.php để lấy các session của PHP vừa khai báo trong ví dụ trên như ví dụ 3.

Lấy giá trị từ session

<?php
session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Get Session</h4>
<?php
echo "UserID: ". $userid."<br>"; echo "Email: ".$email."<br>"; echo "FullName: ".$fullname;
?>
</BODY>
</HTML>

Khi triệu gọi trang getsession.php trên trình duyệt bạn trình bày giá trị của session userid, email và fullname như hình 3

Lấy giá trị của Session

Tuy nhiên, trong trường hợp bạn truy cập một biến session chưa khởi tạo trước đó thì l64i sẽ phát sinh. Ví dụ trong trường hợp này chúng ta truy cập biến session có tên $address như ví dụ 4

Truy cập session chưa tồn tại
<?php session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Get Session</h4>
<?php
echo "UserID: ". $userid."<br>";
echo "Email: ".$email."<br>";
echo "FullName: ".$fullname;
echo "Address: ".$address;
?>
</BODY>
</HTML>

Khi triệu gọi trang unregistersession.php trên trình duyệt thì lỗi phát sinh như hình 4.

Để kiểm tra session đó có tồn tại hay chưa bạn sử dụng hàm session_is_register trong trang checksession.php. Đối với trường hợp này chúng ta cần kiểm tra 4 session trước khi truy cập đến chúng như ví dụ 5

Kiểm tra session
<?php session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Get Session</h4>
<?php
if(session_is_registered("userid")) echo "UserID: ". $userid."<br>"; if(session_is_registered("email")) echo "Email: ".$email."<br>"; if(session_is_registered("fullname")) echo "FullName: ".$fullname; if(session_is_registered("address")) echo "Address: ".$address;
?>
</BODY>
</HTML>

Khi triệu gọi trang checksession.php thì kết quả sẽ trình bày như hình 5

Hủy Session

Khi không có nhu cầu sử dụng session nữa thì bạn sử dụng hàm session_unregister để loại session đó. Chẳng hạn, trong trường hợp này chúng ta muốn loại bỏ session có tên là fullname bạn khai báo trong trang sessionunregister.php như ví dụ 6.

Loại bỏ một session
   
<?php session_start();
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>UnRegister Session</h4>
<?php session_unregister("fullname");
if(session_is_registered("userid"))
echo "UserID: ". $userid."<br>"; if(session_is_registered("email")) echo "Email: ".$email."<br>"; if(session_is_registered("fullname")) echo "FullName: ".$fullname; if(session_is_registered("address")) echo "Address: ".$address;
?>
</BODY>
</HTML>


 

Khi triệu gọi trang sessionunregister.php trên trình duyệt thìkết quả trả về như hình 6

Loại bỏ session

Trong trường hợp loại bỏ tất các session đang tồn tại thì sử dụng hàm session_unset().

Ví dụ dùng hàm này để lọai bỏ session và dùng hàm session_destroy để huỷ tất cả session đó khai báo trong trang unset.php như ví dụ 7.

Xóa tất cả session
<?php session_start();
    ?>
    <HTML>
    <HEAD>
    <TITLE>::Welcome to PHP</TITLE>
    </HEAD>
    <BODY>
    <h4>UnSet Session</h4>
    <?php session_unset();
    session_destroy();
    if(session_is_registered("userid"))
    echo "UserID: ". $userid."<br>";
    if(session_is_registered("email")) echo "Email: ".$email."<br>"; if(session_is_registered("fullname")) echo "FullName: ".$fullname; if(session_is_registered("address")) echo "Address: ".$address;
    ?>
    </BODY>
    </HTML>
    
    
  

Kết quả trả về như hình 7.

Hủy session

Cookie được xem như session, tuy nhiên chúng lưu trữ thông tin trên trình khách. Để sử dụng Cookie, bạn sử dụng hàm setcookie để gán giá trị như ví dụ 8.

Gán giá trị cho cookie
<?php
    setcookie("huukhang","Computer Learning Center");
    ?>
    <HTML>
    <HEAD>
    <TITLE>::Welcome to PHP</TITLE>
    </HEAD>
    <BODY>
    <h4>Cookie</h4>
    </BODY>
    </HTML>

    

Khi người sử dụng triệu gọi trang setcookie.php kết quả trả về như hình 8.

Đăng ký Cookie

Ngoài ra, bạn có thể gán giá trị cookie bằng session. Chẳng hạn, chúng ta sử dụng hàm session_set_cookie_params để gán cookie như ví dụ 9

Gán Session bằng cookie
<?php session_start();
$myvalue="Online Recruitment";
session_set_cookie_params($myvalue);
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Session-Cookie</h4>
</BODY>
</HTML>

Bằng cách sử dụng $HTTP_COOKIE_VARS để lấy giá trị của cookie trước đó trong trang httpcookievar.php như ví dụ 10

Sử dụng $HTTP_COOKIE_VARS
<?php
echo $HTTP_COOKIE_VARS["huukhang"];
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Get Cookie</h4>
</BODY>
</HTML>

Kết quả trình bày như hình 10.

Dùng $HTTP_COOKIE_VARS

Bằng cách sử dụng hàm session_get_cookie_params để lấy giá trị của cookie trước đó trong trang sessiongetcookie.php như ví dụ 11

Sử dụng session_get_cookie_params
<?php session_start();
$myvalue= session_get_cookie_params();
echo $myvalue[1];
?>
<HTML>
<HEAD>
<TITLE>::Welcome to PHP</TITLE>
</HEAD>
<BODY>
<h4>Get Cookie</h4>
</BODY>
</HTML>


Trong bài này, chúng ta tìm hiểu cách sử dụng biến session và cookie

0