2011-05-23 98 views
0

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

只是重定向,因为它不能接受它已登录。

这是否清除了一些事情?

+1

为什么你引用你的变量? ''$ host''等应该是'$ host' – ThiefMaster 2011-05-23 20:53:53

+0

@ThiefMaster我不知道,正如前面提到的我是PHP新手,这段代码是从一个在线教程中获得的。 – Stefan 2011-05-23 21:03:12

+0

我刚刚使用计算器帐户检查了上传的网站。你可以试着保持行政管理员更简单(细分)。也许它只包含

登录

。因此,我们只是消除你的包括作为问题的一部分 – boug 2011-05-23 21:04:00

回答

0

我现在已经解决了这个问题,这是我的经验不足和巧言令色导致此问题,因为你还可以看到从下面的评论意见是在我的.htaccess文件。我已经把RewriteRule ^admin adminlogin.php所以这是改变任何页面包含管理员回adminlogin.php

1

对我来说,听起来像PHP没有运行在文件上,如果你能够看到它的实际PHP(我从声明中了解到“如果我查看源代码,我看到adminlogin.php的源代码“)。其他PHP页面是否可用(即<?php phpinfo();?>)?

+0

对不起php运行,我的意思是我看到生成的输出,因此我可以看到页面标题等它是从meta.php文件 – Stefan 2011-05-23 20:53:33

+0

自动生成的,是的,phpinfo会显示我的php配置 – Stefan 2011-05-23 20:53:59

+0

你能否解释一下我从你那里进一步的引用,因为我认为我错过了一些东西。 – judda 2011-05-23 20:56:01

0

如果您怀疑未设置会话,请在管理员处检查该会话。PHP

改变此密码

Session_start(); 
if(!(isset($_SESSION['user']) && $_SESSION['user'] != '')) { 
header("location:adminlogin.php"); 

这个

Session_start(); 
exit(var_dump($_SESSION)); 
相关问题