------解決了------大家好,我現在已經解決了這個問題,這是我的經驗不足和嘗試聰明的是導致這個問題,你也可以從下面的註釋中看到問題出在我的.htaccess文件中。我已經把RewriteRule ^admin adminlogin.php
所以這是改變任何頁面包含管理員回adminlogin.phpPHP登錄失效 - 用戶仍然可以在登錄後看到受保護頁面上的登錄表格
------原始問題------ 我試圖讓一個簡單的登錄腳本在網站上工作。它被編碼在PHP和它如下:
後臺管理:
<div class="login">
<form name="form1" method="post" action="checklogin.php">
<table width="379px" border="0px" cellpadding="3px" cellspacing="1px">
<tr>
<td colspan="3"><strong>Admin Login</strong></td>
</tr>
<tr>
<td width="78px">Username</td>
<td width="6px">:</td>
<td width="294px"><input name="myusername" type="text"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="mypassword" type="password"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
</div>
checklogin.php:
<?php
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name="Logins"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die(mysql_error());
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect 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 UN='$myusername' and PWD=md5('$mypassword')";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file 「adminloginsuccess.php"
session_start();
$_SESSION['user'] = $myusername;
header('location:adminhome.php');
}
else {
header('location:adminloginretry.php');
}
?>
adminhome.php:
<?php $thisPage="Admin Home";
session_start();
if(!(isset($_SESSION['user']) && $_SESSION['user'] != '')) {
header("location:adminlogin.php");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php include($_SERVER['DOCUMENT_ROOT'].'/includes/meta.php'); ?>
</head>
<body>
<div id="wrapper">
<div id="container">
<div id="header">
<?php include($_SERVER['DOCUMENT_ROOT'].'/includes/header.php'); ?>
<div id="links">
<?php include($_SERVER['DOCUMENT_ROOT'].'/includes/links.php'); ?>
</div><!--close links-->
</div><!--close header-->
<div id="sidebar">
<?php include($_SERVER['DOCUMENT_ROOT'].'/includes/sidebarimage.php'); ?>
</div><!--close sidebar-->
<div id="content">
<?php include($_SERVER['DOCUMENT_ROOT'].'/includes/adminhomecontent.php'); ?>
</div><!--close content-->
<div id="extra" align="center">
<?php include($_SERVER['DOCUMENT_ROOT'].'/includes/fblb.php'); ?>
</div><!--close extra-->
<div id="footer">
<?php include($_SERVER['DOCUMENT_ROOT'].'/includes/footer.php'); ?>
</div><!--close footer-->
</div><!--close container-->
</div><!--close wrapper-->
</body>
</html>
adminhomecontent.php:
You Have Successfully Logged In.<br>
<a href="logout.php">Log Out </a>
現在由於某種原因,當我去登錄時,我被重定向,地址欄顯示www.gemma-hyde-fashion-sketches.co.cc/adminhome.php,但仍顯示登錄表單,如果我查看源代碼我看到adminlogin.php的源代碼。
我是新來的PHP,可能有人幫助,我發現這個代碼在網上這麼嘗試自己儘可能全面,我可以
------編輯------ 我的理解已經爲stackoverflow用戶創建了一個日誌。如果你轉到www.gemma-hyde-fashion-sketches.co.cc/adminlogin.php並使用用戶名stackoverflow和密碼stackoverflow你應該看到我得到相同的結果(實際上沒有什麼在管理區無論如何這個時候)
------編輯爲朱達------ 是的我的意思是,如果我登錄,地址欄顯示:http://www.gemma-hyde-fashion-sketches.co.cc/adminhome.php這是我所期望的重定向至。但是如果我點擊右鍵,查看源代碼我看到
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Gemma Hyde Fashion Sketches | Admin Login</title>
<meta name="title" content="Gemma Hyde Fashion Sketches | Admin Login" />
<meta name="keywords" content="Admin Login, gemma hyde fashion sketches, fashion, fashion design, fashion sketches, fashion design sketches, clothes design sketches" />
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
這是一樣什麼adminlogin.php頁面將顯示,這讓我覺得,這部分在adminhome.php的頂部:
session_start();
if(!(isset($_SESSION['user']) && $_SESSION['user'] != '')) {
header("location:adminlogin.php");
}
只是重定向,因爲它不能接受它已登錄。
這是否清除了一些事情?
爲什麼你引用你的變量? ''$ host''等應該是'$ host' – ThiefMaster 2011-05-23 20:53:53
@ThiefMaster我不知道,正如前面提到的我是PHP新手,這段代碼是從一個在線教程中獲得的。 – Stefan 2011-05-23 21:03:12
我剛剛使用計算器帳戶檢查了上傳的網站。你可以試着保持行政管理員更簡單(細分)。也許它只包含
登錄
。因此,我們只是消除你的包括作爲問題的一部分 – boug 2011-05-23 21:04:00