e-posta adresinize gelen kullanıcı adı oluşturmak için nasıl - PHP

4 Cevap php

Ben bir kullanıcı bir e-posta adresi ve sadece parolayı sağlamanız gerekir web sitemdeki bir kayıt sayfası var.

Ben sağlanan e-posta ilk kısmını kullanarak otomatik olarak bu kullanıcı için bir kullanıcı adı oluşturmak mümkün olmak istiyorum;

Kullanıcı gereçler gordon @ yourdomain.com, ben adı 'Gordon'u' yapmak istiyorum

Yinelenen sona numara eklemek oluşursa ben, veritabanına form veya veri gönderme nasıl oluşturulacağı ile ilgili açıklama, sağlanan e-posta veri ayıklamak için sadece kodu gerekir, ve gerekirse yok.

Bu, mantıklı bir temel fonksiyonu gibi görünüyor ama her yerden net bunun örneklerini bulamadık Umut!

4 Cevap

Bu sadece onların tam e-posta adresini kullanabilirsiniz, iyi bir fikir değil. Aşağıdaki e-posta adresleri farklı insanlar olabilir, ama onlar sistemi altında aynı olacak.

samename@gmail.com
samename@yahoo.com

Sonuna bir sayı ekleyerek kullanıcı sisteme özgü bir şey hatırlamak ve onların ucunda çok karışıklığa neden yapacaktır.

Anlaştık, olmayan bir benzersiz bir kimlik içine mutlaka benzersiz kimliği sıyırma ediyoruz. Eğer kullanıcı adı falan bir numara eklemek için işleme çeşit eklemek istemiyorsanız. Bu gerçekten yapmak istediğiniz ne varsa, bu e-posta adresinden önce şeyler için $ username ayarlamanız gerekir:

<?php
   $username = preg_replace('/([^@]*).*/', '$1', $email);
?>

Gibi bir şey:

$username = left($email, stripos($email, '@'));

yapmalıdır. Sen görevin bu tür için regular expressions öğrenmek isteyebilirsiniz.

Sonra sayaç eklemek:

function countOccurrences($name)
{
    $con = mysql_connect(___, ___, ___);
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db(___, $con);

    $result = mysql_query("
        SELECT COUNT(*) AS countOccurrences
        FROM users
        WHERE username LIKE '" . mysql_real_escape_string($name, $con) . "%'
    ");

    $row = mysql_fetch_array($result);

    $number = $row['countOccurrences'];

    mysql_close($con);

    return $number;

}

ve daha sonra:

$countUsers = countOccurrences($username);
if ($countUsers>0)    
{    
      $username = $username . $countUsers;
}

IMPORTANT: adı olarak tüm e-posta kullanmayı düşünün: Eğer gordon@flash.net gordon@clash.com eşit kabul etmek istemiyorum

NOTE: kod örneği, gordon, gordon1, gordon2 ama gordonbah, gordonq, gordonxxx çok sayar

NOTE: Bu oldukça kaba ve iyi PHP uygulama olarak kabul edilmemelidir; sadece genel bir fikir vermek için var

Sizin ihtiyaçlarınıza uygun olmalı: D

$username = substr($username, 0, strpos($username, '@'));

$username = mysql_real_escape_string($username);

$result = mysql_query('SELECT `username` FROM `users` WHERE `username` = \'' . $username . '%\';');

if (mysql_num_rows($result) > 0) {

   $i = 0;

   while ($name_arr = mysql_fetch_assoc($result)) {

      $name = $name_arr['username'];       

      $after = substr($name, strlen($username));

      if (ctype_digit($after)) {

         if (($after = (int) $after) > $i) {

            $i = $after;

         }

      }

   }

   if ($i > 0) {
      $username .= $i;
   }

}