10/10/2018, 11:39

[tutor] tạo trang đăng nhập phân quyền

giả sử bạn có một bảng member có các trường sau
- member_id
- member_user
- member_pass
- member_lever
dùng để chứa thông tin về thành viên
lever của admin là ROOT
cách tạo file để connect đến database em đã hướng dẫn rồi mong các bác tìm các bài trước
bước 1: tạo form để user đăng nhập login.html
Code:
<form method=post action="login.php">
user: <input type=text name=member_user size=30>
<br>
pass: <input type=password name=member_pass size=30>
<br>
<input type=submit value="Login">
</form>
buoc 2: Login.php
Code:
<?php
session_start();
include("file de connect database");
$result_check = mysql_query("select * from member where member_user='$member_user' AND member_pass='$member_pass'");
$result_check = mysql_num_rows($result_check);
if($result_check){
$loged = $member_user
session_register("loged");
echo("ban da dang nhap thanh cong");
}
else
{
echo("Xin loi de nghi ban kiem tra lai user va pass");
}
?>
Bây giờ tui có 2 file một dành cho admin còn một dành cho member
admin.php (danh cho admin)
Code:
<?php
session_start();
include("file de connect database");
if(session_is_registered("loged")){
      $check_lever = mysql_query("select * from member where member_user='$loged' AND member_lever='root'");
      $check_lever = mysql_num_rows($check_lever);
      if($check_lever){ // neu user co lever la root
            echo("xin chao admin");
      }
      else
      {
           echo("Ban khong phai la admin");
      }
}
else
{
      include("login.html");
}
?>
member.php (danh cho member)
Code:
<?php
session_start();
include("file de connect");
if(session_is_registered("loged")){
    echo ("xin chao member");
}
else
{
include("login.html");
}
?>
NsT viết 13:53 ngày 10/10/2018
bác binhvn à , bác code xong 4rum chưa vậy , tớ code xong rồi , có gì bác vào chơi test dùm nhé link là http://tungnguyen.info/?cat=Forum . Thnx bác
binhvn viết 13:52 ngày 10/10/2018
hi cái forum của em còn lâu mới xong vì em làm cũng khá nhiều chức năng bác đợi nhé
cái forum của bác lại liền với music box hả, em thích nó là một forum riêng cơ
NsT viết 13:55 ngày 10/10/2018
cái 4rum này tớ code có mấy tiếng , thành ra ko add nhiều chức năng gì hết , mục đích là để hiểu cái system của nó đã , hiểu rồi thì thêm các chức năng cũng không muộn
Em ko muốn làm forum riêng vì tớ làm web cá nhân mà
À bác antiflood như thế nào , có thể share cho tớ cách làm được ko , tớ đã có chống flood , mà ko biết có hiệu quả hay ko , có gì bác thử flood phát xem sao
Nhân Tâm viết 13:48 ngày 10/10/2018
Bác Binhvn.
Vậy mình gán session cho trang admin.php như thể nào ? Mình ví dụ như sau
Mình làm một trang admin.php quản lý toàn bộ thông tin trong database của một trang web, Mình muốn khi gọi trang admin.php thì gọi trang kiếm tra login.html có form
username =
password =
Nếu kiểm tra dữ liệu đúng thì cho hiển thị thông tin trên trang admin.
còn sai thì quay lại login.html.
Nhân Tâm viết 13:41 ngày 10/10/2018
Mình đã làm như hướng dẫn bên trên của Bác binhvn, nhưng không biết nó sai ở đâu mà khi gọi file login.php thì đứng nguyên, cũng không thông báo gì hết !
Các Bác xem giúp cái file của mình.
File login.html:
PHP Code:
<form method=post action="login.php">
user: <input type=text name=username size=30>
<
br>
pass: <input type=password name=password size=30>
<
br>
<
input type=submit value="Login">
</
form
File login.php:
PHP Code:
<?php
session_start
();
include(
"common.php");
$result_check mysql_query("select * from user where username='$username' and password='$password'");
$result_check mysql_num_rows($result_check);
if(
$result_check){
$loged $username
session_register
("loged");
echo(
"ban da dang nhap thanh cong");
}
else
{
echo(
"Xin loi de nghi ban kiem tra lai user va pass");
}
?>
File admin.php:
PHP Code:
<body leftmargin="0" topmargin="0" bgcolor="#CCCCCC">
<?php
session_start
();
include(
"common.php");
redirect("login.html");
if(
session_is_registered("loged")){
      
$check_lever mysql_query("select * from user where username='$loged' AND username_lever='root'");
      
$check_lever mysql_num_rows($check_lever);
      if(
$check_lever){ // neu user co lever la root
            
echo("xin chao admin");
      }
      else
      {
           echo(
"Ban khong phai la admin");
      }
}
else
{
      include(
"login.html");
}
?>
<left>
          <table width="800" border="0" cellspacing="0" cellpadding="0">
    <tr> 
      <td height="700" valign="top" align="left"><table width="797" height="700" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td width="130" height="700" bgColor="#444444" valign="top" align="center">
              <? include"menu_left_ad.php";?>
              <br>
            </td><td width="10"> </td>
            <td width="660" valign="top" align="center"> 
            <? 
                switch($_GET***91;'show'***93;)
                {
                    case shownews010:
                        include ("edit_news.php");
                        break;
                    case edit0101:
                        include ("delete_news.php");
                        break;
                    
                    default:
                        include ("show_news.php");
                        break;
                }
            ?>
            </td>
            </tr>
        </table></td>
    </tr>
  </table>
  <table width="800" border="0" cellspacing="0" cellpadding="0"> ';
    </td>
    </tr>
    <tr><td bgcolor="#006699" height="1"></td></tr>
  </table>
</left>
</body>
File common.php khai báo kết nối database
tablename: user có 4 fields ->
(user_id(int3), username(varchar), password(varchar), active(tinyint))

Các bác xem giùm mấy file nó bị sai chỗ nào ?
To: binhvn
Bác cho hỏi trong file admin.php bác khai báo 'member_lever='root''.
Mình muốn hỏi bác member_lever ở đây là tên field của database hay là gì ?
Cảm ơn các bác nhiều.
binhvn viết 13:55 ngày 10/10/2018
member_lever là một trường của bảng member chứa quyền của user
nếu member_lever="root" => admin
còn cái vụ trang trắng thì bạn có thể up cái code của bạn lên đây được không
cho mình hỏi
redirect("login.htm");
là gì thế
Nhân Tâm viết 13:45 ngày 10/10/2018
To: lkn
Bác lkn file common.php thông thường đặt tên là fiel config.php, nhưng mình quen đặt tên là common nên cứ dùng tên như thế. Bác nói đúng common.php là khai báo kết nối database.
To: Binhvn

Mình diễn tả tất cả các file của mình như sau:
Mình xây dựng trang admin.php để quản lý toàn bộ dữ liệu trên trang.
Trong file admin.php nó đã có code hiển thị dữ liệu, dữ liệu là các trang được gọi trong Swith () Case.... đó.
Khi URL gõ tên admin.php thì admin -> gọi trang login để kiểm tra user =admin
pass = 123dsf.. Nếu user & pass =true thì cho hiển thị thông tin trên trang admin.php. Mình không biết giải thich thể nào cho rõ hơn, nhưng đại khái như là session cho file admin.php

redirect "login.html" khi URL gõ admin.php thì nó sẽ đi thẳng tới trang login.html cho người quản trị nhập user & pass, login.html -> action gọi login.php để check user & pass, nếu đúng thì quay lại hiển thị dữ liệu trên trang admin.php.
binhvn viết 13:53 ngày 10/10/2018
PHP Code:
<?php session_start(); ?>
<body leftmargin="0" topmargin="0" bgcolor="#CCCCCC"> 
<?php 
include("common.php"); 
if(
session_is_registered("loged")){ 
      
$check_lever mysql_query("select * from user where username='$loged' AND username_lever='root'"); 
      
$check_lever mysql_num_rows($check_lever); 
      if(
$check_lever)
      { 
// neu user co lever la root 
      
?>
<left> 
          <table width="800" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
      <td height="700" valign="top" align="left"><table width="797" height="700" border="0" cellspacing="0" cellpadding="0"> 
          <tr> 
            <td width="130" height="700" bgColor="#444444" valign="top" align="center"> 
              <? include"menu_left_ad.php";?> 
              <br> 
            </td><td width="10"> </td> 
            <td width="660" valign="top" align="center"> 
            <? 
                switch($_GET***91;'show'***93;) 
                { 
                    case shownews010: 
                        include ("edit_news.php"); 
                        break; 
                    case edit0101: 
                        include ("delete_news.php"); 
                        break; 
                     
                    default: 
                        include ("show_news.php"); 
                        break; 
                } 
            ?> 
            </td> 
            </tr> 
        </table></td> 
    </tr> 
  </table> 
  <table width="800" border="0" cellspacing="0" cellpadding="0"> '; 
    </td> 
    </tr> 
    <tr><td bgcolor="#006699" height="1"></td></tr> 
  </table> 
</left> 
</body>
      <?php
      

      else 
      { 
           echo(
"Ban khong phai la admin"); 
      } 

else 

      include(
"login.html"); 

?>
mình nghĩ như này thì đúng hơn
Nhân Tâm viết 13:54 ngày 10/10/2018
to: binhvn
source file admin.php của Bác thì đúng là như thế, nhưng mình không hiểu sao file login.html gọi action tới file login.php nó cứ đứng trơ trơ ra ah, chẳng thông báo gì hết ?
Bác có thể xem lại giúp mình cái file login.php không ? hay do mình test trên localhost máy cá nhân nên nó không chạy ?
Thanks Bác nhiều !
Bài liên quan
0