ログイン スクリプトに次の PHP コードを使用しています。
<?php
if(isset($_POST["submit"]))
{
session_start();
//get the username, password and keyword sent from the form
$username=$_POST['username'];
$password=$_POST['password'];
//check in the database to see if the username, password and keyword match in the database
$sql="SELECT * FROM admin WHERE username=('$username') and password=MD5('$password')";
$rs=mysql_query($sql,$conn) or die(mysql_error());
$result=mysql_fetch_array($rs);
$check="SELECT * from admin where username='$username' ";
$check2=mysql_query($check,$conn) or die(mysql_error());
$check3=mysql_fetch_array($check2);
if($check3["logintries"] > '3')
{
echo '<p align="center"><h4>Your account has been suspended due to too many failed logins. Please contact support</h4></p>';
}
else
{
//get the number of rows that match in the database
$count=mysql_num_rows($rs);
//if the number of rows equals 1, then create the session variables
if($count==1)
{
//$sql="INSERT into user_logins (user_seq, timestamp, ip_address, posted_username, posted_password, posted_keyword) values ('".$result["sequence"]."', '".date("Y-m-d H:i:s")."', '".$_SERVER["REMOTE_ADDR"]."', '".$username."', '".$password."', '".$keyword."') ";
//$rs=mysql_query($sql,$conn) or die(mysql_error());
session_start();
$_SESSION["sequence"]=$result["sequence"];
$_SESSION["loggedin"]='yes';
echo $_SESSION["loggedin"];
$_SESSION["ipaddress"]=$_SERVER["REMOTE_ADDR"];
//then redirect to the main page
//header("location: index.php");
echo '<h3>Login Has Been Successful - Please wait while we redirect you...</h3>';
//echo '<meta http-equiv="refresh" content="0;URL=index.php" />';
}
else
{
$sql="SELECT * FROM admin WHERE username='".$_POST["username"]."' ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
$result=mysql_fetch_array($rs);
$logintries=$result["logintries"];
$sql2="UPDATE admin set logintries = '".($logintries+1)."' where username = '".$result["username"]."' ";
$rs2=mysql_query($sql2,$conn) or die(mysql_error());
//other wise display an error message
//echo '<p align="center"><h4>Username or Password incorrect</h4></p>';
}
}
}
?>
ご覧のとおり、セッション変数「loggedin」をエコーしましたが、ページでは「はい」とエコーされますが、member.php ページに移動すると、変数が保持されません。
member.php ページに、この PHP コードを持つ authorisation.php を含めました。
<?php
if($_SESSION["loggedin"] != 'yes')
{
header("Location: /admin/login.php");
}
?>
そのため、値が「yes」のセッション変数「loggedin」がない場合は、単に login.php ページにリダイレクトされます。
上記で説明したように、何らかの理由で変数を保存していません。
これは、別の Web サイトで使用しているコードとまったく同じで、正常に動作します。変更したのは、データベースのログインの詳細だけです。
選択されているすべての列をデータベースにチェックインしましたが、それらはすべて正しい列です (正しく綴られています)
それが何であるかについてのアイデアはありますか?