Lưu ý khi sử dụng session trong PHP 2008-06-25 08:33:29
Đây là 1 lỗi đơn giản nhưng nếu không để ý sẽ rất dễ bị: đặt tên biến trùng với tên session
<?php
$_SESSION['id'] = 4;
$id = 7;
print $_SESSION['id']; // 7
?>
nghĩa là giá trị của $_SESSION['id'] đã bị thay đổi
Tra loi 30 comment(s) 2008-06-25 08:33:29
Quan Tran Anh 2008-06-25 08:37:11
Tra loi
changtraingheo 2008-06-25 09:06:29
@TG: chắc đang code bị cái này phải ko, lên post cho anh em liền ^^
Tra loi
Quan Tran Anh 2008-06-25 01:32:08
Tra loi
web20vn.com 2008-06-26 02:17:33
Tra loi
TG 2008-06-26 08:14:57
Tra loi
gaulucky92 2008-06-26 03:09:39
Tra loi
web20vn.com 2008-06-27 01:38:07
Tra loi
G.K 2008-06-30 11:59:50
Tra loi
hero_vanchien 2008-06-30 02:02:59
register_global đặt là on hay off chỉ ảnh hượng đến việc bạn cần hay không cần khai báo cú pháp global $TenBien thôi chứ không thể ảnh hưởng đến dữ liệu của biến
$_SESSION['id'] và $id là 2 cái chẳng liên quan gì đến nhau cả mà để có thể nói là nó ảnh hưởng đến nhau.
Tra loi
TG 2008-06-30 09:18:15
Sau những ý kiến của anh em, TG test lại thì kết quả như sau:
nếu viết:
<?php
$_SESSION['id'] = 4;
$id = 7;
print $_SESSION['id']; // 7
?>
thì giá trị của $_SESSION không bị thay đổi nhưng nếu viết thành 2 file thì giá trị sẽ bị thay đổi:
<?php
session_start();
$_SESSION['a'] = 4;
$a = 5;
echo '<a href="b.php">b.php</a>';
?>
và file b.php:
<?php
session_start();
print $_SESSION['a'];
?>
các bạn có thể test lại kết quả này
Tra loi
hero_vanchien 2008-06-30 10:05:15
Bạn có thể giải thích cơ sở nào khiến bạn nghĩ chúng có liên quan đến nhau???
Tra loi
TG 2008-07-01 09:18:51
Cái này lúc trước lúc mới tập code do sơ ý mình cũng bị. Thành ra rút kinh nghiệm đặt tên session có thêm cái ghi chú s_name chẳng hạn để tránh bị vụ này.
TG sẽ tìm hiểu nguyên nhân của cái này
Tra loi
Connhagiau89 2008-07-01 01:37:35
Tra loi
web20vn.com 2008-07-02 09:33:59
Tra loi
web20vn.com 2008-07-02 09:39:19
Tra loi
hero_vanchien 2008-07-04 12:10:08
Lưu ý thêm nữa là tên biến trùng với tên của button cũng bị như trường hợp trên :)) mình đã bị 1 lần
Bái phục các bạn khi tìm ra được những bug như thế này. Nếu bạn mail thông báo cho Zend thì có thể họ xẽ da tạ bạn một khoản khá đấy.
Xin lỗi vì cách nói hơi sốc của mình nhưng bạn kiểm tra kỹ lại code trước khi kết luận đó là bug hay là mình còn non tay nhé
Tra loi
Bảo Khánh 2008-08-11 08:40:41
Xin lỗi vì cách nói hơi sốc của mình nhưng bạn kiểm tra kỹ lại code trước khi kết luận đó là bug hay là mình còn non tay nhé
Thêm ý kiến
@TG cái này thì mình chưa bị nên mình không biết chắc. mà chưa mình nghĩ là kg bị.
Tra loi
bonguoita 2008-08-13 08:42:16
Mình đã test kĩ.
Windows XP SP2, Apache 2.2.x, PHP 2.2.5
register_global = On
<?php
session_start();
$_SESSION['id'] = 4;
$id = 7;
print $_SESSION['id']; // 7
?>
Kết quả in ra là 7
Nếu register_global Off thì không bị
Tra loi
nhuynhduc 2008-11-08 08:56:57
không phụ thuộc vào register_global đâu
Tra loi
Thương Tín 2008-11-08 09:36:51
Tra loi
he`he` 2008-11-21 09:22:56
Tui dùng WinXP SP2,Apache/2.2.8 (Win32) PHP/5.2.6!
Khi register_global = On
<?php
session_start();
$_SESSION['id'] = 4;
$id = 7;
print $_SESSION['id']; //Kết quả là 7
?>
Khi register_global = On
<?php
session_start();
$_SESSION['id'] = 4;
$id = 7;
print $_SESSION['id']; //Kết quả là 4
?>
Chú ý Khi chỉnh sửa register_global ="value" trong php.ini bạn phải Restart lai Apache Server mới thực hiện đúng(Có thể mọi người mắc cái này)^_^ ^_^
Tra loi
he`he` 2008-11-21 09:25:34
SORRY có chỗ nhầm!
Tui dùng WinXP SP2,Apache/2.2.8 (Win32) PHP/5.2.6!
Khi register_global = On
<?php
session_start();
$_SESSION['id'] = 4;
$id = 7;
print $_SESSION['id']; //Kết quả là 7
?>
Khi register_global = Off
<?php
session_start();
$_SESSION['id'] = 4;
$id = 7;
print $_SESSION['id']; //Kết quả là 4
?>
Chú ý Khi chỉnh sửa register_global ="value" trong php.ini bạn phải Restart lai Apache Server mới thực hiện đúng (Có thể mọi người mắc cái này) ^_^ ^_^
Tra loi
Đỗ Thanh Tùng 2008-11-24 11:21:52
Tra loi
Giusehuy 2009-08-20 04:07:44
Tra loi
TG 2009-08-21 11:07:50
Tra loi
gaulucky92 2009-08-21 11:56:17
Session là phiên làm việc lưu trên server, khi đóng trang web là nó tự hủy session. Như phpbasic, dù đã đăng nhập, nhưng nếu tắt web mở lại thì vẫn phải đăng nhập tiếp, do session login đã bị hủy.
Còn cookie là lưu trên máy khách (client), nên dùng cookie thì dù đã đóng web, tắt máy,... đến khi vào lại web vẫn còn nguyên là đã đăng nhập, chỉ mất khi mình bấm THOÁT (log out) để hủy cookie thôi.
VD như gmail.com khi đăng nhập có chọn "tự động đăng nhập"...
Tra loi
kenphan.info 2009-08-21 12:29:55
Tra loi
gaulucky92 2009-08-21 12:59:41
a thử tắt hết trang web, rồi tắt ff luôn... sau đó mở lại ff vào phpbasic xem ;))
Tra loi
kenphan.info 2009-08-21 01:05:32
Tra loi
123456 2009-08-26 10:58:00
- Mình đã test cái vd của TG, kết quả là giá trị $_SESSION['a'] không đổi.
Tra loi
Y kien