こんにちは、ユーザーがログインできるPHPのログインログアウト機能があります。彼がモデレーターの場合は moderator.php にリダイレクトされ、エージェントの場合は agent.php ページに移動します。
ログインする必要があるindex.phpでは..コードは次のとおりです。
<form name="form1" method="post" action="check_login.php">
<center><div id='login_header'><b><font face='Arial Black' color='black' size='4px'>Sign in to Minquep!</font></b></div></cen
<br/><br/>
<center><label>Username:</label><input type='text' name='myusername' size='20'><br/><label>Password:</label>
<input type='password' name='mypassword' size='20'><br/>
<input type='text' name='myfirstname' style='display:none;'>
</center>
<br/><input type='submit' value='Submit' name='submit' class='submit'>
</form>
check_login.php は次のとおりです。
<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="minquep_test"; // Database name
$tbl_name="users"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or
die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE login='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
$count=mysql_fetch_array($result);
if($count['user_type']== "agent"){
echo '<script type="text/javascript">alert("You have logged in successfully!\n"); return false;</script>';
echo "<meta http-equiv=\"refresh\" content=\"0;URL=pages/agent.php\">";
session_register("myusername");
session_register("mypassword");
//header("location:pages/agent.php");
}
else if ($count['user_type']== "moderator"){
echo '<script type="text/javascript">alert("You have logged in successfully!\n"); return false;</script>';
echo "<meta http-equiv=\"refresh\" content=\"0;URL=pages/moderator.php\">";
session_register("myusername");
session_register("mypassword");
//header("location:pages/moderator.php");
}
else {
echo "<script type='text/javascript'>alert('Invalid Login! Please Try Again!');</script>";
echo "<meta http-equiv=\"refresh\" content=\"0;URL=index.php\">";
}
?>
moderator.php と agent.php の両方で、ログインしているユーザーのユーザー名を次のように出力します。
<?php
session_start();
print("<b><h2>Hi! $_SESSION[myusername] (You are logged in as moderator / agent) </h2>");
?>
logout.php では、セッションを破棄して index.php にリダイレクトするだけです。
<?php
session_start();
session_destroy();
echo "<meta http-equiv=\"refresh\" content=\"0;URL=../index.php\">";
exit;
?>
問題は、モデレーター アカウントまたはエージェント アカウントを使用した初めてのテスト ログイン中に、ログイン後にユーザー名が表示されないことです。「こんにちは! モデレーターとしてログインしています」または「こんにちは! ログインしていますエージェントとして」。しかし、ログアウトして再度ログインすると、ユーザー名はすでに表示されています...本来あるべき姿のように、「こんにちは、モデレーターとしてログインしています」。または「こんにちは!エージェントとしてログインしています」。
では、最初のcheck_login中に私の**$_SESSION("myusername")**
が機能しない理由は何でしょうか。
ありがとう。