2

私は最近 PHP の学習を始めましたが、いくつかの問題に遭遇しました。ここで他の回答をいくつか見ましたが、まだうまくいかないのでお詫びします。

ユーザー アカウントが管理者かどうかを確認するチェックを追加して、管理者アカウントの場合は管理ページに、管理者アカウントでない場合はインデックス ページに直接移動しようとしています。私のユーザーテーブルには「user_type」という列があり、管理者は「admin」に設定されています。ログインコードでこれをチェックして適切にリダイレクトするにはどうすればよいですか?

    <?php

    ob_start();
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="db_tc"; // Database name 
$tbl_name="tbl_users"; // Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword'];

// Password Hashing
$mypassword = hash("sha512", $mypassword);

//SQL injection protection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE email='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

$ar=mysql_fetch_array($result);
if($ar['user_type']=='admin')
{
 header('Location: admin.php');
}
else
{
 header('Location: index.html');
}

// Count table rows.
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

    $_SESSION["login"] = ("usernameEntered");
    header("location:index.html");
}

else {
    echo "Wrong Username or Password";
}
ob_end_flush();
?> 

更新された回答:

みんな助けてくれてありがとう。最終的な作業コードを表示したいユーザーは、次のとおりです。

$ar=mysql_fetch_array($result);

// Count table rows.
$count=mysql_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

if($ar['user_type']=='admin')
{
 header('Location: adminhome.php');
}
else
{
 header('Location: index.html');
}

}
else {
    echo "Wrong Username or Password";
}
4

1 に答える 1

0
$ar=mysql_fetch_array($result);
if($ar['user_type']=='admin')
{
 header('Location:http://example.com/admin.php');
}
else
{
 header('Location:http://example.com/index.php');
}

ところで: sha512 は使用しないでください。代わりにふぐを使おう!フグには塩が必要です。Sha512 はそうではないので、フグでハッシュテーブルを介してパスワードを取得することはできません。2 つ目は、blowfish はハッシュするのにより多くの時間を必要とするため、ブルートフォース攻撃も不可能です。

于 2013-10-12T21:30:02.063 に答える