Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PHP - Bảo mật các trang chỉ dành cho thành viên với hệ thống đăng nhập

Tôi đề nghị bạn nên thay đổi cách tiếp cận của mình.

Mặc dù thoạt nhìn, những tệp ví dụ này trông có vẻ rất nhiều, nhưng khi bạn nghiên cứu chúng, bạn sẽ thấy nó thực sự đơn giản và hợp lý hơn nhiều so với hướng bạn đang đi.

Đầu tiên, di chuyển nội dung kết nối / đăng nhập db vào một tệp riêng biệt và require hoặc include tệp đó ở đầu mỗi trang PHP:

INIT.PHP

    // Create connection
    $conn = new mysqli($servername, $username, $password, $db);

    // Check connection
    if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
    } 

    //Might as well also load your functions page here, so they are always available
    require_once('fn/functions.php');
?>

Bây giờ, hãy xem cách chúng tôi sử dụng nó trên các trang Chỉ mục (và Bị hạn chế)?

INDEX.PHP

<?php
    require_once('inc/head.inc.php');
    require_once('fn/init.php');
?>

<body>
    <!-- Examples need jQuery, so load that... -->
    <script src="https://code.jquery.com/jquery-1.11.3.js"></script>
    <!-- and our own file we will create next... -->
    <script type="text/javascript" src="js/index.js"></script>

    <div id="pageWrap">
        <div id="loginDIV">
            LoginID: <input type="text" id="liID" /><br>
            LoginPW: <input type="password" id="liPW" /><br>
            <input type="button" id="myButt" value="Login" />
        </div>
    </div>

JS / INDEX.JS

$(function(){
    $('#myButt').click(function(){
        var id = $('#liID').val();
        var pw = $('#liPW').val();
        $.ajax({
            type: 'post',
             url: 'ajax/login.php',
            data: 'id=' +id+ '&pw=' +pw,
            success: function(d){
                if (d.length) alert(d);
                if (d==1) {
                    window.location.href = 'restricted_page.php';
                }else{
                    $('#liID').val('');
                    $('#liPW').val('');
                    alert('Please try logging in again');
                }
        }
        });
    });//END myButt.click

}); //END document.ready

AJAX / LOGIN.PHP

<?php
    $id = $_POST['id'];
    $pw = $_POST['pw'];

    //Verify from database that ID and PW are okay
    //Note that you also should sanitize the data received from user

    if ( id and password authenticate ){
        //Use database lookups ot get this data: $un = `username` 

        //Use PHP sessions to set global variable values
        $_SESSION['username'] = $un;
        echo 1;
    }else{
        echo 'FAIL';
    }

RESTRICTED_PAGE.PHP

<?php
    if (!isset($_SESSION['username']) ){
        header('Location: ' .'index.php');
    }

    require_once('inc/head.inc.php');
    require_once('fn/init.php');
?>
<body>
    <h1>Welcome to the Admin Page, <?php echo $_SESSION['username']; ?>
    <!--  AND here go all teh restricted things you need a login to do. -->

Tìm hiểu thêm về AJAX - nghiên cứu các ví dụ đơn giản




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL> Bảng không tồn tại. Nhưng nó có (hoặc nó phải)

  2. MySQL làm thế nào để điền ngày bị thiếu trong phạm vi?

  3. Lỗi MySQL thường gặp:"Gặp lỗi khi đọc gói thông tin liên lạc"

  4. Tôi nên xử lý --secure-file-priv trong MySQL như thế nào?

  5. Thủ tục được lưu trữ với các tham số WHERE tùy chọn