php随机密码生成的自定义函数
可以指定生成的字符串长度
function rand_str($length, $max=FALSE)
{
if (is_int($max) && $max > $length)
{
$length = mt_rand($length, $max);
}
$output = '';
for ($i=0; $i<$length; $i++)
{
$which = mt_rand(0,2);
if ($which === 0)
{
$output .= mt_rand(0,9);
}
elseif ($which === 1)
{
$output .= chr(mt_rand(65,90));
}
else
{
$output .= chr(mt_rand(97,122));
}
}
return $output;
}
调用实例:
$randstr = rand_str(16);
生成随机字符串的函数
<?php
/**
* 产生随机字符串
*
* 产生一个指定长度的随机字符串,并返回给用户
*
* @access public
* @param int $len 产生字符串的位数
* @return string
*/
function randStr($len=6) {
$chars='ABDEFGHJKLMNPQRSTVWXYabdefghijkmnpqrstvwxy23456789#%*'; // characters to build the password from
mt_srand((double)microtime()*1000000*getmypid()); // seed the random number generater (must be done)
$password='';
while(strlen($password)<$len)
$password.=substr($chars,(mt_rand()%strlen($chars)),1);
return $password;
}
?>
创建字符池。
function randomkeys($length)
{
$pattern = '1234567890abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLOMNOPQRSTUVWXYZ,./&l
t;>?;#:@~[]{}-_=+)(*&^%$?!'; //字符池
for($i=0; $i<$length; $i++)
{
$key .= $pattern{mt_rand(0,35)}; //生成php随机数
}
return $key;
}
echo randomkeys(8);
无需创建字符池
function randomkeys($length)
{
$output='';
for ($a = 0; $a < $length; $a++) {
$output .= chr(mt_rand(35, 126)); //生成php随机数
}
return $output;
}
echo randomkeys(8);
随机用户名和随机密码例子
//随机生成用户名(长度6-13)
function create_password($pw_length = 4){
$randpwd = '';
for ($i = 0; $i < $pw_length; $i++){
$randpwd .= chr(mt_rand(33, 126));
}
return $randpwd;
}
function generate_username( $length = 6 ) {
// 密码字符集,可任意添加你需要的字符
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';
$password = '';
for ( $i = 0; $i < $length; $i++ )
{
// 这里提供两种字符获取方式
// 第一种是使用substr 截取$chars中的任意一位字符;
// 第二种是取字符数组$chars 的任意元素
// $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
}
return $password;
}
//调用
$userId = 'user'.generate_username(6);
$pwd = create_password(9);
mt_srand生成随机种子,密码的长度可以随意定义,最长32位。
<?php
mt_srand((double) microtime() * 1000000);
function gen_random_password($password_length = 32, $generated_password = ""){
$valid_characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$chars_length = strlen($valid_characters) - 1;
for($i = $password_length; $i--; ) {
//$generated_password .= $valid_characters[mt_rand(0, $chars_length)];
$generated_password .= substr($valid_characters, (mt_rand()%(strlen($valid_characters))), 1);
}
return $generated_password;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>php密码生成器</title>
<style type="text/css">
body {
font-family: Arial;
font-size: 10pt;
}
</style>
</head>
<body>
<span style="font-weight: bold; font-size: 15pt;">密码生成器</span><br /><br />
<?php
if (isset($_GET['password_length'])){
if(preg_match("/([0-9]{1,8})/", $_GET['password_length'])){
print("密码生成成功:<br />
<span style="font-weight: bold">" . gen_random_password($_GET['password_length']) . "</span><br /><br />n");
} else {
print("密码长度不正确!<br /><br />n");
}
}
print <<< end
请为密码生成其指定生成密码的长度:<br /><br />
<form action="{$_SERVER['PHP_SELF']}" method="get">
<input type="text" name="password_length">
<input type="submit" value="生成">
</form>
end;
?>
</body>
</html>
为了翻墙方便 ,买了个vpn,转到osx下面官方没有提供合适的客户端,无法选择最快的线路。于是就自己写了个脚本,手动ping出最快的IP.
代码如下 | 复制代码 |
$servers = array( array('VIP荷兰线路01','nl01.yyuu.me','81.4.105.195','4122或3108'), array('VIP法国线路01','fr01.yyuu.me','176.31.206.242','4122或3108'), array('VIP意大利线路01','it01.yyuu.me','37.247.48.226','4122或3108'), array('VIP新加坡线路01','sg01.yyuu.me','128.199.69.209','4122或3108') ); //配合pcntl_signal使用 declare(ticks=1); //最大的子进程数量 $max = count($servers); //当前的子进程数量 $child = 0; //当子进程退出时,会触发该函数 function sig_handler($sig) { switch($sig) { case SIGCHLD: //do something } } //注册子进程退出时调用的函数 pcntl_signal(SIGCHLD, "sig_handler"); foreach($servers as $server){ $pid = pcntl_fork(); if($pid){ //echo 'main thread start',PHP_EOL; }else{ exec('ping -c 1 '.$server[2],$result); echo $server[1].' '.$server[2].' '.$result[1],PHP_EOL; exit(); } } |
每一个web项目,在日PV量达到十万级或百万级抑或更高时,你的网站响应速度就决定你的项目是能够继续活下去,或立马死掉的关键
除了升级服务器配置,优化代码,优化数据库之外,另一个技术?页面静态化,也是你不得不采用的技术
我们知道,页面在输出之前,会将输出数据暂时存放到BUFFER(缓冲器)中,然后才会输出到页面;所以,BUFFER中的数据,
就是你PHP代码执行,并且模板渲染之后,所生成的静态数据,即html页面;对于数据更新不是很快,或者页面信息实时性要求
不是很高的时候,我们可以将BUFFER的数据写入到一个html文件中,下次访问时,直接请求这个html页面,这样,中间就免去了PHP代码执行时间,
数据库数据查询时间以及模板渲染的时间,对于数据库I/O量大的页面,能很大地提高页面的响应速度
具体实现如下:
*/ /** * 这里是你的PHP逻辑代码 */ //在你页面所有输出内容之前,开启缓冲器 ob_start(); echo ‘hello,word!’ //当使用ob_start()函数之后,页面不会有输出,此时,所有的输出都已经存放在缓存器中 //然后我们将缓存器里面的内容拿出来,存放到一个静态的Html文件中 file_put_contents(‘index.html’,ob_get_contents());//函数ob_get_contents()表示取出当前缓冲器内容; //然后关闭缓冲器并清除缓冲器内容 ob_end_clean(); /*这样,一个静态的html文件就生成了,然后,需要做的只是判断什么时候该生成html文件,什么时候直接访问Html文件 提示:通过filemtime()函数判断Index.html文件的上次修改时间和当前时间间隔,来控制缓存有效期: */ //设置换成有效期为120秒 $cacheTime = ‘120’; if(time()-filemtime(‘index.html’)>$cacheTime){ //不在缓存有效期,重新生成缓存文件 //这里是你的PHP逻辑代码和生成缓存文件的代码 }else{ //在缓存有效期内,直接调用index.html文件 }下文为各位介绍一个PHP定时任务通过CURL图片的抓取例子,希望例子对大家帮助。
基本思路就是通过一个URL连接,将所有图片的地址抓取下来,然后循环打开图片,利用文件操作函数下载下来,保存到本地,并且
把图片的alt属性也抓取下来,最后将数据保存到自己数据库。
废话不多说,看程序就能明白了,其中,需要用到PHP定时任务和PHP的一个第三方插件simple_html_dom.php,的使用,参考simple_html_dom的下载和使用
代码:
<?php function getLink($url){ include_once('simple_html_dom.php'); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_HEADER,false); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $output = curl_exec($ch); curl_close($ch); $html = new simple_html_dom(); $html->load($output); $links = array(); $arr = array(); $title = array(); foreach($html->find('a') as $element){ if( preg_match('#^\/content_[0-9]+_1\.html$#i',$element->href)){ array_push($links,'http://www.111cn.net'.$element->href); array_push($title,$element->title); } } $links = array_values(array_unique($links)); $title = array_values(array_unique($title)); $arr['links'] = $links; $arr['title'] = $title; return $arr; } function loadimg($url,$dirname){ include_once('simple_html_dom.php'); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_HEADER,false); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $output = curl_exec($ch); curl_close($ch); $html = new simple_html_dom(); $html->load($output); $arr = array(); foreach($html->find('img[w]') as $element){ $image = $element->src; } $data = file_get_contents($image); $info = getimagesize($image);//获取图片信息,大小,格式 switch($info[2]){ case 1: $str = 'gif'; break; case 2: $str = 'jpg'; break; case 3: $str = 'png'; break; default: continue; break; } if($info[1] < 10 || $info[0] < 10) continue;//图片太小,不是有价值的图片,跳过本次循环 $filename = time().rand(1,999999).'.'.$str; if(!is_dir($dirname)){ mkdir($dirname,0777,true); } $fp = fopen($dirname.$filename,'w'); fwrite($fp,$data); fclose($fp); return $dirname.$filename; } do{ set_time_limit(0); ignore_user_abort(); $img = getLink('http://www.111cn.net /qutu_1.html'); $count = count($img['links']); $arr = array(); for($i=0;$i<$count;$i++){ $arr[]=loadimg($img['links'][$i],'images/'); } $img['url'] = $arr; echo '<br/>'; $img['title']; $res = array(); $len = count($img['title']); //重新将数据组装成我们常用的二维数组,方便数据的数据库处理 for($i=0;$i<$len;$i++){ $res[$i]['title'] = $img['title'][$i]; $res[$i]['url'] = $img['url'][$i]; } foreach($res as $item){ echo '<img src='.$item["url"].'>'.$item["title"].'<br />'; } $interval = 24*3600; sleep($interval); }while(true); ?>抓取就是采集了,今天因为我们要做一个实时采集新浪新闻的功能,下面整理了一个非常了得的php 抓取新浪新闻的程序,我们来看看。
首先,需要下载一个simple_html_dom第三方扩展库,具体下载方式和使用详情可以查看:simple_html_dom的使用.
需要环境支持file_get_contents()函数和curl的支持,具体代码如下:
<?php function timingimg($url,$dirname,$interval){ ignore_user_abort(); //浏览器关闭,程序继续执行 set_time_limit(0);//忽略到默认30秒超时 $interval = empty($interval)?3600:$interval; $dirname = empty($dirname)?'news/':$dirname; if(empty($url)){ die('请输入目标网址!!!'); } do{ $arr = loadimg($url,$dirname); return $arr; //返回抓取内容所保存的路径 sleep($interval); die; }while(true); } /** *获取所有新闻链接 *参数 $url 新闻列表地址 *参数 $dirname 新闻图片保存路径 * 返回 二维数组 所有新闻记录 */ function loadimg($url,$dirname){ set_time_limit(0); include_once('simple_html_dom.php'); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_HEADER,false); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $output = curl_exec($ch); curl_close($ch); $html = new simple_html_dom(); $html->load($output); $images = array(); $arr = array(); foreach($html->find('li a') as $element){ if( preg_match('#^http:\/\/tech\.sina\.com\.cn\/it\/[\d]{4}\-[\d]{1,2}\-[\d]{1,2}\/[\d]+\.shtml$#i',$element->href)){ array_push($images,$element->href); } } $images = array_unique($images); sort($images); for($i=0;$i<10;$i++){ //只抓取10条记录 $arr[] = getcontent($images[$i],$dirname); } return $arr; } /** * * * 抓取单个新闻内容 *参数 $url 新闻页面地址 *参数 $dirname 图片保存路径 *返回 一个新闻记录 一维数组 */ function getcontent($url,$dirname){ include_once('simple_html_dom.php'); $html = new simple_html_dom(); $data = file_get_contents($url); $html->load($data); $arr = array(); foreach($html->find('h1#artibodyTitle') as $element){ $arr['title']= @iconv('gbk','utf-8', $element->innertext); ; } $str = ''; foreach($html->find('div#artibody p') as $element){ $str.= $element; } $arr['content'] = $str; foreach($html->find('div.img_wrapper img') as $element){ $arr['alt'] =$element->alt; $data = file_get_contents($element->src); $info = getimagesize($element->src);//get image information switch($info[2]){ case 1: $str = 'gif'; break; case 2: $str = 'jpg'; break; case 3: $str = 'png'; break; default: continue; break; } $filename = time().rand(1,999999).'.'.$str; if(!is_dir($dirname)){ mkdir($dirname,0777,true); } $fp = fopen($dirname.$filename,'w'); fwrite($fp,$data); fclose($fp); $arr['img'] = $dirname.$filename; } return $arr; } ?>
如果大家有更好的建议,欢迎提出来
相关文章
- eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 这篇文章主要给大家介绍了关于C#创建自定义控件及添加自定义属性和事件使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 这篇文章主要介绍了Vue 组件复用多次自定义参数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27
- strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
- 为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07- Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
- free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
- 下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
- 自定义一个jquery模态窗口插件,将它集成到现有平台框架中时,它只能在mainFrame窗口中显示,无法在顶层窗口显示. 解决这个问题的办法: 通过以下代码就可能实现在顶层窗口弹窗 复制代码 代码如下: $(window.top.documen...2014-05-31
- 这篇文章主要介绍了自定义feignClient的常见坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-20