2011-05-23 95 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)); 
相關問題