شنبه یه خبراییه 🔥 منتظر شنبه باش 😉🥳
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ شعبان زاده
مشکل فراخوانی تابع generateRandomString
جامعه پی اچ پی ایجاد شده در ۲۷ دی ۱۴۰۱

سلام . وقت بخیر

من تابع generateRandomString را در فایل دیگر include کردم . یکبار تابع را فراخوانی کرده و رشته تصادفی را درست می‌کند اما با refresh کردن صفحه رشته تصادفی جدید تولید نمی‌کند و رشته قبلی که درست شده ثابت است .

اما وقتی به فایلی helper مراجعه می‌کنم و تابع را فراخوانی می‌کنم درست کار می‌کند و هر بار یک رشته تصادفی جدید تولید می‌کند .

کد‌ها رو ارسال می‌کنم اگر زحمت بکشید راهنمایی بفرمایید . با تشکر

 
function generateRandomString($length)  {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_-<>\\/";
    $charsLength = strlen($chars);
    $randomString = '';
    for($i = 0; $i<$length; $i++){
        $randomString .= $chars[rand(0 , $charsLength - 1)];
        
    }
    return $randomString;
}
echo generateRandomString(10);

include 'helper.php';
// The rand() function generates a random integer
echo rand(10 , 100)  . "
"
; echo rand(10000000 , 100000000). "
"
; echo rand(). "
"
; // The mt_rand() function generates a random integer using the Mersenne Twister algorithm echo mt_rand(100,100000000). "
"
; echo mt_rand(). "
"
; // Seed the random number generator seed the random with mktime() function echo srand(mktime(22 , 37, 43, 07, 15,2022)). "
"
; // random_int — Get a cryptographically secure, uniformly selected integer $a =  random_int(1000,10000); echo $a . ""; echo gettype($a). "
"
; echo $rand1 = random_bytes(3) . "
"
; echo gettype($rand1). "
"
; // The bin2hex() function converts a string of ASCII characters to hexadecimal values echo bin2hex($rand1). "
"
; $rand2 = bin2hex(random_bytes(5)); echo $rand2 . "
"
; // openssl_random_pseudo_bytes — Generate a pseudo-random string of bytes /* This function is not recommended. Because it needs to install a dependency on the host.  In common projects, the random byte function is sufficient */ $rand3 = openssl_random_pseudo_bytes(40); echo $rand3 . "
"
; echo bin2hex($rand3) . "
"
; //call the function from generate-key-helper.php to generate random string echo generateRandomString(5);

یک کد مربوط به فایل helper و دیگری فایل دیگری است که فایل helper را در آن include کرده ام .

ممنون

سلام،

به srand مقدار ثابت داده اید.

محسن موحد ۲۸ دی ۱۴۰۱، ۱۱:۴۲

سلام محسن جان . روز شما بخیر .

یعنی اگر در یک فایل php تابع srand را فراخوانی کنیم و به آن مقدار بدهیم ، بر روی توابع دیگر random در همون فایل تاثیر می‌گذاره؟

اگر تابع srand را بدون مقدار دهی فراخوانی کنیم چطور ؟

اگر ممکنه توضیح مختصری درباره تابع srand بفرمایید . خیلی ممنون

شعبان زاده ۲۸ دی ۱۴۰۱، ۱۲:۲۲

بعنوان تنظیم seed برای تابع rand استفاده میشه.

وقتی عددی نذارید یک سری رندوم بعنوان نقطه شروع تنظیم میشود و بالطبع منجر به تولید عددی رندوم میشه.

اگر seed یکسان باشه همان توالی اعداد قبلی تولید میشه.

میتونی چندین rand() رو اکو کنی و قبل هر کدوم یک seed بذاری تا ببینی در نهایت چه خروجی میگیری. (همچنین میتونی rand() رو در حلقه تولید کنی)

بهترین پاسخ
محسن موحد ۲۸ دی ۱۴۰۱، ۱۶:۱۸

ممنون محسن جان . لطف کردی .

شعبان زاده ۲۸ دی ۱۴۰۱، ۱۷:۲۸