【问题标题】:create function to validate existing user / new user创建功能以验证现有用户/新用户
【发布时间】:2013-08-07 04:03:32
【问题描述】:

如何检查用户是否已存在于数据库中。我可以创建用户,但不太确定如何检查用户是否已存在于数据库中。这是我的代码: 查看文件

<?php echo $this->navigasi->top(); ?>

<div class="container">
    <br>
    <h4 style="margin:0 auto;width:650px;">CREATE USER ACCOUNT</h4>
    <br>
    <form class="form-horizontal the-form" method="post" action="<?php echo base_url(); ?>admin/register_account">
    <?php echo $this->session->flashdata('mesej'); ?>  
        <div class="control-group">
            <label class="control-label">Name Staff:</label>
            <div class="controls">
                <input type="text" required name="nama_staf" class="input-xlarge">
            </div>
        </div>

        <div class="control-group">
            <label class="control-label">Password:</label>
            <div class="controls">
                <input type="password" required  name="kata_laluan" class="input-xlarge">
            </div>
        </div>

         <div class="control-group">
            <label class="control-label"> Email:</label>
            <div class="controls">
                <input type="email" name="email" class="input-xlarge">
            </div>
        </div>

        <div class="control-group">
            <label class="control-label">Position:</label>
            <div class="controls">
                <select name="jawatan" class="span3" id="jawatan">
                <option value="1">Clerk</option>
                <option value="2">Technician</option>
                <option value="3">Assitant officer</option>
                <option value="4">Officer</option>                  
                <option value="5">Director</option>                 
              </select>
            </div>
        </div>

        <div class="control-group">
            <label class="control-label">No. Staff:</label>
            <div class="controls">
                <input type="text" required name="no_staf" class="input-xlarge">
            </div>
        </div>

        <div class="control-group">
            <label class="control-label"></label>
            <div class="controls">
                <button type="submit" class="btn btn-primary"><i class="icon-user icon-white"></i> Register</button>&nbsp;&nbsp;

控制器文件

class Admin extends MY_Controller {

public function index()
{
    $session_data = $this->session->userdata('account');
    $data['sesi_jenis'] = $session_data['jenis'];

    if($data['sesi_jenis'] < 1)
    {
        redirect('utama');
    } else {
        $this->load->view('view-utama-pentadbir');
    }
}

public function register()
{
    $this->load->view('view-create-account');
}

public function register_account()
{
    $query = $this->modeluser->createAccount();

    $this->session->set_flashdata('mesej', '<span class="label label-info">Account created!</span> ');
    redirect(base_url().'admin/register');

模型文件

class ModelUser extends CI_Model {

public function creatAccount()
{
    $nameStaf   =   $_POST['nama_staf'];
    $noStaf     =   $_POST['no_staf'];
    $email      =   $_POST['email'];
    $password   =   sha1($_POST['password']);
    $jenis      =   0;  // user is 0 - admin is 1
    $position   =   $_POST['position'];

    $this->db->query("INSERT INTO akaun (nama_staf,no_staf,email,password,jenis,position) VALUES ('$namaStaf','$noStaf','$email','$password','$jenis','$position')");

}

public function padamAkaun($no_staf)
{
    $this->db->query("DELETE FROM akaun WHERE no_staf = '$no_staf'");
}

【问题讨论】:

  • 您可以在插入之前使用给定的用户名和电子邮件执行查询
  • 尝试检查电子邮件 ID。如果电子邮件 ID 存在,则说用户 alderady 存在。
  • 这意味着我应该在插入模型之前创建带有表单验证的代码??

标签: php codeigniter


【解决方案1】:
In your controller function set validation rule as:
$this->form_validation->set_rules('email', 'Email', trim|required|valid_email|is_unique[tabelname.columnname]|xss_clean');

【讨论】:

  • 我还在模糊中...许多尝试都不起作用...请帮助我正确的代码...只是这是我运行系统的问题..非常感谢您
【解决方案2】:
$this->form_validation->set_rules('email', 'Email','trim|required|valid_email|is_unique[tabelname.columnname]|xss_clean');
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
if($this->form_validation->run() == TRUE)
{
// action after validation success.
}else{
//action after validation failure.
}

【讨论】:

    【解决方案3】:

    根据每个用户更改模型。考虑到每个用户的电子邮件都是唯一的

    class ModelUser extends CI_Model {
    
        public function creatAccount()
        {
            $nameStaf   =   $_POST['nama_staf'];
            $noStaf     =   $_POST['no_staf'];
            $email      =   $_POST['email'];
            $password   =   sha1($_POST['password']);
            $jenis      =   0;  // user is 0 - admin is 1
            $position   =   $_POST['position'];
            if ($this->checkEmailExist($email) == false)
                return 'ERROR! DUPLICATE USER';// or handle as you like
            $this->db->query("INSERT INTO akaun (nama_staf,no_staf,email,password,jenis,position)
            VALUES ('$namaStaf','$noStaf','$email','$password','$jenis','$position')");
    
        }
    
    
        public function padamAkaun($no_staf)
        {
            $this->db->query("DELETE FROM akaun WHERE no_staf = '$no_staf'");
        }
    
    
       private function checkEmailExist($email)
      {
         $this->db->where('email', $email);
         $query = $this->db->get('akaun');
         if( $query->num_rows() == 0 ){ return TRUE; } else { return FALSE; }
      }
    

    【讨论】:

    • thic 代码在 $user_count 行收到错误...致命错误:调用未定义函数结果...我更喜欢使用用户名而不是电子邮件 ID
    • 我现在没有代码点火器。请使用 result_array 函数。天气有帮助。或者只是搜索
    • 嗨 susheel...谢谢你的纠正,但你能让它为我工作吗??
    • 现在试试,代码改进了。检查这个网址也stackoverflow.com/questions/4296930/…
    • 运行系统时没有报错,但是当我尝试注册相同的邮箱地址时,系统会自动这样调整邮箱;如果现有的电子邮件是 a@gmail.com 并且我尝试注册相同的电子邮件,它会丢弃一封像这样 a@gmail.co 的信并创建新帐户。
    猜你喜欢
    • 1970-01-01
    • 2018-07-22
    • 2012-03-15
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2019-12-02
    相关资源
    最近更新 更多