PDA

View Full Version : Help global_register=OFF



nguyen_oanh
12-01-2009, 17:56
Mình có cái hàm

function Session($Name, $Value)
{
global ${$Name};
if(session_is_registered($Name))
session_unregister($Name);
${$Name} = $Value;
session_register($Name);
}

hàm này hoạt động tốt khi global_register=On, nhưng khi Off thì nó ko hoạt động được (login ko vào), có cách sửa nào để hoạt động khi global_register=OFF ko vậy các bạn.
Giúp mình nhé, mình rất cần gấp.

alert
12-01-2009, 18:45
Thử ini_set nếu không bị disable, hoặc code lại.

nguyen_oanh
12-01-2009, 19:47
Mình phải viết lại hàm nhưng ko biết viết thế nào để hoạt động với global_register=OFF, vì mình ko thể can thiệp vào server cũng như ko thể thay đổi trên file .htaccess bởi vì đã bị cấm sử dụng trên file này.
Ai có thể giúp mình với? bởi vì mình ko lấy được session khi login

Shellingfox
12-01-2009, 20:11
Thì code lại cái đó. Coi thử form bạn dùng là post hay get. Chỉnh lại có mấy dòng thôi mà. Động não tý đi bạn hiền ơi:)

fotech_nd
13-01-2009, 08:27
Mình có cái hàm

function Session($Name, $Value)
{
global ${$Name};
if(session_is_registered($Name))
session_unregister($Name);
${$Name} = $Value;
session_register($Name);
}

hàm này hoạt động tốt khi global_register=On, nhưng khi Off thì nó ko hoạt động được (login ko vào), có cách sửa nào để hoạt động khi global_register=OFF ko vậy các bạn.
Giúp mình nhé, mình rất cần gấp.

=> chỉnh lại nội dung hàm Session như sau xem được ko nhé :D
function Session($Name, $Value)
{
if (!session_id()) {
@session_start();
}
$_SESSION[$Name] = $Value;
}

Regards!!!

nguyen_oanh
13-01-2009, 09:08
Xin cám ơn nha fotech_nd ! Mình làm được rồi! :)>-

vuatintac
13-01-2009, 09:46
=> chỉnh lại nội dung hàm Session như sau xem được ko nhé :D
function Session($Name, $Value)
{
if (!session_id()) {
@session_start();
}
$_SESSION[$Name] = $Value;
}

Regards!!!
Bác có thể giải thích dòng lệnh của bác khác bình thường thế nào không bác

fotech_nd
14-01-2009, 09:36
Bác có thể giải thích dòng lệnh của bác khác bình thường thế nào không bác

google search với từ khóa session_register, ngay kết quả đầu tiên (http://vn2.php.net/session_register) là hướng dẫn cách dùng hàm session_register, đọc hướng dẫn này là có thể thấy được sự khác nhau giữ cách dùng session_register (trong cách làm ban đầu của nguyen_oanh) và dùng biến $_SESSION (trong cách làm của fotech_nd)



session_register — Đăng kí một hoặc nhiều biến toàn cục với session hiện tại

Mô tả
bool session_register ( mixed $name [, mixed $... ] )

Hàm session_register() chấp nhận (đăng ký) theo số lượng biến của các tham số (truyền vào), thông thường mỗi tham số có thể là một chuỗi (string) chứa tên của một biến hoặc là một mảng (array) gồm các tên biến hoặc các mảng khác. Với mỗi tên (tên biến truyền vào) hàm session_register() đăng kí biến toàn cục với tên đó trong session hiện tại.

Bạn cũng có thể tạo một biến session bằng cách đặt (cú pháp) đơn giản dành riêng cho phần tử của mảng $_SESSION hoặc $HTTP_SESSION_VARS (phiên bản PHP < 4.1.0)



<?php
// Dùng hàm session_register() thì không được khuyến khích
$barney = "A big purple dinosaur.";
session_register("barney");

// Dùng biến $_SESSION thì đươc khuyến khích (từ phiên bản PHP 4.1.0)
$_SESSION["zim"] = "An invader from another planet.";

// Với phiên bản cũ hơn, cách dùng là sử dụng biến toàn cục $HTTP_SESSION_VARS
$HTTP_SESSION_VARS["spongebob"] = "He's got square pants.";
?>


Nếu hàm session_start() chưa được gọi trước khi hàm này (session_register) được gọi, một hàm ẩn gọi đến session_start() với không tham số sẽ được thực thi. Biến $_SESSION không tương tự với cách xử lý này và bắt buộc hàm session_start() phải được gọi trước khi dùng.

Cảnh báo!

Hàm này không được khuyến khích dùng trong phiên bản PHP 5.3.0 (nói chung là PHP 5) và sẽ bị xóa trong phiên bản PHP 6.0.0. Tính tin cậy trên cảnh báo đặc biệt này thì rất thực tế (Nói chung là lập trình viên không nên sử dụng hàm session_register nữa).

... bạn chịu khó dịch tiếp nhé! :D


Mà bạn nếu là newbie thì nhớ rằng $_SESSION và $HTTP_SESSION_VARS được mặc định là biến toàn cục (khi dùng trong các hàm thì sẽ không phải dùng khai báo global $_SESSION, $HTTP_SESSION_VARS;) và luôn luôn được sử dụng dưới dạng mảng nhé.
Regards!!!

vuatintac
14-01-2009, 16:11
Thank bác,

Nói chung khi khai báo một session, mình sẽ dùng dạng:



<?php

$_SESSION["abc"] = "Some things";

?>
thay vì


<?php

$abc= "Some things";
session_register("barney");

?>