10/10/2018, 09:35

sửa code dùm mình với vấn đề về session

đầu tiên mở trang index.php nó gọi trang login sau khi login nó gọi trang admin_control thì biến $tennv nó vẫn nhận được nỗi dung từ CSDL nhưng mà sau khi bấm trang chủ admin (chữ màu đỏ bên dưới) thì biến $tennv ko còn nữa >.< nó vẫn vô được trang admin_control.php . làm sao để nó ko mất đi đây T_T

đây là code trang index.php
Code:
<?php
$nv=session_is_registered('tennv');
if($nv){
include('admin_control.php');
}else{
include('login.html');

}
?>
trang login.php
Code:
<?php
session_start();
require_once("../Includes/DataProvider.php");
$user=$_POST['manv'];
$pass=md5($_POST['matkhau']);
$sql=DataProvider::ExecuteQuery("select * from tbl_nhanvien where manv='".$user."'&& pass='".$pass."'");
$row=mysql_num_rows($sql);
$rows=mysql_fetch_row($sql);
if($row!=0){
session_register('tennv');
$tennv=$rows[1];
$_SESSION['tennv'];
include('index.php');
}else{
include('login.html');
}

?>
trang admin_control.php
Code:
<?php
echo "Xin chào <font color=blue>".$tennv."</font>.Chúc bạn một ngày tốt lành!";
?>
<td class="info"><div align="center"><a href="../adwin/index.php">Trang chủ admin</a></td>
thuanbk viết 11:44 ngày 10/10/2018
Được gửi bởi sword_009
đầu tiên mở trang index.php nó gọi trang login sau khi login nó gọi trang admin_control thì biến $tennv nó vẫn nhận được nỗi dung từ CSDL nhưng mà sau khi bấm trang chủ admin (chữ màu đỏ bên dưới) thì biến $tennv ko còn nữa >.< nó vẫn vô được trang admin_control.php . làm sao để nó ko mất đi đây T_T

đây là code trang index.php
Code:
<?php
$nv=session_is_registered('tennv');
if($nv){
include('admin_control.php');
}else{
include('login.html');

}
?>
trang login.php
Code:
<?php
session_start();
require_once("../Includes/DataProvider.php");
$user=$_POST['manv'];
$pass=md5($_POST['matkhau']);
$sql=DataProvider::ExecuteQuery("select * from tbl_nhanvien where manv='".$user."'&& pass='".$pass."'");
$row=mysql_num_rows($sql);
$rows=mysql_fetch_row($sql);
if($row!=0){
session_register('tennv');
$tennv=$rows[1];
$_SESSION['tennv'];
include('index.php');
}else{
include('login.html');
}

?>
trang admin_control.php
Code:
<?php
echo "Xin chào <font color=blue>".$tennv."</font>.Chúc bạn một ngày tốt lành!";
?>
<td class="info"><div align="center"><a href="../adwin/index.php">Trang chủ admin</a></td>
Sở dĩ vẫn vô được trag admin_control.php là do bạn kiểm tra if($nv) là đk luôn đúng vì $_SESSION['tennv'] đã đuọc đăng kí.
Bạn xem lại câu lệnh truy vấn CSDL nhé.
sword_009 viết 11:51 ngày 10/10/2018
không phải ý mình nói là đăng nhập lần đầu ko có chuyện j` cả vd $tennv='abc' nó vẫn hiện ra xin chào abc... nhưng mà khi bấm vào chữ trang chủ admin (cái chữ màu đỏ bên trên ấy) thì $tennv ko còn = 'abc' nửa.
vvthong viết 11:35 ngày 10/10/2018
Được gửi bởi sword_009
đầu tiên mở trang index.php nó gọi trang login sau khi login nó gọi trang admin_control thì biến $tennv nó vẫn nhận được nỗi dung từ CSDL nhưng mà sau khi bấm trang chủ admin (chữ màu đỏ bên dưới) thì biến $tennv ko còn nữa >.< nó vẫn vô được trang admin_control.php . làm sao để nó ko mất đi đây T_T

đây là code trang index.php
Code:
<?php
$nv=session_is_registered('tennv');
if($nv){
include('admin_control.php');
}else{
include('login.html');

}
?>
trang login.php
Code:
<?php
session_start();
require_once("../Includes/DataProvider.php");
$user=$_POST['manv'];
$pass=md5($_POST['matkhau']);
$sql=DataProvider::ExecuteQuery("select * from tbl_nhanvien where manv='".$user."'&& pass='".$pass."'");
$row=mysql_num_rows($sql);
$rows=mysql_fetch_row($sql);
if($row!=0){
session_register('tennv');
$tennv=$rows[1];
$_SESSION['tennv'];------------> dòng này để làm gì thế?
include('index.php');
}else{
include('login.html');
}

?>
trang admin_control.php
Code:
<?php
echo "Xin chào <font color=blue>".$tennv."</font>.Chúc bạn một ngày tốt lành!";
?>
<td class="info"><div align="center"><a href="../adwin/index.php">Trang chủ admin</a></td>
Bạn làm thế thì $tennv không nhận được là đúng rồi.
Trong trang admin_control.php bạn hãy đổi lại chỗ

echo "Xin chào <font color=blue>".$tennv."</font>.Chúc bạn một ngày tốt lành!";

thành

echo "Xin chào <font color=blue>".$_SESSION['tennv']."</font>.Chúc bạn một ngày tốt lành!";
thuanbk viết 11:39 ngày 10/10/2018
Được gửi bởi sword_009
không phải ý mình nói là đăng nhập lần đầu ko có chuyện j` cả vd $tennv='abc' nó vẫn hiện ra xin chào abc... nhưng mà khi bấm vào chữ trang chủ admin (cái chữ màu đỏ bên trên ấy) thì $tennv ko còn = 'abc' nửa.
Lý do đăng nhập lần đầu vẫn hiện $tennv là do bạn include vào nên biến $tennv vẫn còn nhưng khi bạn click vào trang admin thi biến này không còn nữa muốn nó vẫn hiện bạn phải gán $_SESSION['tennv']=$tennv ở trang login rồi trang admin cho hiện biến $_SESSION['tennv'] là ok!
ngoc_viet08 viết 11:35 ngày 10/10/2018
nhiều người hay nhầm cơ bản đó là có $_GET["abc"], $_POST["abc"] , $_SESSION["abc"] ...thì sẽ có biến $abc chứa giá trị của mấy cái trước . bản chất của sự sai là thế
pcdinh viết 11:40 ngày 10/10/2018
Đề nghị không dùng session_is_registered() nữa nhé. API này đã được đưa vào danh sách loại bỏ từ 6 năm trước rồi.

Các bạn khi bắt đầu code PHP hãy turn on cơ chế báo lỗi của PHP bằng cách đặt dòng sau vào đầu mỗi script

Code:
error_reporting(E_ALL);
ini_set('display_errors', 1);
ngoc_viet08 viết 11:46 ngày 10/10/2018
nếu đã bảo bỏ đi 1 cái cũ thì phải cho ít info về cái mới , cái sẽ thay thế .
việc sử dụng session bao gồm mấy bước quan trọng sau :
+khởi động session :
tất nhiên là hay dùng : session_start();
+đăng kí session :
đường 1 :
$a="abc";
session_register("a");
đường 2 :
session_start();
$_SESSION["a"]="abc";
rắc rỗi cần nói là ở chỗ dùng đường 1 thì ko cần chạy session_start();, còn dùng đường 2 phải gọi session_start();
chỉ vì cái vớ vẩn của bác làm ra php mà mình bị điên 1 buổi .
+ dùng session :
đường 1 và đường 2 giống nhau, phải khởi động session trước :
$a=$_SESSION["a"];
+ kiểm tra session có tồn tại ko ? :
đường 1 :
if (session_is_registered("a")); \\ ko biết có cẩn khởi động session ko ?
{
...
}
đường 2 :
if (isset( $_SESSION["a"])) \\ phải khởi động session trước
{
...
}
+hủy biến session :
toàn bộ
session_destroy();
hoặc huỷ 1 biến :
unset($_SESSION["a"]);
@_@ nó hơi khác khác thế nên nhiều lúc dễ điên .
jiSh@n viết 11:36 ngày 10/10/2018
PHP Manual hình như là đồ bỏ hay sao mà nhiều người ko thèm đọc thế nhỉ???
Bài liên quan
0