sql — пароль соответствует php и проверяет имя пользователя и пароль

Я пытаюсь создать register page и на этом у меня есть несколько задач, которые я хотел бы выполнить.

1)The username to only accept a-z A-Z 0-10 characters
2)The passwords being entered at the stage of registration are checked to
see if they match, if not get the user to try again
3)Set the passwords to only accept A-Z a-z 0-10 ! characters

Я работаю над task 2код, который у меня работает, но, хотя он показывает ошибку, он все еще вводит данные в базу данных. не уверен, куда я иду.

if(isset($_POST['submit'])){

$username = mysql_real_escape_string($_POST['username']);
$password1 = mysql_real_escape_string($_POST['password1']);
$password2 = mysql_real_escape_string($_POST['password2']);
$email = mysql_real_escape_string($_POST['email']);

$selected = mysql_select_db("register", $dbhandle);

$query = "SELECT * FROM users WHERE email='".$email."'
OR username= '".$username."'";

$result = mysql_query($query);

if(mysql_num_rows($result) > 0){
echo "A record already exists.";
exit;
}

else{
$insert = mysql_query("INSERT into users (username, password1, password2, email) VALUES
('".$username."','".$password1."','".$password2."','".$email."')");
}
if($insert){
echo "Success";
}

else{
echo "There was an error " . mysql_error();
}

mysql_close();

if ($_POST['password1']!= $_POST['password2'])
{
echo("Oops! Password did not match! Try again. ");
}
}
?>

0

Решение

Вам необходимо проверить, есть ли какие-либо ошибки при регистрации, а если нет, то вставить данные в базу данных. Проверьте ниже код;

$err = "";

//your extra code and validations

if ($_POST['password1']!= $_POST['password2'])
$err .= "Oops! Password did not match! Try again."; //append to $err

if ($err=="")
{
//insert here
}

//display $err somewhere below

Или вам нужно изменить свой код следующим образом

if(isset($_POST['submit']))
{
$username = mysql_real_escape_string($_POST['username']);
$password1 = mysql_real_escape_string($_POST['password1']);
$password2 = mysql_real_escape_string($_POST['password2']);
$email = mysql_real_escape_string($_POST['email']);

$selected = mysql_select_db("register", $dbhandle);

$query = "SELECT * FROM users WHERE email='".$email."' OR username= '".$username."'";

$result = mysql_query($query);

if(mysql_num_rows($result) > 0)
{
echo "A record already exists.";
exit;
}
else
{
if ($_POST['password1']!= $_POST['password2'])
echo("Oops! Password did not match! Try again. ");
else
{
$insert = mysql_query("INSERT into users (username, password1, password2, email) VALUES ('".$username."','".$password1."','".$password2."','".$email."')");

if($insert)
echo "Success";
else
echo "There was an error " . mysql_error();
}
}

mysql_close();
}

Имя пользователя, чтобы принять только A-Z A-Z 0-10 символов

Используйте следующий код для проверки имени пользователя

if (preg_match('/^[a-zA-Z0-9]+$/', $username))
echo "valid username";
else
echo "invalid username";

Установите пароли, чтобы принимать только A-Z a-z 0-10! персонажи

Используйте следующий код для проверки пароля

if (preg_match('/^[a-zA-Z0-9!]+$/', $password1))
echo "valid password";
else
echo "invalid password";

Полный код

if(isset($_POST['submit']))
{
$username = mysql_real_escape_string($_POST['username']);
$password1 = mysql_real_escape_string($_POST['password1']);
$password2 = mysql_real_escape_string($_POST['password2']);
$email = mysql_real_escape_string($_POST['email']);

$selected = mysql_select_db("register", $dbhandle);

$query = "SELECT * FROM users WHERE email='".$email."' OR username= '".$username."'";

$result = mysql_query($query);

if(mysql_num_rows($result) > 0)
{
echo "A record already exists.";
exit;
}
else
{
if ($_POST['password1']!= $_POST['password2'])
echo("Oops! Password did not match! Try again. ");
else
{

//too many if/else blocks but don't want to change the structure of your code
if (!preg_match('/^[a-zA-Z0-9]+$/', $username))
echo "invalid username";
else
{
if (!preg_match('/^[a-zA-Z0-9!]+$/', $password1))
echo "invalid password";
else
{
$insert = mysql_query("INSERT into users (username, password1, password2, email) VALUES ('".$username."','".$password1."','".$password2."','".$email."')");

if($insert)
echo "Success";
else
echo "There was an error " . mysql_error();
}
}
}
}

mysql_close();
}
0

Другие решения

Эхо не прерывает выполнение. Ваш код, вероятно, выглядит так:

if ($_POST['password1']!= $_POST['password2'])
{
echo("Oops! Password did not match! Try again. ");
}
saveToDb();

Так что читайте как в «если пароли1 и пароли2 не совпадают, выведите сообщение об ошибке. В любом случае saveToDB».

Если вы хотите прервать выполнение, используйте exit скорее тогда echo или убедитесь, что saveToDb выполняется только тогда, когда ваша форма действительна, например как это:

$valid = true;
if ($_POST['password1']!= $_POST['password2'])
{
echo "No Match";
$valid = false;
}
if (...)
{
echo "...";
$valid = false;
}
...
if ($valid)
{
saveToDb();
}
0

Где у вас есть:

echo("Oops! Password did not match! Try again. ");

Вам нужно «$ failflag = 1», тогда, когда у вас есть DBQuery, который вводит данные, просто добавьте предложение if;

if($failflag==1)
//Dont do db stuff
else
//Do do db stuff

РЕДАКТИРОВАТЬ:

Старайтесь держаться подальше от устаревших функций mysql_query, если вы немного растерялись из-за того, где и как использовать ООП, я предлагаю использовать этот класс, это хорошо для начинающих:

https://github.com/joshcam/PHP-MySQLi-Database-Class

0

HI Для 1-го и 3-го задания вы можете использовать регулярные выражения

http://php.net/manual/en/function.preg-match.php
http://www.regular-expressions.info/

для второго задания вам нужен скрипт выхода после

echo("Oops! Password did not match! Try again. ");

или вам нужно написать как ниже

if(//username is not OK){
//echo error
}
else if(//password is not  OK){
//echo error
}
else if ($_POST['password1']!= $_POST['password2'])
{
echo("Oops! Password did not match! Try again. ");
}
else{
//insert in database
}
0
По вопросам рекламы [email protected]