2013-10-05 3 views
0

Я работаю над назначением php для функции входа в систему с использованием .txt-файла вместо db, но я столкнулся с какой-то проблемой здесь. якобы «недопустимый адрес электронной почты или пароль», который будет показан после того, как Беспоставочной существуют данные ключа в, но при загрузке страницы, ГЗС показали по умолчанию, ниже мой коднеправильное сообщение об ошибке php показано неправильно

<?php 
$lines= file("customers.txt"); 
$matchFound=false; 

$errmsg = 'Invalid email or password'; 

for($i=0;$i<count($lines);$i++) 
{ 
    if ($i!=0) 
    { 
     $line=trim($lines[$i]); 
     $cells=explode("\t",$line); 
     $_SESSION['email'] = isset($_POST['email'])? $_POST['email'] : null; 
     $_SESSION['password'] = isset($_POST['password']) ? $_POST['password'] : null; 

     if ($_SESSION['email']==$cells[2] && $_SESSION['password']==$cells[3]) 
     { 
      $matchFound=true; 
      break; 
     } 
    } 
} 

if ($matchFound == true) 
{ 
    header('Location: login2.php'); 
} 
else 
{ 
    echo $errmsg; 
} 
?> 
+1

Попробуйте добавить 'exit' после своего' header() ' – andrewsi

+0

Hm по умолчанию будет отображаться в соответствии с этим кодом – bksi

+0

Вам также понадобится' session_start' в верхней части кода, если вы хотите получить доступ '$ _SESSION'. – andrewsi

ответ

0

Try:

if ($matchFound == true) 
{ 
    header('Location: login2.php'); 
} 
else if(isset($_POST['email'])) 
{ 
    echo $errmsg; 
} 

Также вам нужно session_start использовать массив $ _SESSION

+0

в порядке, спасибо =), во всяком случае, я получил еще один php-скрипт поверх этого, я ставлю на него начало отсчета уже =) –

1

Это связано с тем, что вы не проверяете, правильно ли пользователь ввел ввод формы. Значение $matchFound по умолчанию равно FALSE, и сообщение об ошибке всегда будет отображаться при запуске скрипта.

Укажите атрибут name для вашей формы кнопку отправки, а затем добавить if блок, чтобы убедиться, форма была правильно подать:

if (isset($_POST['submitButton'])) { 
    # code... 
} 

Таким образом, не будет работать код внутри блока if если вход пользователя не был принят, и вы можете избежать отображения ошибки при каждом загрузке страницы.

Кроме того, вам не хватает инструкции session_start() в верхней части вашего скрипта. Это необходимо, если вы хотите, чтобы сеансы работали правильно.

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