dongqing220586 2014-07-18 12:50
浏览 26
已采纳

用户存在检查器无法正常工作

I am doing a register page for a website and i want to check if the user exists then alert the user. I tried different things and still not working. Here's my latest code:

<?php //script pour vérifier et enregistrer les données


if (isset($_POST['submit']))
{
    //on récupère les données entrées
    $name = ucfirst($_POST['userName']); //mettre le premier caractère en majuscule
    $firstName = ucfirst($_POST['firstName']);
    $birthDate = $_POST['year'].'-'.$_POST['month'].'-'.$_POST['day'];
    $languageM = $_POST['langueM']; //langue maternelle
    $languageE = $_POST['langueE']; //langue étudiée
    $email =  $_POST['mailInput'].'@'.$_POST['schools'];
    $password1 = $_POST['password1'];
    $password2 = $_POST['password2'];


    if(isset($name,$firstName,$birthDate,$languageM,$languageE,$email,$password1,$password2))
    {

        if ($password1===$password2)
        {
            //hashage du mot de passe
            $password1_sha1 = sha1($password1);
            $password2_sha1 = sha1($password2);
            // taille du nom ou du prénom
            if (strlen($name)>25||strlen($firstName)>25)
            {
             print"<span style=\"color:red;\">Nom  ou pr&eacute;nom trop long !</span>";
              exit();//plus la peine de continuer
            }

            else
            {
            //check password length 
                if (strlen ($password1)>25 || strlen ($password1)<6)
                {
                    print "<span style=\"color:red;\">Le mot de passe doit etre entre 6 et 25 caract&egrave;res</span>";
                    exit();
                }
                else
                {

                 //connection à la bdd
                    try
                    {
                        $bdd = new PDO('mysql:host=localhost;dbname=bladuo', 'root', '');
                        $bdd->exec('SET NAMES utf8');//affichage caractères utf-8 dans la bdd

                        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                        //enregistrement de l'étudiant dans la bdd
                        $stmt =  $bdd->prepare('INSERT INTO membres(nom,prenom,date_de_naissance,langue_maternelle,langue_etudiee,email,passe)
                                            VALUES(?, ?, ?, ?, ?, ?, ?)');
                        $success = $stmt->execute(array($name , $firstName , $birthDate, $languageM , $languageE , $email,$password1_sha1)); 

                        if($success)
                        {
                            header('Location: Index.php');
                        }else

                        {
                            $stmt= $bdd->prepare("SELECT COUNT(*) AS count FROM `membres` WHERE nom=?");
                            $stmt->execute(array($name));
                            while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
                            {
                                $username_count = $row["count"];
                            }
                            //if username is taken    
                            if ($username_count > 0) 
                            {
                                print "<span style=\"color:red;\">Cet utilisateur existe déjà!</span>";
                            }
                            $stmt = $conn->prepare("SELECT COUNT(*) AS count FROM `user` WHERE email=?");
                            $stmt->execute(array($email));
                            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
                            {
                                $email_count = $row["count"];
                            }
                            if ($email_count > 0)
                            {
                                print "<span style=\"color:red;\"That email address is already in use<span>";
                            }
                        }
                    }
                    catch(Exception $e)
                    {
                        die('Erreur : '.$e->getMessage());
                    } 
                }

            }

        }else 
        {
            print "<span style=\"color:red;\">Les mots de passe ne sont pas identiques</span>";
            exit();
        }

        }else
        {
            print "<span style=\"color:red;\">une des variables nest pas set</span>";
        }          

}

?>

when i try to register an already existing user, it is saved in the database. What am i doing wrong?

  • 写回答

1条回答 默认 最新

  • douxiyi2418 2014-07-20 13:13
    关注

    I update the post for those who could have the same problem

    <?php //script pour vérifier et enregistrer les données
    
    
    if (isset($_POST['submit']))
    {
        //on récupère les données entrées
        $name = ucfirst($_POST['userName']); //mettre le premier caractère en majuscule
        $firstName = ucfirst($_POST['firstName']);
        $birthDate = $_POST['year'].'-'.$_POST['month'].'-'.$_POST['day'];
        $languageM = $_POST['langueM']; //langue maternelle
        $languageE = $_POST['langueE']; //langue étudiée
        $email =  $_POST['mailInput'].'@'.$_POST['schools'];
        $password1 = $_POST['password1'];
        $password2 = $_POST['password2'];
    
    
        if(isset($name,$firstName,$birthDate,$languageM,$languageE,$email,$password1,$password2))
        {
    
            if ($password1===$password2)
            {
                //hashage du mot de passe
                $password1_sha1 = sha1($password1);
                $password2_sha1 = sha1($password2);
                // if user exists
                 $bdd = new PDO('mysql:host=localhost;dbname=bladuo', 'root', '');
                 $bdd->exec('SET NAMES utf8');//affichage caractères utf-8 dans la bdd
                 $stmt= $bdd->prepare("SELECT COUNT(*) AS count FROM `membres` WHERE email=?");
                 $stmt->execute(array($email));
                 while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
                 {
                    $email_count = $row["count"];
                 }
                 if ($email_count > 0) 
                 {
                    print "<span style=\"color:red;\">Addresse email déjà utilisée, veuillez en choisir une autre!</span>";
                 }
    
                else
                {
                //check password length 
                    if (strlen ($password1)>25 || strlen ($password1)<6)
                    {
                        print "<span style=\"color:red;\">Le mot de passe doit etre entre 6 et 25 caract&egrave;res</span>";
                        exit();
                    }
    
                    else
                    {   
                     //connection à la bdd
                        try
                        {
                            $bdd = new PDO('mysql:host=localhost;dbname=bladuo', 'root', '');
                            $bdd->exec('SET NAMES utf8');//affichage caractères utf-8 dans la bdd
    
                            $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
                            //enregistrement de l'étudiant dans la bdd
                            $stmt =  $bdd->prepare('INSERT INTO membres(nom,prenom,date_de_naissance,langue_maternelle,langue_etudiee,email,passe)
                                                VALUES(?, ?, ?, ?, ?, ?, ?)');
                            $success = $stmt->execute(array($name , $firstName , $birthDate, $languageM , $languageE , $email,$password1_sha1)); 
    
                            if($success)
                            {
                                header('Location: Index.php');
                            }else
    
                            {    
                               echo "INSERT a echouer!!";
                               exit();
                            }
                        }
                        catch(Exception $e)
                        {
                            die('Erreur : '.$e->getMessage());
                        } 
                    }
    
                }
    
            }else 
            {
                print "<span style=\"color:red;\">Les mots de passe ne sont pas identiques</span>";
                exit();
            }
    
            }else
            {
                print "<span style=\"color:red;\">une des variables nest pas set</span>";
            }          
    
    }
    

    ?>

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划