一般ユーザーも管理者ログインインターフェースにログインできます。

WBOY
リリース: 2016-06-23 13:49:06
オリジナル
1055 人が閲覧しました

私は独学で PHP を勉強しており、現在掲示板を書いています。コードの admin.php 部分を作成する際、通常のユーザー アカウントでログインできます。何が問題だったのかわかりません。 SQL ステートメントで admin テーブルが選択されるのですが、なぜ user テーブル内のユーザーも選択されてしまうのでしょうか?分かりません、神様に答えを求めてください。

admin.php コード

<?php    error_reporting(0);	@session_start();	require_once 'conn/conn.php';	$user_name=$_POST['name'];	$password=md5($_POST['password']);	$_SESSION['user_name']=$user_name;	if(strlen($user_name)<1){?><html><head>	<title>管理员登陆</title>	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><center><form method="post" action="admin.php"><table border='1'>	<tr>		<th colspan='2' bgcolor='cccccc'>用户登陆</th>	</tr>	<tr>		<td align='right'>Username:</td>		<td><input type='text' name='name' maxlength='16' size='16'></input></td>	</tr>	<tr>		<td align='right'>Password:</td>		<td><input type='password' name='password' size='16' maxlength='10'></input></td>	</tr>	<tr>		<td colspan='2'><font size="2"><input type='submit' value='确认登陆'></input>		<input type='reset' value='重新填写'></input>		<a href='message.php'>注册新用户</a>		</font></td>	</tr></table></form></center><?php	}	else if(strlen($user_name)>1){	$query="select * from admin where user_name=? and password=?";//	echo $query;//	exit;	$st=$db->prepare($query);    $rs = $st->execute(array($user_name,$password));	if($rs == false)	{				echo "<center><script>alert('登陆失败!');window.location.href='admin.php'</script></center>";	}	else	{	//	echo "登陆成功!";	echo "<center><script>alert('管理员登陆成功!');window.location.href='admin_select_neirong.php'</script></center>";	}	}?></body></html>
ログイン後にコピー


テーブル構造

管理テーブル


ユーザーテーブル





ディスカッションへの返信 (解決策)

フィールド管理者を追加し、特別に「ようこそ」とマークするだけです個人の PHP 学習 Web サイト http://www.php Thinking.com にアクセスしてください

admin を一重引用符で囲みますか?または...

ログインに成功してからセッションに保存する必要があります

????
1. $_SESSION['user_name']=$user_name; ログインに成功した後に使用します
2. 一般ユーザー一般ユーザーがログインした後、管理者または管理者がログインしたかどうかを判断します。
管理者のログインを $_SESSION['admin_user_name'] として保存します。管理者がログインできる場合は、$_SESSION['user_name'] の代わりに $_SESSION['admin_user_name'] を判定します。

フロア 正解です!ログインが成功した場合にのみセッションに保存されます。そうでない場合、セッション内の変数を判断するときに、ログインしているかどうかに関係なく変数は存在しません。なぜわざわざログインする必要があるのでしょうか。

????
1. $_SESSION['user_name']=$user_name; ログイン成功後に使用します
2. $_SESSION['user_name'] を一般的なユーザー管理に使用します ログインしますか?一般ユーザーの場合は、管理者がログインしているかどうかで判断されます。
管理者のログインを $_SESSION['admin_user_name'] として保存します。 管理者がログインできる場合、$_SESSION['user_name'] の代わりに $_SESSION['admin_user_name'] を判断します。

マスターミー ログインに成功したら、$_SESSION[' を追加します。 admin_user_name']=$user_name; 管理インターフェイスにジャンプすることはできません。 。前回のセッション開始は削除されました


????
1. $_SESSION['user_name']=$user_name; ログイン成功後に使用します
2. 通常の使用と管理に使用します $_SESSION['user_name '] でログインするかどうかを決定します。一般ユーザーがログインした後、管理ログインであるかどうかを決定します。
管理者のログインを $_SESSION['admin_user_name'] として保存します。 管理者がログインできる場合、$_SESSION['user_name'] の代わりに $_SESSION['admin_user_name'] を判断します。

マスターミー ログインに成功したら、$_SESSION[' を追加します。 admin_user_name']=$user_name; 管理インターフェイスにジャンプすることはできません。 。前回のセッション開始は削除されました

????

1. $_SESSION['user_name']=$user_name; ??一般的な用途には $ を使用します? _SESSION['user_name'] でログインするかどうかを判断します。一般ユーザーがログインした後、管理者がログインしたかどうかを判断します。

管理者のログインを $_SESSION['admin_user_name'] として保存します。 管理者がログインできる場合、$_SESSION['user_name'] の代わりに $_SESSION['admin_user_name'] を判断します。
マスターミー ログインに成功したら、$_SESSION[' を追加します。 admin_user_name']=$user_name; 管理インターフェイスにジャンプすることはできません。 。以前のセッション開始は削除されました
これで、どのユーザー名とパスワードを入力してもログインできますか?どうしたの? ?

????

1. $_SESSION['user_name']=$user_name; ログイン成功後に使用します 2. 通常の使用と管理には $_SESSION[' user_name'] を使用してログインするかどうかを決定します. 一般ユーザーがログインした後、管理者または管理者がログインしたかを判断します。
管理者のログインを $_SESSION['admin_user_name'] として保存します。 管理者がログインできる場合、$_SESSION['user_name'] の代わりに $_SESSION['admin_user_name'] を判断します。

マスターミー ログインに成功したら、$_SESSION[' を追加します。 admin_user_name']=$user_name; 管理インターフェイスにジャンプすることはできません。 。前回のセッション開始は削除されました


????
1. $_SESSION['user_name']=$user_name; ??一般的な用途には $ を使用します? _SESSION['user_name'] は、ログインするかどうかを決定します。通常のユーザーがログインした後、管理ログインがログインしているかどうかを決定します。

管理者のログインを $_SESSION['admin_user_name'] として保存します。 管理者がログインできる場合、$_SESSION['user_name'] の代わりに $_SESSION['admin_user_name'] を判断します。 マスターミー ログインに成功したら、$_SESSION[' を追加します。 admin_user_name']=$user_name; 管理インターフェイスにジャンプすることはできません。 。前回のセッション開始は削除されました
これで、どのようなユーザー名とパスワードを入力してもログインできるようになりましたか?どうしたの? ? 私の言い方は間違っていました。何を入力しても、js ログイン成功ボックスが表示され、ログイン インターフェイスに戻ります。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート