09/10/2018, 18:21

Stupid session >_<!!!!!!

hiz ,bà con giúp mình với,mình đang xài fox,chạy ngon lành ,nhưng cứ mổi lần như vầy(ví dụ)
<?
session_start();
echo <<<EOT
say sth
EOT;
?>
ròi save lại dưới dạng session.php
thì mỗi lần gõ http://localhost//session.php
là nó như vầy:
Code:
Warning: open(/tmpsess_739a0d082c5175c938c00d5bfeddd975, O_RDWR) failed: m (2) in 
c:foxwwwsession.php on line 2
say sth
trong đó 739a0d082c5175c938c00d5bfeddd975 là session ID của mình,và nó ko thèm lưu session với hàm sesion_register lun
Giờ phải làm sau các bạn nhỉ,thx nhì
--Đây là php.ini của mình,phần session,còn browser thì security dc chỉnh ở mức thấp nhất T_T:
Code:
[Session]
session.save_handler      = files   ; handler used to store/retrieve data
session.save_path         = /tmp    ; argument passed to save_handler
                                    ; in the case of files, this is the
                                    ; path where data files are stored
session.use_cookies       = 1       ; whether to use cookies
session.name              = PHPSESSID  
                                    ; name of the session
                                    ; is used as cookie name
session.auto_start        = 0       ; initialize session on request startup
session.cookie_lifetime   = 0       ; lifetime in seconds of cookie
                                    ; or if 0, until browser is restarted
session.cookie_path       = /       ; the path the cookie is valid for
session.cookie_domain     =         ; the domain the cookie is valid for
session.serialize_handler = php     ; handler used to serialize data
                                    ; php is the standard serializer of PHP
session.gc_probability    = 1       ; percentual probability that the 
                                    ; 'garbage collection' process is started
                                    ; on every session initialization
session.gc_maxlifetime    = 1440    ; after this number of seconds, stored
                                    ; data will be seen as 'garbage' and
                                    ; cleaned up by the gc process
session.referer_check     =         ; check HTTP Referer to invalidate 
                                    ; externally stored URLs containing ids
session.entropy_length    = 0       ; how many bytes to read from the file
session.entropy_file      =         ; specified here to create the session id
; session.entropy_length    = 16
; session.entropy_file      = /dev/urandom
session.cache_limiter     = nocache ; set to {nocache,private,public} to
                                    ; determine HTTP caching aspects
session.cache_expire      = 180     ; document expires after n minutes
session.use_trans_sid     = 1       ; use transient sid support if enabled
                                    ; by compiling with --enable-trans-sid
Bim viết 20:26 ngày 09/10/2018
Vào php.ini, tìm chỗ nào đại khái là session path, sửa lại đường dẫn có thực trên máy. DOne
ParaSnake viết 20:22 ngày 09/10/2018
ko phải đâu bác,cái erroe thì em fix dc rồi,chỉ cần vào ổ C,tạo folder mới tên là tmp là xong!
Nhưng sao vẫn ko lấy dc giá trị từ các biến như $_POST hay là $_SESSIOn
giả sử làm như vầy :
Code:
<HTML>
<HEAD>
<Body>
 </head>
<Form method = "post" action="page2.php">
show me ur name:
<input type="text" name="name">
<input type="submit" value ="submit">
</form>
</body>
</html>
page2.php
Code:
<?
echo $name; //cái này thì nó hiện rA NÈ
?>
<?
session_start();
$name=$_POST['name'];
session_register('name');
$_SESSION['name']=$name;
?>

<?
echo $_SESSION['name']; //BULLY-SHEET >_<,nó ko thèm hiện ra cái này
?>
kết quà là browser chẳng hiển thị gì hết trơn
bác cho em cái giải pháp khác,thx
QueenRock viết 20:25 ngày 09/10/2018
ặc, page 2 bạn phải echo thì nó mới hiện lên chứ
ParaSnake viết 20:21 ngày 09/10/2018
ko,mình echo ròi,nhưng quên ghì vào thui ,sorry để edit lại
NoZ viết 20:29 ngày 09/10/2018
Lỗi của bạn là hiểu và dùng sai các hàm về Session trong PHP.

Đơn giản là bạn chỉ cần sửa code lại như vầy:
Code:
<?
session_start();
$_SESSION['name']=$_POST['name'];
echo $_SESSION['name'];
?>
Note: nếu bạn đã dùng $_SESSION['name'] thì không cần dùng session_register('name').
ParaSnake viết 20:24 ngày 09/10/2018
xin lỗi bạn,nhưng hổng dc,đây là những gì nó cho mình:
Code:
Warning: Cannot send session cookie - headers already sent by (output started at c:\fox\www\testing with session\page2.php:2) in c:\fox\www\testing with session\page2.php on line 5

Warning: Cannot send session cache limiter - headers already sent (output started at c:\fox\www\testing with session\page2.php:2) in c:\fox\www\testing with session\page2.php on line 5
mún khóc wá
NoZ viết 20:26 ngày 09/10/2018
Bạn phải đặt session_start() trước tất cả các tag khác của trang php.

Ví dụ như thế này sẽ gây ra lỗi
Code:
<html>
<body>
<? session_start(); ?>
</body>
</html>
Thông báo lỗi sẽ giống như bạn gặp "header already sent" bởi vì trong đoạn code trên, bạn đã output tag <html> và <body> rồi.

Nếu gặp trường hợp trên, bạn sửa lại như sau
Code:
//mang session_start lên đầu trang
<? session_start(); ?>
<html>
<body>
...
</body>
</html>
ParaSnake viết 20:33 ngày 09/10/2018
Trước hết,thành thật cám ơn bạn Noz đã hết lòng giúp mình

Thứ hai(đọc xong đừng chửi),cho mình xin lỗi vì đã làm phiền,lỗi là ở cái localhost của mình,mình up 2 file trên vào host tet thì chạy ngon lành-->bỏ quách cái fox đi cho ròi

Thứ ba:bạn nào cho mình biết cái cái virtual server nào ngon hơn fox ko??
cám ơn nhiều.
QueenRock viết 20:31 ngày 09/10/2018
hờ hờ, nếu xài XP bạn cài PHPHome hoặc PHPTriad ấy, dùng hay hơn, lên sourceforge.net mà download
P/S: nhìn như lai thần chưởng ghê quá
Bài liên quan
0