2013-12-10 4 views
1

Я пытаюсь сделать вещи простыми. Когда я ввожу существующий адрес электронной почты и неправильный пароль, появляется сообщение об ошибке. Когда я ввожу неправильный адрес электронной почты и правильный формат пароля, появляется сообщение об ошибке для сообщения электронной почты, но когда я вводил неверный пароль и исправляю адрес электронной почты, появляется сообщение об ошибке, и это должно быть только для неправильного пароля. Я просто новичок, и я хочу знать, как это работает, но я не могу найти решение здесь. Должен ли я использовать разные имена для массива? Вот мой код:Сообщение об ошибке php mysql

<?php 
session_start(); 
$errmsg_arr = array(); 
$errflag = false; 
//$errmsg_arr2 = array(); 
//$errflag2 = false; 
include('config.php'); 


$firstname=$_POST['firstname']; 
$lastname=$_POST['lastname']; 
$email=$_POST['email']; 
$pword=$_POST['pword']; 
$number=$_POST['number']; 
$house=$_POST['house']; 
$street=$_POST['street']; 
$city=$_POST['city']; 

$min_length = 6; 
    // you can set minimum length of the query if you want 
$result = mysql_query("select 1 from athan_members where email='" 
         . mysql_real_escape_string($email) . "'"); 
$userExists = (mysql_fetch_array($result) !== FALSE); 
mysql_free_result($result); 

if ($userExists = true){ 
$errmsg_arr[] = 'email address is already used'; 
$errflag = true; 
} 
if(strlen($pword)< $min_length){ 
$errmsg_arr[] = 'password must contain not less than 6 characters'; 
$errflag = true; 
} 
else{ 
mysql_query("INSERT INTO athan_members (firstname, lastname, email, number, house1,  street1, city, password) VALUES ('$firstname', '$lastname', '$email', '$number', '$house',  '$street', '$city', '$pword')"); 
header("location: loginuser.php"); 
} 

/*if(strlen($pword) >= $min_length){ 
//this one will not feed in the database if there's a duplicate but still a problem ohmaygawd:3 
//mysql_query("INSERT INTO athan_members (firstname, lastname, email, number, house1,  street1, city, password) VALUES ('$firstname', '$lastname', '$email', '$number', '$house',  '$street', '$city', '$pword') ON DUPLICATE KEY UPDATE") 
mysql_query("INSERT INTO athan_members (firstname, lastname, email, number, house1,  street1, city, password) VALUES ('$firstname', '$lastname', '$email', '$number', '$house',  '$street', '$city', '$pword')"); 
header("location: loginuser.php"); 
} 
else 
{ 
$errmsg_arr[] = 'password must contain not less than 6 characters'; 
$errflag = true; 
}*/ 


if ($errflag) { 
     $_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
     session_write_close(); 
     header("location: new.php"); 
     exit(); 
} 
mysql_close($con); 
?> 
+0

Вам нужно «exit()» после вызова заголовка, и перед выполнением SQL-запроса вам необходимо дезинформировать переменные. –

ответ

3

У вас есть:

if ($userExists = true)... 

Это присвоит значение $ userExists не сравнить и это положение всегда будет истинным (идти в этом разделе).

Вы должны сравнить, что вместо того, чтобы, как это:

if ($userExists == true) { 

    // exists 
} else { 

    // not 
} 

И изменить эту проверку пароля код:

if(strlen($pword)< $min_length){ 
$errmsg_arr[] = 'password must contain not less than 6 characters'; 
$errflag = true; 
} 
else{ 
mysql_query("INSERT INTO athan_members (firstname, lastname, email, number, house1,  street1, city, password) VALUES ('$firstname', '$lastname', '$email', '$number', '$house',  '$street', '$city', '$pword')"); 
header("location: loginuser.php"); 
} 

к этому:

if(strlen($pword)< $min_length){ 
$errmsg_arr[] = 'password must contain not less than 6 characters'; 
$errflag = true; 
} 

if (!$errflag) { 

// No errors. 

mysql_query("INSERT INTO athan_members (firstname, lastname, email, number, house1,  street1, city, password) VALUES ('$firstname', '$lastname', '$email', '$number', '$house',  '$street', '$city', '$pword')"); 
header("location: loginuser.php"); 
} 

Вы проверили только если пароль слишком короткая. Нет, если электронная почта уже существует. Это проверяет оба.

+1

или даже 'if ($ userExists === true)' – meda

+0

@meda yes, если тип переменной является логическим (такой же тип переменной) – Hardy

+1

Эта работа sir @Hardy. действительно сохраняю мою жизнь :) – user3088818

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