首页 > 编程技术 > php

使用PHP批量生成随机用户名

发布时间:2016-11-25 16:15

生成6 ~ 16位的用户名若干个,主要是文本操作,同事前提是要有一个字符串包。主要包含三个程序。
程序一:负责从字典中随机提取数据,写入一个新文件。(1.php)
<?php
/* 从字典文件中提取随机值 */
$file1 = "./Words.dic";
$file2 = "./common_pass_mini.dic";
$file3 = "./Sys_Month_Date.Dic";
$rfile = "./5.dic";
$n = 2000;
//提取字典
$basef = file($file1);
$extf = file($file2);
$extf2 = file($file3);
$bf_sum = (count($basef)-1);
$ef_sum = (count($extf)-1);
$ef2_sum =(count($extf2)-1);
//获取随机用户名
for ($i=0; $i<$n; $i++)
{
 $bn = crand(0, $bf_sum);
 $en = crand(0, $ef_sum);
 $en2 = crand(0, $ef2_sum);
 $name = $basef[$bn]."_".$extf[$en];
 $name = str_replace(" ", "", $name);
 $all_name[] = $name;
}
//写入文件
$result = implode(" ", $all_name);
$fp = fopen($rfile, "a+") or die('Open $rfile failed');
if (fwrite($fp, $result)) {
 echo 'Write user succeed!';
} else {
 echo 'Write user failed';
}
//生成随机数字函数
function crand($start, $end)
{
 return mt_rand($start, $end);
}
?>
程序二:负责把上面生成的数个文件的结果合并。(2.php)
<?php
/* 合并所有生成结果 111cn.net*/
$result_file = "./result.dic";
$fp = fopen($result_file, "a+") or die("Open $result_file failed");
//合并 1.dic ~ 5.dic
for ($i=1; $i<=5; $i++)
{
 $cur_file = file_get_contents($i.".dic");
 fwrite($fp, $cur_file);
}
//合并 10.dic ~ 11.dic
for ($i=10; $i<=11; $i++)
{
 $cur_file = file_get_contents($i.".dic");
 fwrite($fp, $cur_file);
}
fclose($fp);
echo 'Write Succeed';
?>
程序三:负责过滤重复值和不属于 6~16 之间的值并且生成最终结果(3.php)
<?php
/* 生成最终结果 */
$file = "./result.dic";
$target = "./target.dic";
需要gd库支持.
Image 图像函数
参见http://php.liukang.com/manual/zh/ref.image.php
<?php
// BY PHP 国度 www.phphot.be
//关闭报错
error_reporting(0);
//图片宽度
$x_size=60;
//图片高度
$y_size=20;
//生成4个随机字符
$nmsg=num_rand(4);
//支持安全通连接吗?
$S=$_SERVER['SERVER_PORT']=='443' ? 1:0;
//使用cookie记录随机码
//expire=0 cookie将会在会话结束后(一般是浏览器关闭)失效。
 
setCookie('ck_num',md5($nmsg),0,'/','',$S);
//创建宽:60*20的图片(画布)
$aimg = imagecreate($x_size,$y_size);
//设置图片背景色
$back = imagecolorallocate($aimg, 255, 255, 255);
//设置字体颜色
$border = imagecolorallocate($aimg, 0, 0, 0);
//从0,0点填充59*19的白色矩形区域
imagefilledrectangle($aimg, 0, 0, $x_size - 1, $y_size - 1, $back);
//从0,0点绘制59*19的黑色矩形边框
imagerectangle($aimg, 0, 0, $x_size - 1, $y_size - 1, $border);
for ($i=0;$i<strlen($nmsg);$i++){
     //在图片上写字
     imageString($aimg,5,$i*$x_size/4+3,2, $nmsg[$i],$border);
}
header("Content-type: image/png");
imagepng($aimg);
imagedestroy($aimg);exit;
function num_rand($lenth){
     // 播下一个随机数发生器种子
     //php自4.2.0起,,此参数变为可选项,当该项为空时,会被设为随时数
     mt_srand((double)microtime() * 1000000);
     //产生有4个随机数字的字符串
     for($i=0;$i<$lenth;$i++){
        $randval.= mt_rand(0,9);
     }
     //对含有4个数字的字符串使用md5加密,长度是32位的
     //从3长度为32的字符中,自最小数起或最大数32-$lenth起,取长度为$lenth的字符串
     $randval=substr(md5($randval),mt_rand(0,32-$lenth),$lenth);
     return $randval;
}
?> 


PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助。
1.print_r()
打印关于变量的易于理解的信息,若为数组,则显示数组的结构信息.
例如:
<pre>
<?php
    $a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
    print_r ($a);
?>
</pre>
axgle点评:查看任何数组的结构信息,是程序调试的必备工具。对于任何返回结果是数组的“函数”,只要print_r一下,一切底细一目了然!
2.var_export()
输出或返回一个变量的字符串表示
此函数返回关于传递给该函数的变量的结构信息,它和print_r() 类似,不同的是其返回的表示是合法的 PHP 代码。
 
您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。
例如:
<pre>
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export ($a);
echo "<hr>";
$v = var_export($a, TRUE);
echo $v;
?>
</pre>
axgle点评:上面例子中,$v = var_export($a, TRUE)返回的是php代码噢~~那么您就可以把它保存为php文件。
保存为php文件做什么?呵呵,这可以用作“缓存”,当需要的时候,可以直接include它。
3.file()
file() 将文件作为一个数组返回。数组中的每个元素都是文件中相应的一行,包括换行符在内。如果失败 file() 返回 FALSE。
 
<pre>
<?php
// 将一个文件读入数组。
$lines = file('test.txt');
//查看这个数组的结构
print_r($lines);
?>
</pre>
axgle点评:file()函数是我接触php的初期让我非常惊讶的的一个函数。相比以前我在c语言和vb里对
文件读写的无比麻烦的经历,使得当时的我感觉再也没有比file()函数更方便的文件读写方式了。
4.phpinfo()
打印与php有关的信息,例如PHP版本,功能支持,全局变量等.
例如:
<?php
phpinfo();
?>
axgle点评:简单的一个函数,让你时刻了解php的飞速发展---若您密切关注php的发展的话~~~~
5.file_get_contents() (注:PHP 4 >= 4.3.0, PHP 5)
将整个文件读入一个字符串.file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。
如果只是普通的文件下载,完全没有必要用到php,用个就可以,但是有的时候为让文件保密,只能给一部分人下载,显然不能够把链节告诉别人,如果是这样哪就起不到保密的效果。下面这个函数就是一个用php写的文件下载的函数,它是把文件一段一段地读出来,再传送给客户端.
function download($file_dir,$file_name)
//参数说明:
//file_dir:文件所在目录
//file_name:文件名
{
    $file_dir = chop($file_dir);//去掉路径中多余的空格
    //得出要下载的文件的路径
    if($file_dir != '')
    {
            $file_path = $file_dir;
            if(substr($file_dir,strlen($file_dir)-1,strlen($file_dir)) != '/')
                  $file_path .= '/';
            $file_path .= $file_name;
    }                  
    else
            $file_path = $file_name;   
   
    //判断要下载的文件是否存在
    if(!file_exists($file_path))
    {
            echo '对不起,你要下载的文件不存在。';
            return false;
    }
    $file_size = filesize($file_path);
    header("Content-type: application/octet-stream");
    header("Accept-Ranges: bytes");
    header("Accept-Length: $file_size");
    header("Content-Disposition: attachment; filename=".$file_name);
   
    $fp = fopen($file_path,"r");
    $buffer_size = 1024;
    $cur_pos = 0;
请问,当我浏览某个网页时,我想在服务器的某个路径下生成对应的静态网页,以方便调用,该怎么处理比较好?
我的程序以前写的,没有这个功能.因此我想有没有比较好的在不大量改动到原程序的情况下实现该功能.

回复人:arcow(冲星) ( 五级(中级)) 信誉:100 2006-2-28 18:02:45
比如你的动态显示页面为
display.php?id=1
的话
你可以在diplay里判断一下是否在对应目录存在对应id的文件名(这里假设文件为id号 html即1.html,2.html,...)
你判断 $id."html"这个文件是否存在于服务器,如果存在就直接跳转到这个页面,要是不存在的话就创建(建义用一个函数来创建,这样对页面改动不大,比如createHTML($_GET['id']),至于这个函数怎么写,我想你应该知道)然后再跳转
-------------------------------------------------
回复人:ice_berg16(寻梦的稻草人) ( 三星(高级)) 信誉:125 2006-2-28 21:33:13
假设你显示文章的页面为
showNews.php?id=34
那么可以这么做
ob_start();
//你的正常程序代码
$html=ob_get_contents();
ob_end_clean();
$fp=fopen($_GET['id'].".htm", "w");
fwrite($fp, $html);
fclose($fp);
标签:[!--infotagslink--]

您可能感兴趣的文章: