sql >> データベース >  >> RDS >> Mysql

PHP-ログインシステムでメンバー専用ページを保護する

    アプローチを変えることをお勧めします。

    一見、これらのサンプルファイルは多くのように見えますが、それらを研究すると、現在の方向よりもはるかに単純で論理的なアプローチであることがわかります。

    まず、db connect / loginのものを別のファイルに移動し、require またはinclude 各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');
    ?>
    

    では、インデックス(および制限付き)ページでどのように使用するかを確認しますか?

    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. -->
    

    AJAXの詳細-簡単な例をご覧ください




    1. SQL Serverがミリ秒を失うのはなぜですか?

    2. 行を列に動的に変換するMysqlクエリ

    3. SQLServerデータベースからのすべてのデータをスクリプト化する

    4. HRデータベースの構築と保守