私は最近 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";
}