简体   繁体   English

检查用户名和电子邮件已经存在于php mysql中

[英]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. 检查用户名和电子邮件已经存在于php mysql中,我已检查每个输入是否为空,如果没有空,则检查用户名和密码是否已在数据库中,如果不在数据库中,则回显ALRIGHT ,代码工作正常但问题是,当新的入口是由不正常的打印。

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'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 : 要打印好的,请将您的else放在if之外,然后将elseif更改为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";
        }

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";
        }
        }
    }
    ?>

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. 这可以帮助您进行验证,我只给您提供用户名重复它,并使其在电子邮件中运行此ajax脚本在同一页面上运行,而无需制作外部文件,我的意思是说您正在对login.php进行验证下面的此Ajax保留在login.php的同一页面上的所有脚本中,将PHP代码更改为您的规范。 Broken down, what the oninput=username is saying is when the user starts typing run the function checkusername() and display result in 简而言之,oninput = username的意思是当用户开始键入内容时运行功能checkusername()并在其中显示结果

      <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();
}
}
?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM