php前端部落,php随机变量

本教程解释了通过PHP获取随机项的多种方法:数字、字符串、密码、nonces、图片等。

俺将各种项目中,使用这些技术,俺将俺遇到的一些PHP

9876214f73fbd4750c740839f21401b5.png

随机数字

这种技术经常用于向CSS和JavaScript文件追加随机数非常有用

function shapeSpace_randomizer() {

return rand(1000000,9999999);

}

用法:

$random_number = shapeSpace_randomizer();

这只是其中一种方法。返回的数字将介于两个指定的数字之间。您可以根据需要调整范围。

获取随机字符串

如果你需要一个随机的字母数字字符串,试试下面的这个函数:

function shapeSpace_random_string($length) {

$characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

$strlength = strlen($characters);

$random = '';

for ($i = 0; $i < $length; $i++) {

$random .= $characters[rand(0, $strlength - 1)];

}

return $random;

}

用法:

$random_string = shapeSpace_random_string(10);

这会得到一个10个字符的随机字符串。将10改为所需的值。下面是该函数的另一种版本:

function shapeSpace_random_string($length) {

$characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

$random = substr(str_shuffle($characters), 0, $length);

return $random;

}

用法与前一个函数相同。

另一种随机的字符串

此技术与前一种技术类似,但是试图通过使用srand()函数填充随机数生成器,使字母数字字符串更加随机。

function shapeSpace_random_string($length) {

$characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

srand((double)microtime()*1000000);

$random = '';

for ($i = 0; $i < $length; $i++) {

$random .= $characters[rand() % strlen($characters)];

}

return $random;

}

用法:

$random_string = shapeSpace_random_string(10);

这会得到一个10个字符的随机字符串。将10改为所需的值。

随机的人类可读的字符串

在这里,我们生成了一个仅包含字母的随机字符串,这样访问者就可以读懂这个字符串了。

function shapeSpace_random_string_readable($length) {

$c = array('b','c','d','f','g','h','j','k','l','m','n','p','r','s','t','v','w','x','y','z');

$v = array('a','e','i','o','u'); srand((double)microtime()*1000000);

$max = $length / 2; $random = '';

for ($i = 1; $i <= $max; $i++) {

$random .= $c[rand(0,19)];

$random .= $v[rand(0,4)];

}

return $random;

}

用法:

$random_string = shapeSpace_random_string_readable(10);

这将得到一个随机的、人类可读的10个字符的字符串。将10改为所需的值。

从数组中获取随机项

有很多方法可以做到这一点。目标是从数组中返回随机选择的项。我使用这种技术来显示4个随机广告(来自包含8个广告的数组)。

function shapeSpace_get_random_items($length) {

$items = array( 'item 1', 'item 2', 'item 3', 'item 4', 'item 5', 'item 6', 'item 7', 'item 8', );

$n = array(1, 2, 3, 4, 5, 6, 7, 8);

srand((double)microtime()*1000000);

$rand = array_rand($n, $length);

sort($rand);

$random = '';

foreach ($rand as $r)

$random = $items[$r] .' ';

return $random;

}

用法:

$random_string = shapeSpace_get_random_items(4);

这会得到一个字符串,其中包含四个用空格分隔的随机项目。您可以根据需要调整数量,只要使其小于数组中的项目总数即可。您可以根据需要定制输出字符串。

随机密码字符串

下面是一个使用PHP的随机功能生成密码的示例:

function generatePassword($length=9, $strength=0) {

$vowels = 'aeuy';

$consonants = 'bdghjmnpqrstvz';

if ($strength & 1) {

$consonants .= 'BDGHJLMNPQRSTVWXZ';

}

if ($strength & 2) {

$vowels .= "AEUY";

}

if ($strength & 4) {

$consonants .= '23456789';

}

if ($strength & 8) {

$consonants .= '@#$%';

}

$password = '';

$alt = time() % 2;

for ($i = 0; $i < $length; $i++) {

if ($alt == 1) {

$password .= $consonants[(rand() % strlen($consonants))];

$alt = 0;

} else {

$password .= $vowels[(rand() % strlen($vowels))];

$alt = 1;

}

}

return $password;

}

有许多方法可以生成随机密码,但是这种技术很好,因为您可以控制密码的强度和长度。下面是一个用法示例:

$password = generatePassword(18, 8);

已知随机字符串

这是一种很奇怪的方式,我不建议在一个实时的网站上使用。我在我的公共聊天插件上试验了阻止垃圾邮件的简单方法,并决定尝试一个ajax支持的nonce字段。下面是我用来生成nonce(隐藏输入)的代码:

$nonces = array( 'Y4-B84pY:IN:;th1H$r+O8cF', 'IA/,HwsA^y@V0Rre(jF](^P+', 'kW5oJsj,M4$.}?Zf/GqqZcaz', '=1ekfx)K#_5goJ6HrifbK=Ss', '8#8r)z3=ELR;7Oqwcp3V3Nv!', 'Ei9)OuJaqYRssa]b}wut3;=m', '}TM42oi:-HppFF:XYk0OY{DM', 'z%v3[oRX[:w1pp,3ODHD)m7O', '@.,oe/A3KKJAvdtSc{]kogMA', 'tR7djZB~)hlqs6U*jTcXT+IS', );

$random = array_rand($nonces, 1);

$nonce = isset($nonces[$random]) ? base64_encode($nonces[$random]) : 0;

echo '';

然后,在处理Ajax请求时,我可以通过根据已知的$nonces集合检查提交的nonce值来验证用户。

注意,这种技术并不是真正推荐的;我把它放在这里是因为它适合这个主题,也因为它可以帮助那些从事类似项目的人产生一些想法。

原创文章,作者:我心飞翔,如若转载,请注明出处:https://www.pipipi.net/3772.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值