当前位置: 动力学知识库 > 问答 > 编程问答 >

check username and email already exists in php mysql

问题描述:

check username and email already exists in php mysql,I have check every input is empty or not and if there is no empty then check username and password is already in database or not, if it is not in database then echo ALRIGHT, code works fine but the problem is, it doesn't print alright when new entry is made.

Here is the code:

<?php

error_reporting(E_ALL & ~E_NOTICE);

require_once('dbcon.php');

if(isset($_POST["create"]))

{

if (isset($_POST['username']) && !empty($_POST['username'])) {

$username=mysqli_real_escape_string($conn,trim($_POST['username']));

}else{

$empty_username="Username Cannot be empty.";

echo $empty_username.'<br>';

}

if (isset($_POST['email']) && !empty($_POST['email'])) {

$email=mysqli_real_escape_string($conn,trim($_POST['email']));

}else{

$empty_email="Email cannot be empty.";

echo $empty_email.'<br>';

}

if (isset($_POST['category']) && !empty($_POST['category'])) {

$category=mysqli_real_escape_string($conn,trim($_POST['category']));

}else{

$empty_category="Category cannot be empty.";

echo $empty_category.'<br>';

}

if (isset($_POST['password']) && !empty($_POST['password'])) {

$psw=mysqli_real_escape_string($conn,trim($_POST['password']));

}else{

$empty_password="Password cannot be empty";

echo $empty_password.'<br>';

}

if (isset($_POST['re_password']) && !empty($_POST['re_password'])) {

$repsw=mysqli_real_escape_string($conn,trim($_POST['re_password']));

}else{

$empty_repassword="Retype password cannot be empty";

echo $empty_repassword.'<br>';

}

$password=password_hash('$psw',PASSWORD_BCRYPT);

$date=mysqli_real_escape_string($conn, trim('now()'));

if($psw!=$repsw)

{

echo"password not Matched";

}

$sql="select * from account_info where (username='$username' or email='$email');";

$res=mysqli_query($conn,$sql);

if (mysqli_num_rows($res) > 0) {

// output data of each row

$row = mysqli_fetch_assoc($res);

if ($username==$row['username'])

{

echo "Username already exists";

}

elseif($email==$row['email'])

{

echo "Email already exists";

}

else{

echo "alright";

}

}

}

?>

网友答案:

You only need to add else condition at right place

Try this:-

<?php
    error_reporting(E_ALL & ~E_NOTICE);
    require_once('dbcon.php');
    if(isset($_POST["create"]))
    {
        $error = 0;
        if (isset($_POST['username']) && !empty($_POST['username'])) {
            $username=mysqli_real_escape_string($conn,trim($_POST['username']));
        }else{
            $error = 1;
            $empty_username="Username Cannot be empty.";
            echo $empty_username.'<br>';
        }
        if (isset($_POST['email']) && !empty($_POST['email'])) {
            $email=mysqli_real_escape_string($conn,trim($_POST['email']));
        }else{
            $error =1;
            $empty_email="Email cannot be empty.";
            echo $empty_email.'<br>';
        }

        if (isset($_POST['category']) && !empty($_POST['category'])) {
            $category=mysqli_real_escape_string($conn,trim($_POST['category']));
        }else{
            $error = 1;
            $empty_category="Category cannot be empty.";
            echo $empty_category.'<br>';
        }

        if (isset($_POST['password']) && !empty($_POST['password'])) {
            $psw=mysqli_real_escape_string($conn,trim($_POST['password']));
        }else{
            $error = 1;
            $empty_password="Password cannot be empty";
            echo $empty_password.'<br>';
        }

        if (isset($_POST['re_password']) && !empty($_POST['re_password'])) {
            $repsw=mysqli_real_escape_string($conn,trim($_POST['re_password']));
        }else{
            $error = 1;
            $empty_repassword="Retype password cannot be empty";
            echo $empty_repassword.'<br>';
        }

        $password=password_hash('$psw',PASSWORD_BCRYPT);
        $date=mysqli_real_escape_string($conn, trim('now()'));
        if($psw!=$repsw)
        {
            echo "password not Matched";
        }

        if(!$error) {
            $sql="select * from account_info where (username='$username' or email='$email');";
            $res=mysqli_query($conn,$sql);
            if (mysqli_num_rows($res) > 0) {
            // output data of each row
            $row = mysqli_fetch_assoc($res);
            if ($username==$row['username'])
            {
                echo "Username already exists";
            }
            elseif($email==$row['email'])
            {
                echo "Email already exists";
            }
        }else { //here you need to add else condition
            echo "alright";
        }
        }
    }
    ?>
网友答案:

you've put this in wrong if condition

$sql="select * from account_info where (username='$username' or email='$email');";
        $res=mysqli_query($conn,$sql);
        if (mysqli_num_rows($res) > 0) {
        // output data of each row
        $row = mysqli_fetch_assoc($res);
        if ($username==$row['username'])
        {
            echo "Username already exists";
        }
        elseif($email==$row['email']) // change it to just else
        {
            echo "Email already exists";
        }
        else{
            echo "alright"; // don't put it here
        }
    }

To print the alright put your else outside the if and change elseif to just else like this :

$sql="select * from account_info where (username='$username' or email='$email');";

      $res=mysqli_query($conn,$sql);

      if (mysqli_num_rows($res) > 0) {
        // output data of each row
        $row = mysqli_fetch_assoc($res);
        if ($username==$row['username'])
        {
            echo "Username already exists";
        }
        else($email==$row['email'])
        {
            echo "Email already exists";
        }

       } else{ // if condition ends here if it is new entry, echo will work
            echo "alright";
        }
网友答案:

this can help you out for validating i only give you for username duplicate it it and make for email this ajax script is running on the same page no need to make an external file, what i mean is lets say u are validating on login.php this Ajax below stays on login.php all the scripts on the same page,change the PHP code to your specification. Broken down, what the oninput=username is saying is when the user starts typing run the function checkusername() and display result in

      <input type ="text" oninput="checkusername()" id="uname" placeholder="Your username for check" class="oshe">

       <span id="usernamestatus"></span>

//ajax script on the same page do not make a new file function checkusername
<script> function checkusername(){ 
var status = document.getElementById("usernamestatus");
 var u = document.getElementById("uname").value;
 if(u != ""){ status.innerHTML = '<b style="color:red;">checking...</b>'; var hr = new XMLHttpRequest(); 
hr.open("POST", "a.php", true); 
 hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); hr.onreadystatechange = function() { 
if(hr.readyState == 4 && hr.status == 200) {
 status.innerHTML = hr.responseText; 
} }
var v = "name2check="+u; hr.send(v); } } 
</script>



//the php script to search database
<?php
if(isset($_POST["name2check"]) && $_POST["name2check"] != ""){
include_once 'connect.php';
$username = ($_POST['name2check']); 
$sql_uname_check = mysqli_query($con, "SELECT matric FROM users WHERE matric='$username' LIMIT 1"); 
$uname_check = mysqli_num_rows($sql_uname_check);
if (strlen($username) < 2) {
echo '<b style="color:white;">2 - 35 characters please</b>';
exit();
}
if (!filter_var($username, FILTER_VALIDATE_EMAIL) === false) {
echo '<b style="color:white;">Email not allowed</b>';
exit();
}
if (is_numeric($username[0])) {
echo '<b style="color:white;">First character must be a letter</b>';
exit();
}
if ($uname_check < 1) {
echo '<strong style="color:white; text-transform:lowercase!important;">' . $username . ' is available </strong> ';
exit();
} else {
echo '<strong style="color:white; text-transform:lowercase!important;">' . $username . ' is taken </strong>';
exit();
}
}
?>
分享给朋友:
您可能感兴趣的文章:
随机阅读: