2015-04-02 2 views
0

У меня возникла проблема, поэтому, когда пользователь пытается войти в систему и не работает (неверно введено имя пользователя &), данные необходимо сохранить в базе данных, но это просто не сработает. Если я положил INSERT INTO в if ($pw == $row['passwd'], он будет работать, но я хочу написать его на другом, как в примере.Ошибка входа в систему для входа в базу данных

<?php 
session_start(); 
require('connect.php'); 

$mail = $_POST['mail']; 
$pw = $_POST['password']; 

if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
    $lastip = $_SERVER['HTTP_CLIENT_IP']; 
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
    $lastip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
} else { 
    $lastip = $_SERVER['REMOTE_ADDR']; 
} 

$time = date('Y-m-d H:i:s'); 

$query = "SELECT * FROM `users` WHERE `login_email`='$mail' AND `passwd`='$pw'"; 
$result = mysql_query($query); 
if(!$result){$_SESSION['error'] = 1;Header("Location: login.php");} 
while ($row = mysql_fetch_assoc($result)) { 
    if ($pw == $row['passwd']) 
    { 
    $_SESSION['logiran'] = 1; 
    $_SESSION['mail'] = $mail; 
    $_SESSION['error'] = 0; 
    $_SESSION['sucess'] = 1; 
    $_SESSION['msg'] = 0; 
    $_SESSION['subuser'] = 0; 
    $_SESSION['subcid'] = $row['id']; 
    $query = "UPDATE `users` SET `login` = '$time' WHERE `login_email`='$mail' AND `passwd`='$pw'"; 
    mysql_query($query); 
    $query = "UPDATE `users` SET `last_ip` = '$lastip' WHERE `login_email`='$mail' AND `passwd`='$pw'"; 
    mysql_query($query); 
    Header("Location: index.php"); 
    } 
    else 
    { 
    $query = "INSERT INTO `alerts`(`ipaddress`, `user`, `added`) VALUES ('$lastip', '$mail', '$time')"; 
    mysql_query($query); 
    $_SESSION['error'] = 1; 
    $_SESSION['logiran'] = 0; 
    $_SESSION['subcid'] = 0; 
    $_SESSION['subuser'] = 0; 
    Header("Location: login.php"); 
    } 
} 

?> 
+0

'if ($ result) {$ _ SESSION ['error'] = 1; Header (" Location: login.php ");}' Я не думаю, что это имеет смысл –

ответ

0

@sense Да, это неправильно. он должен быть

if(!$result){some code} 

Но мы хотим, чтобы это:

Если mysql_query INSERT INTO на еще он не работает

if ($pw == $row['passwd']){ some code } 
else { here } 

, но mysql_query INSERT INTO на if ($pw == $row['passwd']){ here } затем его работы.

+0

Пожалуйста, не предлагайте изменения для оригинальный вопрос, который добавляет слово «разрешено» к названию. Особенно не делайте этого, когда это не ваш вопрос. Чрезвычайно самонадеянно предположить, что ваш ответ решает чужой вопрос. Если пользователь, отправивший вопрос, считает ответ на решение проблемы, он «примет» ответ, и рядом с этим ответом появится зеленый галочка. –

+0

мой вопрос, мой помощник опубликовал его, и мы его решаем. – Gogo

+1

Никто не мог бы знать, что с учетом разных имен пользователей. Независимо, если ваш помощник соглашается, что ваш ответ решает проблему, тогда они могут принять этот ответ, нажав на галочку в левой части ответа (при входе в систему как «Тунец»). Вот как вопросы отмечены как решаемые в Stack Overflow, а не путем редактирования заголовка вопроса. –

0
if(!$result){$_SESSION['error'] = 1;Header("Location: login.php");} 

удалите эту строку, если введёте неправильное имя пользователя или пароль, затем он сохранит его в базе данных.

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