Wednesday, November 21, 2012

PHP хэл дээр санамсаргүй тэмдэгтүүд үүсгэх


Вэб сайт хийж байх явцад санамсаргүй тэмдэгтүүд үүсгэх хэрэг нэлээд гаргадаг. Жишээ нь: хэрэглэгч нууц үгээ мартсан гээд шинэ нууц үг хүсэхэд нь санамсаргүй сонгож авсан тэмдэгтүүдээр нууц үг үүсгээд эмэйл рүү нь шидэх. Миний ашиглаж байгаа энгийн функц /илүү олон үйлдэлтэй байгаа/:

function randomString( $length ) {
$chars ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
     $size = strlen( $chars );
     $str=NULL;
for( $i = 0; $i < $length; $i++ ) {
         $str .= $chars[ rand( 0, $size - 1 ) ];
}
return $str;
}


Ашиглах: randomString(5) гэж функцээ дуудах юм бол санамсаргүйгээр сонгож авсан 5 урттай тэмдэгт мөр буцаана.

Арай илүү функц:


function randomString($length, $type = '') {

        // Select which type of characters you want in your random string

        switch($type) {
            case 'num':
                // Use only numbers
                $salt = '1234567890';
                break;
            case 'lower':
                // Use only lowercase letters
                $salt = 'abcdefghijklmnopqrstuvwxyz';
                break;
            case 'upper':
                // Use only uppercase letters
                $salt = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
                break;
            default:
                // Use uppercase, lowercase, numbers, and symbols
                $salt ='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
                break;
        }
        $rand = '';
        $i = 0;
        while ($i < $length) { // Loop until you have met the length
            $num = rand() % strlen($salt);
            $tmp = substr($salt, $num, 1);
            $rand = $rand . $tmp;
            $i++;
        }
        return $rand; // Return the random string
    }

Good luck!

3 comments:

  1. Илүү нь ямар юм?

    ReplyDelete
    Replies
    1. Бичлэгийнхээ сүүлд нь залгаад оруулчихлаа.

      Delete
  2. php дээр injection-ээс хамгаалах зөндөө л олон арга функц байна. Яг алийг нь ашиглавал зүгээр вэ

    ReplyDelete