php - 如何防止重复的用户名和电子邮件数据?

标签 php mysql

<分区>

我一直在制作登录/注册系统,我即将完成代码的注册部分。我遇到的唯一问题是如何使用户无法使用重复的用户名和电子邮件注册。我希望它能正常工作,这样我的数据库就不会接受信息,并且会告知用户错误。

<!-- daftar -->
    <section id="daftar" style="background: #333;">
        <div class="container">
            <div class="row text-center">
                <div class="col-lg-10 col-lg-offset-1">
                    <h2 style="font-family:Font Juice; font-size:50px; color:#ccc; padding: 20px;">Daftar Baru</h2>
                    <hr class="small">
                    <div class="row">
                            <div class="col-lg-8 col-lg-offset-2" >
                                <form name="contactForm" method="post" id="contactForm" action="<?php $_SERVER['PHP_SELF'];?>">
                                <div class="row control-group">
                                    <div class="form-group col-xs-12 floating-label-form-group controls">
                                        <input type="text" class="form-control" placeholder="Nama Anda" name="t1" id="t1" required data-validation-required-message="Input nama anda.">
                                        <p class="help-block text-danger"></p>
                                    </div>
                                </div>
                                <div class="row control-group">
                                    <div class="form-group col-xs-12 floating-label-form-group controls">
                                        <input type="email" class="form-control" placeholder="Email" name="t2" id="t2" required data-validation-required-message="Input alamat email.">
                                        <p class="help-block text-danger"></p>
                                    </div>
                                </div>
                                <div class="row control-group">
                                    <div class="form-group col-xs-12 floating-label-form-group controls">
                                        <input type="text" class="form-control" placeholder="Username" name="t3" id="t3" required data-validation-required-message="Input username untuk login">
                                        <p class="help-block text-danger"></p>
                                    </div>
                                </div>
                                <div class="row control-group">
                                    <div class="form-group col-xs-12 floating-label-form-group controls">
                                        <input type="password" class="form-control" placeholder="Password" name="t4" id="t4" required data-validation-required-message="Input password untuk login">
                                        <p class="help-block text-danger"></p>
                                    </div>
                                </div>
                                
                                <div class="row control-group">
                                    <div class="form-group col-xs-12 floating-label-form-group controls">
                                        <input type="password" class="form-control" placeholder="Konfirmasi Password" name="t5" id="t5" required data-validation-required-message="Konfirmasi Password">
                                        <p class="help-block text-danger"></p>
                                    </div>
                                </div>

                                <script type="text/javascript">
                                 window.onload = function () {
                                  document.getElementById("t4").onchange = validatePassword;
                                  document.getElementById("t5").onchange = validatePassword;
                                 }
                                 function validatePassword(){
                                  var t4=document.getElementById("t4").value;
                                  var t5=document.getElementById("t5").value;
                                  if(t4!=t5)
                                   document.getElementById("t5").setCustomValidity("Passwords tidak Sama, Coba Lagi");
                                  else
                                  document.getElementById("t5").setCustomValidity('');
                                 }
                                </script>
                                
                                <div class="row">
                                    <div class="form-group col-xs-12 floating-label-form-group controls">
                                        <label class="checkbox-inline">
                                        <h5 style="color:#fff;  font-family: BebasNeueRegular; font-size: 24px">Dengan menekan tombol " Daftar "<br> Saya Setuju dengan <a href="#">Kebijakan dan Ketentuan</a> yang berlaku.</h5>
                                        </label>
                                </div>
                                
                                <div class="row">
                                    <div class="form-group col-xs-12">
                                        <button type="submit" class="btn btn-primary btn-lg" style="font-family:'BebasNeueRegular'; font-size:20px;  text-shadow: 0 2px 2px rgba(0, 0, 0, 0.3);" name="btnSimpan" id="btnSimpan"> <span class="glyphicon glyphicon-list"></span> &nbsp;&nbsp;Daftar&nbsp;&nbsp;</button>
                                        <br><br><br>
                                    </div>
                                </div>
                                <div id="success"></div>
                            </form>
                            
                            <?php
                                if(isset($_POST['btnSimpan'])){
                                    $q = $op->save("tb_user","nama_user,email_user,username,password","'".$_POST['t1']."','".$_POST['t2']."','".$_POST['t3']."','".md5($_POST['t4'])."'");
                                    if($q){
                                        echo "<div class='alert alert-success'>
                                            <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
                                            <strong>Success!</strong> Data berhasil disimpan. Silahkan klik tombol Mulai Bermain.</div>";
                                    }else{
                                        echo "<div class='alert alert-danger' >
                                            <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
                                            <strong>Error !</strong> Data gagal disimpan</div>"; 
                                    }
                                }
                            ?>
                        </div>
                    </div>

最佳答案

tb_user 表的 email_userusername 列上创建一个 UNIQUE CONSTRAINT;如果您尝试插入重复项,这将引发错误。

ALTER TABLE tb_user ADD CONSTRAINT constr1 UNIQUE (email_user);

关于php - 如何防止重复的用户名和电子邮件数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39335858/

相关文章:

php - 从 5.2.x 更新的 PHP 5.3.6 上的 PDO 错误

PHP 错误 - 在非对象上调用成员函数 execute()

mysql - 我怎样才能简化这个mysql语句?

mysql - 运行 python manage.py loaddata datadump.json 时出现数据库错误

php - PDO 使事务内的操作失败,但 commit 返回 true。为什么?

php - 从 MySQL 数据库中的 css 标签中删除智能引号

php - 只读表单域

javascript - 使用 PHP、MySQL 和 AJAX 更改单选按钮值时动态更新下拉菜单的内容

mysql - SQL 语句 GROUP BY

mysql - "set timestamp"怎么会是一个慢查询呢?