13

私はログイン/登録システムを作成しており、コードの登録部分の完成に近づいています。私が直面している唯一の問題は、ユーザーが重複したユーザー名で登録できないようにする方法です。データベースが情報を受け入れないように動作させ、ユーザーにエラーを通知します。

私のPHP

<?php

include 'database_connection.php';
if (isset($_POST['formsubmitted'])) {
    $error = array(); //Declare An Array to store any error message
if (empty($_POST['name'])) {//if no name has been supplied
    $error[] = 'Please Enter a name '; //add to array "error"
} else {
    $name = $_POST['name']; //else assign it a variable
}

    if (empty($_POST['e-mail'])) {
        $error[] = 'Please Enter your Email ';
    } else {
        if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_POST['e-mail'])) {
            //regular expression for email validation
            $Email = $_POST['e-mail'];
        } else {
            $error[] = 'Your EMail Address is invalid  ';
        }
    }

    if (empty($_POST['Password'])) {
        $error[] = 'Please Enter Your Password ';
    } else {
        $Password = $_POST['Password'];
    }

    if (empty($error)) {
        //send to Database if there's no error '
    }
}
4

4 に答える 4

1

私は PDO とクラス メソッドを使用しましたが、役に立つかもしれません。

//function for checking if the user already exists in the database
public function userExists($username)
{

    //prepared statements for added security
    $query = $this->db->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username`= ?");
    $query->bindValue(1, $username);

    try {
        //execute the query
        $query->execute();
        $rows = $query->fetchColumn();

        //if a row is returned...user already exists
        if ($rows == 1) {
            return true;
        } else {
            return false;
        }
        //catch the exception
    } catch (PDOException $e) {
        die($e->getMessage());
    }
}

準備されたステートメントにも注意してください-間違いなく前進する方法

于 2013-07-19T01:13:26.710 に答える