0

I have been trying to make a page protection for the Administrator page, and I can not get it to work. I am sure this would not have been a problem if I was not new to PHP coding, hehe.

So what I am trying to do is, when a normal user with the type '0' is trying to access the administrator page, index_admin.php, the user will get redirected to the normal user page, index.php. And if the user have the type '1', then the user/admin will stay on the page.

So here is the code I have been trying to get working. (This file is required in index_admin.php and it is called index_admin_check.php):

<?php
  session_start();
?>

<?php
    $vert = "localhost";
    $brukarnamn = "root";
    $passord = "";
    $db_namn = "nettsidebunad";
    $tbl_namn = "kunde_register";

    // Connecting to the MySQL database.
    mysql_connect("$vert", "$brukarnamn", "$passord") or die ("Kan dessverre ikkje koble til databasen.");
    mysql_select_db("$db_namn") or die ("Kan ikkje finna den ynkjande databasen.");
?>

<?php
        // *** Page protection *** \\

        // Admin check. If `type` = 1, let the user (admin) stay on the site. If `type` = 0 kick the user (normal) off the site.
        $sql = "SELECT `type` FROM $tbl_namn";
        $res = mysql_query($sql);
        $tell = mysql_num_rows($res);

    if ($tell == 0) {
        header ("location: index.php");
        exit();
}
?>

Some of this text is in norwegian.

$vert = $host (in english)

$brukarnamn = $usernamn (in english)

$passord = $password (in english)

$db_namn = $db_name (in english)

$tbl_namn = $tbl_name (in english)

4

3 に答える 3

0
$sql = "SELECT `type` FROM $tbl_namn";

この SQL クエリは、データベース内のすべてのユーザーの行を返します。クエリが結果を返したかどうかを単純に確認する方法を使用して、現在のユーザーの行だけを選択し、ユーザーがtype=1.

次のことを確認する必要があります。

  • ユーザーは、以前にユーザー名とパスワードなどを使用してシステムにログインしています
  • 詳細をセッションに保存しました。

ユーザー テーブルに ID 列があり、ログイン ユーザーの ID を「userid」としてセッションに保存した場合は、次のクエリを使用できます。

$sql = "SELECT `type` FROM $tbl_namn WHERE id = {$_SESSION['userid']} AND type = 1";

しかし、もちろん、最初にログインしたときにユーザーのタイプをセッションに保存するだけなので、それは意味がありませんよね?

于 2013-02-01T14:31:33.633 に答える
0

これをログインページに入れます:

<?php session_start();
if ($_POST['type'] = "1") {
    Header('location: http://example.com/admin.php/');
    $_SESSION['admin']; = "yes";
    exit;
} else { 
    Header('location: http://example.com/user.php/');
    $_SESSION['admin']; = "no";
    exit;
}
//modify as needed
?>

これは admin.php ファイル名に任意ですが、拡張子は .php である必要があります。

<?php session_start():
if ($_SESSION['admin']; = "no") {
    Header('location: http://example.com/user.php/');
    exit;
}
//modify as needed
?>

これをファイルの先頭に入れることを忘れないでください。そうしないと、セッションが機能しません

于 2015-01-04T00:07:28.583 に答える
0

私が見る限り、あなたは実際にユーザーをチェックしていません。状況を明確にするために、コードにいくつかのコメントを付けます。

    $sql = "SELECT `type` FROM $tbl_namn";   //Return all values of column "type" from table - instead you should search for specifyc user
    $res = mysql_query($sql);    
    $tell = mysql_num_rows($res);   //Count returned rows

したがって、ユーザーの種類を調べる代わりに、登録ユーザーの数を取得します。ユーザー名を検索し、その名前のユーザー タイプを取得するにはどうすればよいですか。では、このテーブルの概念について考えてみ ID | name | type |
ましょう。これで、ユーザーのチェックを開始できます。ユーザーのタイプ「admin」を mysql に問い合わせます。

$name = $_POST["username"];   //username submited in POST HTML form
$name = mysql_real_escape_string($name);  //Replace dangerous characters from name. This is important to avoid your database being hacked
$data = mysql_query("SELECT type FROM $tbl_namn WHERE name='$name'") or die(mysql_error());  //On failure, you will is if there is some error
$data=mysql_fetch_row($data);  //Get actual data
if($data["type"]==0) {
   header("HTTP/1.1 403 Acces Forbidden");
   header("Location: forbidden.html");  //send user to page telling me he is not allowed to enter. As well you can use include here.
   exit;
于 2013-02-01T14:36:11.930 に答える