0

誰かが私を助けることができるかどうか疑問に思っていました-ユーザー(学生)がログインできるようにするログインシステムを正常に作成しました。私のシステムには管理者ログインも必要であり、管理者には学生が表示しないページを表示する権限があります。管理者と学生の両方の情報は、2 つの異なるテーブルから取得されます。以下は、学生のログインに使用したコードです (ユーザーとログインの 2 つの異なるページがあります)。管理者ログインを実装する方法に行き詰まっています。助けていただければ幸いです。(管理者は「adminnum」と「adminpassword」を使用してログインします。

login.php

<?php

include "core/init.php";
include "includes/content.php";

if (empty($_POST) === false) {
$studentemail = $_POST ['studentemail'];
$studentpassword = $_POST ['studentpassword'];

if (empty($studentemail) === true || empty($studentpassword) === true) {
    $errors[] = "You need to enter an email address and password"; 
} else if (user_exists($studentemail) === false) {
    $errors[] = "We can't find that email address. Have you registered?";
} else {

    if (strlen($studentpassword) > 32) {
        $errors[] = 'Password too long';
        }

    $login = login($studentemail, $studentpassword);
    if ($login === false) {
        $errors[] = 'That email/password combination is incorrect';
    } else {
        $_SESSION['studentid'] = $login;
        header('Location: index.php');
        exit();
    }
}
} else {
$errors[] = 'No data received';
}
include "includes/overall/overall_header.php";
if (empty($errors) === false) {
?>
<h2> We tried to log you in, but...</h2>    

<?php
echo output_errors($errors);
}
?>
    <center><input id="submit" type="submit" value="Back" onclick="location.href='Login2.php'"></center>
<?php
include "includes/overall/overall_footerloggedout.php";
?>

users.php

<?php
function logged_in() {
return (isset($_SESSION['studentid'])) ? true : false;
}

function user_exists($studentemail) {
$studentemail = sanitize($studentemail);
$query = mysql_query("SELECT COUNT(`studentid`) FROM `student` WHERE `studentemail` 
         = '$studentemail'");
return (mysql_result($query, 0) == 1) ? true : false;
}

function studentid_from_student ($studentemail) {
$studentemail = sanitize($studentemail);
return mysql_result(mysql_query("SELECT `studentid` FROM `student` WHERE      `studentemail` = '$studentemail'"), 0, 'studentid');
}
`function login($studentemail, $studentpassword) {
$studentid = studentid_from_student($studentemail);

$studentemail = sanitize($studentemail);
$studentpassword = md5($studentpassword);

return (mysql_result(mysql_query("SELECT COUNT(`studentid`) FROM `student` WHERE   `studentemail` = '$studentemail' AND `studentpassword` = '$studentpassword'"), 0) == 1) ?   $studentid : false;

}
?>
4

2 に答える 2

0

2 つの異なるテーブルからユーザーと管理者を抽出して、ロジックを変更することをお勧めします。それらを 1 つのテーブルにのみ作成しますが、すべてのユーザーには列が含まれている必要がありますflag。たとえば、flag=1 は ADMIN、flag=0 は USER です。

于 2013-04-04T13:37:53.313 に答える