0

ユーザー名がデータベースに存在するかどうかをチェックし、存在する場合は別の関数を呼び出して新しいユーザー名を生成する簡単な関数を作成しようとしています。私のコードは転倒しているようです:

ユーザー名機能:-

$user1=create_username($fname, $company);

function create_username($surname, $company){

//$name_method=str_replace(" ", "", $surname);
$name_method=$surname.$forename;
$company_name_method=str_replace(" ", "", $company);


if(strlen($name_method)<=5)
{
    $addition=rand(11,99);
    $first=$addition.$name_method;
}
else
{
    $first=substr($name_method,0,5);
}
if(strlen($company_name_method)<=5)
{
    $addition2=rand(11,99);
    $second=$addition2.$company_name_method;
}
else
{
    $second=substr($company_name_method,0,5);
}
$middle=rand(100,1000);

$username=$first.$middle.$second;
return($username);
}

ユーザー名機能を確認してください:

check_user($user1, $dbc, $fname, $company);

function check_user($user1, $dbc, $surname, $company){
$check_username="SELECT username FROM is_user_db WHERE username='$user1'";
$resultx=mysqli_query($dbc, $check_username) or die("Could not check username");
$num_rows=mysqli_num_rows($resultx);
if($num_rows>0)
{
    $user1=create_username($fname, $company);
    check_user($user1, $dbc, $fname, $company);

}
else
{
    return($user1);
}
}

元のユーザー名を返すようです。

4

1 に答える 1

1

おそらく、コードを少しリファクタリングする必要があります。手順を紙に書きます。それは私を助けます。これまでのところ、私は見ることができます:

  1. フォーム送信時にユーザー名が一意であることを確認したい
  2. そうでない場合は、新しいユーザー名を生成します

したがって、フォームがPOSTされたときにユーザー名を確認してください。

<?php
    if (isset($_POST['submit'])) {
        if (username_unique($_POST['username'])) {
            // carry on processing form
        }
        else {
            $suggested_username = suggest_username($_POST['username']);
            // display form, with new suggested username?
        }
    }

そして、関数を記述します。

<?php
    // following on from code from above

    function check_username($username) {
        // get database connection (I use PDO)
        $sql = "SELECT COUNT(*) AS count FROM users_tbl WHERE username = ?";
        $stmt = $pdo->prepare($sql);
        $stmt->execute(array($username));
        $row = $stmt->fetchObject();
        return ($row->count > 0); // if 'count' is more than 0, username already exists
    }

    function suggest_username($username) {
        // take username, and add some random letters and numbers on the end
        return $username . uniqid();
    }

うまくいけば、これが役立つでしょう。明らかに、セットアップで機能するにはいくつかの変更が必要ですが、これが必要な一般的なフローです。

于 2012-07-23T11:03:17.507 に答える