Вход в PHP не работает - пользователь по-прежнему видит форму входа на защищенных страницах после входа в систему - PullRequest
0 голосов
/ 24 мая 2011

------ решено ------ Привет всем, теперь я решил эту проблему, и это была моя неопытность и попытка быть умным, который вызвал эту проблему, как вы можете видеть из комментариев ниже, проблема была в моем файле .htaccess. Я положил RewriteRule ^admin adminlogin.php, так что это изменило любую страницу, содержащую admin, обратно на adminlogin.php

------ ОРИГИНАЛЬНЫЙ ВОПРОС ------ Я пытаюсь получить простой скрипт входа, работающий на веб-сайте. Он закодирован в php и выглядит следующим образом:

adminlogin:

<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, может кто-нибудь помочь, я нашел этот код в Интернете, поэтому попытался понять его настолько полно, насколько смог

------ EDIT ------ Я создал логин для пользователей stackoverflow. Если вы зайдете на www.gemma-hyde-fashion-sketches.co.cc/adminlogin.php и используете стековый поток с именем пользователя и стековый поток с паролем, вы должны увидеть те же результаты, которые я получаю (на самом деле в области администратора ничего нет) в это время все равно)

------ РЕДАКТИРОВАТЬ ДЛЯ JUDDA ------ Да, я имею в виду, что если я войду в систему, в адресной строке отобразится: 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");
}

Просто перенаправляет, потому что он не может поднять, что он вошел в систему.

Это проясняет ситуацию?

Ответы [ 3 ]

1 голос
/ 24 мая 2011

Мне кажется, что PHP не работает с файлом, если вы видите фактический PHP для него (что я понимаю из выражения «и если я просматриваю источник, я вижу источник для adminlogin.php»).Работают ли другие страницы PHP (например, <?php phpinfo();?>)?

0 голосов
/ 24 мая 2011

Я теперь решил эту проблему, и именно моя неопытность и попытка быть умным привели к этой проблеме, как вы также можете видеть из комментариев ниже, проблема была в моем файле .htaccess. Я положил RewriteRule ^admin adminlogin.php, так что это изменило любую страницу, содержащую admin, обратно на adminlogin.php

0 голосов
/ 24 мая 2011

Если вы подозреваете, что сеанс не установлен, проверьте это в adminhome.php

Изменить этот код

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

к этому

Session_start();
 exit(var_dump($_SESSION));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...