3

登録ページとログインフォームは正常に機能しています。メンバーが登録してからログインすると、ユーザーはmember.phpページにアクセスします。メンバーページには、メンバー専用のプロフィール情報があります。次に、管理者がadmin.phpページにリダイレクトする管理者ログインを作成します。このページには、次のようなすべての情報があります。他のすべての管理タスク(完了)を登録(完了)したユーザーの数について

管理ページを作成しましたが、管理者のログインとパスワードを承認する方法がわかりません。これらを使用すると、管理エリアに移動します。

これが私のログインフォームのコードです

<form id="loginForm" name="loginForm" method="post" action="login-exec.php">
  <table width="700" border="0" align="center" cellpadding="2" cellspacing="0">
    <tr>
      <td width="112"><b>User id (Email-id)</b></td>
      <td width="188"><input name="user_email" type="text" class="textfield" id="login" /></td>
    </tr>
    <tr>
      <td><b>Password</b></td>
      <td><input name="password" type="password" class="textfield" id="password" /></td>
    </tr>
    <tr>
      <td> </td>
      <td><input type="submit" name="Submit" value="Login" /></td>
    </tr>
  </table>
</form>
</body>
</html>

login-exec.phpのコード

<?php
    //Start session
    session_start();

    //Include database connection details
    require_once('config.php');

    //Array to store validation errors
    $errmsg_arr = array();

    //Validation error flag
    $errflag = false;

    //Connect to mysql server



    //Select database
    ----something----

    //Function to sanitize values received from the form. Prevents SQL injection
    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return mysql_real_escape_string($str);
    }

    //Sanitize the POST values
    $user_email = clean($_POST['user_email']);
    $pwd = clean($_POST['password']);

    //Input Validations
    if($user_email == '') {
        $errmsg_arr[] = 'Login ID missing';
        $errflag = true;
    }
    if($pwd == '') {
        $errmsg_arr[] = 'Password missing';
        $errflag = true;
    }

    //If there are input validations, redirect back to the login form
    if($errflag) {
        $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        session_write_close();
        header("location: login-form.php");
        exit();
    }

    //Create query
    $qry="SELECT * FROM customer WHERE user_email='$user_email' AND password='$pwd' ";

    if ($user_email= )

    $result=mysql_query($qry);

    //Check whether the query was successful or not
    if($result) {
        if(mysql_num_rows($result) == 1) {
            //Login Successful
            session_regenerate_id();
            $customer = mysql_fetch_assoc($result);
            $_SESSION['SESS_id'] = $customer['id'];
            $_SESSION['SESS_fname'] = $customer['first_name'];
            $_SESSION['SESS_lname'] = $customer['last_name'];
            session_write_close();
            header("location: member-index.php");
            exit();
        }else {
            //Login failed
            header("location: login-failed.php");
            exit();
        }
    }else {
        die("Query failed");
    }
?>
4

3 に答える 3

3

管理者を含むすべてのメンバーがユーザー権限を保存するためのユーザー権限を設定するための追加のフィールドをデータベースに含めることができます。そのフィールドが管理者である場合、そのユーザーの管理領域を持つことができます。それ以外の場合は、メンバー領域に移動するよりもメンバーである場合に使用できます。

于 2012-04-05T12:08:47.053 に答える
1

つまり、問題を言い換えると、どこかからコードを取得し(ここでは、おそらくhttp://www.phpfreaks.com/forums/index.php?topic=314604)、その動作を変更して管理者も許可するようにします。ユーザー。私が持っている最善のアドバイスは、最初に使用しているコードを理解することです。

header("Location: member-index.php");ユーザーをmember-indexページにリダイレクトする行である行を探します。データベースフィールドで適切に実行したくないことを示したので、$user_emailの値のテストをハードコーディングできます。admin @ blahの場合は、「SESS_isadmin」などの特別なSession変数を設定し、代わりに別のページにリダイレクトできます。その新しいページは、「SESS_isadmin」値をテストして、ユーザーがログインしていることを確認できます。そうでない場合は、ログインページにリダイレクトできます。

実際にコードを書くことを除けば、それは「ユーザーレベル」です。:)

注意点:実際の本番レベルのコードのコーディングにこのアプローチを使用しないでください。この方法でプログラミング言語について学ぶことは問題ありませんが、このようなものを公開する前に考慮すべきことがたくさんあります。

于 2012-04-05T13:47:19.197 に答える
1

「レベル」権限のように、権限IEを分類するために、データベースインデックスの追加部分を作成して、そのレベルを確認することができます。AKA:レベルが3以上の場合は、管理ページへの自動アクセスへのアクセスを許可します。

于 2012-04-05T12:18:50.407 に答える