2012-07-23 2 views
0

사용자 이름이 db에 있는지 확인하고 새로운 사용자 이름을 생성하는 다른 함수를 호출하는 간단한 함수를 작성하려고합니다. 내 코드는하지만 넘어 보인다 :사용자 이름이 존재하는지 확인하고 PHP 사용자 인 경우 새 사용자 이름을 생성하십시오.

이름 기능 : -

$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); 
} 
} 

그냥 원래 이름을 반환하는 것 같다.

+0

함수에 하나의 이름 만 전달하는 것처럼 보입니다. – DaveP

+0

첫 번째 코드 줄은 이름을 전달하는 것으로 보이고 함수는 성을 기대하지만 ... forename을 참조합니다. 한 줄씩 살펴보고 코드에서 수행 할 작업을 결정해야합니다. 들여 쓰기로 코드를 포맷하면 도움이 될 것입니다. – Pete

답변

1

코드를 약간 재조정해야 할 수 있습니다. 종이에 단계를 작성하십시오. 그게 날 도와 줬어. 지금까지 내가 볼 수

  1. 을 당신은 사용자 이름을 확인하고 싶은 것은
  2. 가 그렇지 않은 경우,

그래서 새 사용자 이름을 생성 양식 인 경우 사용자 이름을 확인 양식 제출에 고유 게시 됨 :

<?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(); 
    } 
,

잘하면이 도움이됩니다. 분명히 설정에서 작동하려면 약간의 수정이 필요할 것입니다.하지만 이것이 일반적인 흐름입니다.

+0

위대한 - 이것은 정확히 내가 쓴 것이 아니지만 본질과 과정이 거기에 있습니다. 귀하의 의견을 주셔서 감사합니다 :) – Sideshow

관련 문제