------解决了------大家好,我现在已经解决了这个问题,这是我的经验不足和尝试聪明的是导致这个问题,你也可以从下面的注释中看到问题出在我的.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