2012-02-21 4 views
0

У меня есть форма для входа в систему, когда при отправке; перенаправляет обратно на страницу входа в систему. Я не могу найти никаких синтаксических ошибок, поэтому я думаю, что я действительно должен упустить что-то важное для формы входа. Вот код.Форма входа в систему Переадресация обратно на себя Вкл.

login.php:

<? 
require ('../includes/config.inc.php'); 
if ($_POST['act'] == "Insert") { 
    #// Additional security check 
    $RR = mysql_query("SELECT id from BPLA_adminusers"); 
    if (mysql_num_rows($RR) > 0) { 
     print "Fatal error: user cannot be inserted - one or more administrators are already present in the database.<a href=login.php>login page</a>"; 
     exit ; 
    } 
    $md5_pass = md5($MD5_PREFIX . $_POST['password']); 
    echo $query = "insert into BPLA_adminusers values (10,'$_POST[username]', '$md5_pass', '20011224', '20020110093458', 1)"; 
    $result = @mysql_query($query); 
    #// Redirect 
    Header("Location: login.php"); 
    exit ; 
} 
$query = "select MAX(id) from BPLA_adminusers"; 
$result = @mysql_query($query); 
while ($row = mysql_fetch_row($result)) { 
    $id = $row[0] + 1; 
} 
?> 
<? 
if($id==1) { 
$id=0; 
?> 
<form name="login" data-ajax="false" action="login.php" method="post"> 
    <span><? print $ERR;?></span> 
    <label for="<? print "Username";?>"><? print "Username";?></label> 
    <input type="text" name="username" /> 
    <label for="<? print "Password";?>"><? print "Password";?></label> 
    <input type="password" name="password" /> 
    <input type="submit" name="action" value="<? echo $MSG_5204;?>"> 
</form> 
<? 
} else { 
$id=1; 
#// 
if($_POST[action] == "login") { 
if(strlen($_POST[username]) == 0 || strlen($_POST[password]) == 0) { 
$ERR = $ERR_047; 
} else { 
$query = "select * from BPLA_adminusers where username='$_POST[username]' and password='".md5($MD5_PREFIX.$_POST[password])."'"; 
$res = @mysql_query($query); 
if(!$res) { 
print "Error: $query<BR>".mysql_error(); 
exit; 
} 
if(mysql_num_rows($res) == 0) { 
$ERR = $ERR_048; 
} else { 
$admin = mysql_fetch_array($res); 
#// Set sessions vars 
$BPLowbidAuction_ADMIN_LOGIN = $admin[id]; 
$BPLowbidAuction_ADMIN_USER = $admin[username]; 
$_SESSION["BPLowbidAuction_ADMIN_LOGIN"]=$BPLowbidAuction_ADMIN_LOGIN; 
$_SESSION["BPLowbidAuction_ADMIN_USER"]=$BPLowbidAuction_ADMIN_USER; 
#// Update last login information for this user 
$query = "update BPLA_adminusers set lastlogin='".date("YmdHis")."' where username='$admin[username]'"; 
$rr = mysql_query($query); 
if(!$rr) { 
print "Error: $query<BR>".mysql_error(); 
exit; 
} 
#// Redirect 
print "<SCRIPT Language=Javascript> 
parent.location.href='index.php'; 
</SCRIPT>"; 
//Header("Location: home.php"); 
exit; 
} 
} 
} 
?> 
<? if(!$act || ($act && $ERR)) { 
?> 
<form name="login" data-ajax="false" action="login.php" method="post"> 
    <span><? print $ERR;?></span> 
    <label for="<? print "Username";?>"><? print "Username";?></label> 
    <input type="text" name=username /> 
    <label for="<? print "Password";?>"><? print "Password";?></label> 
    <INPUT TYPE=password name=password /> 
    <input type="submit" NAME="action" VALUE="login"> 
</form> 
<? }?> 
<? } 
    require("./footer.php"); 
?> 

Этот код помещаются в index.php и используется в качестве если/другое заявление, чтобы перенаправить снова index.php, когда он представлен.

index.php:

<? 
require ('../includes/config.inc.php'); 
include ('bar.php'); 
if (!empty($_SESSION['BPLowbidAuction_ADMIN_LOGIN'])) { 
    include ('home.installation.php'); 
} else { 
    include ('login.php'); 
} 
?> 

Проблема заключается в том, что форма Войти первый перенаправляет на «login.php», а затем обратно в «index.php», где показана форма Войти код, как если бы я никогда . «bar.php» - это только заголовок, а меню страницы и «home.installation.php» - это только домашняя страница, которая на самом деле должна отображаться.

+1

вы используете session_start() перед использованием переменных $ _SESSION ?? – Deepak

+1

okay add session_start(); как в index.php, так и в login.php в начале сразу после Deepak

+0

не уверен в чем ?? – Deepak

ответ

3
Header("Location: login.php"); 

Заголовок Location должен указывать на абсолютной и действительный URI. То есть должен начинаться со схемой (http://) или прямой слэш /login.php

HTTP 1.1 RFC on Location

+0

Спасибо за подсказку, но это не решило мою проблему. Теперь я изменил код с «Header» («Location: login.php»); 'to' Header («Местоположение: http://www.luvbid.com/admin/login.php»); ' – Cary

+1

Абсолютный путь может использовать в заголовке() и не должен предшествовать http: // Я думаю, что переменные сеанса не хранят в нем никаких значений. Что включено в config.inc.php? – Deepak

+0

'parent.location.href = 'index.php'' может также потребовать абсолютный URI/путь. (Абсолютный путь начинается с косой черты) – Vitamin

Смежные вопросы