0

0

取得随机字符串

php中文网

php中文网

发布时间:2016-07-25 09:11:13

|

899人浏览过

|

来源于php中文网

原创

取得随机字符串
  1. /*
  2. 作用:取得随机字符串
  3. 参数:
  4. 1、(int)$length = 32 #随机字符长度,默认为32
  5. 2、(int)$mode = 0 #随机字符类型,0为大小写英文和数字,1为数字,2为小写子木,3为大写字母,4为大小写字母,5为大写字母和数字,6为小写字母和数字
  6. 返回:取得的字符串
  7. 使用:
  8. $code = new activeCodeObj;
  9. $str = $code->getCode($length, $mode);
  10. */
  11. class activeCodeObj
  12. {
  13. function getCode ($length = 32, $mode = 0)
  14. {
  15. switch ($mode) {
  16. case '1':
  17. $str = '1234567890';
  18. break;
  19. case '2':
  20. $str = 'abcdefghijklmnopqrstuvwxyz';
  21. break;
  22. case '3':
  23. $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  24. break;
  25. case '4':
  26. $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
  27. break;
  28. case '5':
  29. $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
  30. break;
  31. case '6':
  32. $str = 'abcdefghijklmnopqrstuvwxyz1234567890';
  33. break;
  34. default:
  35. $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
  36. break;
  37. }
  38. $result = '';
  39. $l = strlen($str);
  40. for($i = 0;$i
  41. $num = rand(0, $l);
  42. $result .= $str[$num];
  43. }
  44. return $result;
  45. }
  46. }
  47. 取得客户端信息
  48. /*
  49. 作用:取得客户端信息
  50. 参数:
  51. 返回:指定的资料
  52. 使用:
  53. $code = new clientGetObj;
  54. 1、浏览器:$str = $code->getBrowse();
  55. 2、IP地址:$str = $code->getIP();
  56. 4、操作系统:$str = $code->getOS();
  57. */
  58. class clientGetObj
  59. {
  60. function getBrowse()
  61. {
  62. global $_SERVER;
  63. $Agent = $_SERVER['HTTP_USER_AGENT'];
  64. $browser = '';
  65. $browserver = '';
  66. $Browser = array('Lynx', 'MOSAIC', 'AOL', 'Opera', 'JAVA', 'MacWeb', 'WebExplorer', 'OmniWeb');
  67. for($i = 0; $i
  68. if(strpos($Agent, $Browsers[$i])){
  69. $browser = $Browsers[$i];
  70. $browserver = '';
  71. }
  72. }
  73. if(ereg('Mozilla', $Agent) && !ereg('MSIE', $Agent)){
  74. $temp = explode('(', $Agent);
  75. $Part = $temp[0];
  76. $temp = explode('/', $Part);
  77. $browserver = $temp[1];
  78. $temp = explode(' ', $browserver);
  79. $browserver = $temp[0];
  80. $browserver = preg_replace('/([d.]+)/', '\1', $browserver);
  81. $browserver = $browserver;
  82. $browser = 'Netscape Navigator';
  83. }
  84. if(ereg('Mozilla', $Agent) && ereg('Opera', $Agent)) {
  85. $temp = explode('(', $Agent);
  86. $Part = $temp[1];
  87. $temp = explode(')', $Part);
  88. $browserver = $temp[1];
  89. $temp = explode(' ', $browserver);
  90. $browserver = $temp[2];
  91. $browserver = preg_replace('/([d.]+)/', '\1', $browserver);
  92. $browserver = $browserver;
  93. $browser = 'Opera';
  94. }
  95. if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)){
  96. $temp = explode('(', $Agent);
  97. $Part = $temp[1];
  98. $temp = explode(';', $Part);
  99. $Part = $temp[1];
  100. $temp = explode(' ', $Part);
  101. $browserver = $temp[2];
  102. $browserver = preg_replace('/([d.]+)/','\1',$browserver);
  103. $browserver = $browserver;
  104. $browser = 'Internet Explorer';
  105. }
  106. if($browser != ''){
  107. $browseinfo = $browser.' '.$browserver;
  108. } else {
  109. $browseinfo = false;
  110. }
  111. return $browseinfo;
  112. }
  113. function getIP ()
  114. {
  115. global $_SERVER;
  116. if (getenv('HTTP_CLIENT_IP')) {
  117. $ip = getenv('HTTP_CLIENT_IP');
  118. } else if (getenv('HTTP_X_FORWARDED_FOR')) {
  119. $ip = getenv('HTTP_X_FORWARDED_FOR');
  120. } else if (getenv('REMOTE_ADDR')) {
  121. $ip = getenv('REMOTE_ADDR');
  122. } else {
  123. $ip = $_SERVER['REMOTE_ADDR'];
  124. }
  125. return $ip;
  126. }
  127. function getOS ()
  128. {
  129. global $_SERVER;
  130. $agent = $_SERVER['HTTP_USER_AGENT'];
  131. $os = false;
  132. if (eregi('win', $agent) && strpos($agent, '95')){
  133. $os = 'Windows 95';
  134. }
  135. else if (eregi('win 9x', $agent) && strpos($agent, '4.90')){
  136. $os = 'Windows ME';
  137. }
  138. else if (eregi('win', $agent) && ereg('98', $agent)){
  139. $os = 'Windows 98';
  140. }
  141. else if (eregi('win', $agent) && eregi('nt 5.1', $agent)){
  142. $os = 'Windows XP';
  143. }
  144. else if (eregi('win', $agent) && eregi('nt 5', $agent)){
  145. $os = 'Windows 2000';
  146. }
  147. else if (eregi('win', $agent) && eregi('nt', $agent)){
  148. $os = 'Windows NT';
  149. }
  150. else if (eregi('win', $agent) && ereg('32', $agent)){
  151. $os = 'Windows 32';
  152. }
  153. else if (eregi('linux', $agent)){
  154. $os = 'Linux';
  155. }
  156. else if (eregi('unix', $agent)){
  157. $os = 'Unix';
  158. }
  159. else if (eregi('sun', $agent) && eregi('os', $agent)){
  160. $os = 'SunOS';
  161. }
  162. else if (eregi('ibm', $agent) && eregi('os', $agent)){
  163. $os = 'IBM OS/2';
  164. }
  165. else if (eregi('Mac', $agent) && eregi('PC', $agent)){
  166. $os = 'Macintosh';
  167. }
  168. else if (eregi('PowerPC', $agent)){
  169. $os = 'PowerPC';
  170. }
  171. else if (eregi('AIX', $agent)){
  172. $os = 'AIX';
  173. }
  174. else if (eregi('HPUX', $agent)){
  175. $os = 'HPUX';
  176. }
  177. else if (eregi('NetBSD', $agent)){
  178. $os = 'NetBSD';
  179. }
  180. else if (eregi('BSD', $agent)){
  181. $os = 'BSD';
  182. }
  183. else if (ereg('OSF1', $agent)){
  184. $os = 'OSF1';
  185. }
  186. else if (ereg('IRIX', $agent)){
  187. $os = 'IRIX';
  188. }
  189. else if (eregi('FreeBSD', $agent)){
  190. $os = 'FreeBSD';
  191. }
  192. else if (eregi('teleport', $agent)){
  193. $os = 'teleport';
  194. }
  195. else if (eregi('flashget', $agent)){
  196. $os = 'flashget';
  197. }
  198. else if (eregi('webzip', $agent)){
  199. $os = 'webzip';
  200. }
  201. else if (eregi('offline', $agent)){
  202. $os = 'offline';
  203. }
  204. else {
  205. $os = 'Unknown';
  206. }
  207. return $os;
  208. }
  209. }
  210. //修改自q3boy
  211. class cnStrObj
  212. {
  213. function substrGB ($str = '', $start = '', $len = ''){
  214. if($start == 0 || $start == ''){
  215. $start = 1;
  216. }
  217. if($str == '' || $len == ''){
  218. return false;
  219. }
  220. for($i = 0; $i
  221. $tmpstr = (ord($str[$i]) >= 161 && ord($str[$i]) = 161 && ord($str[$i+1])
  222. if ($i >= $start && $i
  223. {
  224. $tmp .=$tmpstr;
  225. }
  226. }
  227. return $tmp;
  228. }
  229. function isGB ($str)
  230. {
  231. $strLen = strlen($str);
  232. $length = 1;
  233. for($i = 0; $i
  234. $tmpstr = ord(substr($str, $i, 1));
  235. $tmpstr2 = ord(substr($str, $i+1, 1));
  236. if(($tmpstr = 247) && ($tmpstr2 = 247)){
  237. $legalflag = false;
  238. } else {
  239. $legalflag = true;
  240. }
  241. }
  242. return $legalflag;
  243. }
  244. }
  245. //下载自某e文网站
  246. /***************************************
  247. ** Filename.......: class.smtp.inc
  248. ** Project........: SMTP Class
  249. ** Version........: 1.00b
  250. ** Last Modified..: 30 September 2001
  251. ***************************************/
  252. define('SMTP_STATUS_NOT_CONNECTED', 1, TRUE);
  253. define('SMTP_STATUS_CONNECTED', 2, TRUE);
  254. class smtp{
  255. var $connection;
  256. var $recipients;
  257. var $headers;
  258. var $timeout;
  259. var $errors;
  260. var $status;
  261. var $body;
  262. var $from;
  263. var $host;
  264. var $port;
  265. var $helo;
  266. var $auth;
  267. var $user;
  268. var $pass;
  269. /***************************************
  270. ** Constructor function. Arguments:
  271. ** $params - An assoc array of parameters:
  272. **
  273. ** host - The hostname of the smtp server Default: localhost
  274. ** port - The port the smtp server runs on Default: 25
  275. ** helo - What to send as the HELO command Default: localhost
  276. ** (typically the hostname of the
  277. ** machine this script runs on)
  278. ** auth - Whether to use basic authentication Default: FALSE
  279. ** user - Username for authentication Default:
  280. ** pass - Password for authentication Default:
  281. ** timeout - The timeout in seconds for the call Default: 5
  282. ** to fsockopen()
  283. ***************************************/
  284. function smtp($params = array()){
  285. if(!defined('CRLF'))
  286. define('CRLF', "\r\n", TRUE);
  287. $this->timeout = 5;
  288. $this->status = SMTP_STATUS_NOT_CONNECTED;
  289. $this->host = 'localhost';
  290. $this->port = 25;
  291. $this->helo = 'localhost';
  292. $this->auth = FALSE;
  293. $this->user = '';
  294. $this->pass = '';
  295. $this->errors = array();
  296. foreach($params as $key => $value){
  297. $this->$key = $value;
  298. }
  299. }
  300. /***************************************
  301. ** Connect function. This will, when called
  302. ** statically, create a new smtp object,
  303. ** call the connect function (ie this function)
  304. ** and return it. When not called statically,
  305. ** it will connect to the server and send
  306. ** the HELO command.
  307. ***************************************/
  308. function connect($params = array()){
  309. if(!isset($this->status)){
  310. $obj = new smtp($params);
  311. if($obj->connect()){
  312. $obj->status = SMTP_STATUS_CONNECTED;
  313. }
  314. return $obj;
  315. }else{
  316. $this->connection = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);
  317. socket_set_timeout($this->connection, 0, 250000);
  318. $greeting = $this->get_data();
  319. if(is_resource($this->connection)){
  320. return $this->auth ? $this->ehlo() : $this->helo();
  321. }else{
  322. $this->errors[] = 'Failed to connect to server: '.$errstr;
  323. return FALSE;
  324. }
  325. }
  326. }
  327. /***************************************
  328. ** Function which handles sending the mail.
  329. ** Arguments:
  330. ** $params - Optional assoc array of parameters.
  331. ** Can contain:
  332. ** recipients - Indexed array of recipients
  333. ** from - The from address. (used in MAIL FROM,
  334. ** this will be the return path
  335. ** headers - Indexed array of headers, one header per array entry
  336. ** body - The body of the email
  337. ** It can also contain any of the parameters from the connect()
  338. ** function
  339. ***************************************/
  340. function send($params = array()){
  341. foreach($params as $key => $value){
  342. $this->set($key, $value);
  343. }
  344. if($this->is_connected()){
  345. // Do we auth or not? Note the distinction between the auth variable and auth() function
  346. if($this->auth){
  347. if(!$this->auth())
  348. return FALSE;
  349. }
  350. $this->mail($this->from);
  351. if(is_array($this->recipients))
  352. foreach($this->recipients as $value)
  353. $this->rcpt($value);
  354. else
  355. $this->rcpt($this->recipients);
  356. if(!$this->data())
  357. return FALSE;
  358. // Transparency
  359. $headers = str_replace(CRLF.'.', CRLF.'..', trim(implode(CRLF, $this->headers)));
  360. $body = str_replace(CRLF.'.', CRLF.'..', $this->body);
  361. $body = $body[0] == '.' ? '.'.$body : $body;
  362. $this->send_data($headers);
  363. $this->send_data('');
  364. $this->send_data($body);
  365. $this->send_data('.');
  366. return (substr(trim($this->get_data()), 0, 3) === '250');
  367. }else{
  368. $this->errors[] = 'Not connected!';
  369. return FALSE;
  370. }
  371. }
  372. /***************************************
  373. ** Function to implement HELO cmd
  374. ***************************************/
  375. function helo(){
  376. if(is_resource($this->connection)
  377. AND $this->send_data('HELO '.$this->helo)
  378. AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){
  379. return TRUE;
  380. }else{
  381. $this->errors[] = 'HELO command failed, output: ' . trim(substr(trim($error),3));
  382. return FALSE;
  383. }
  384. }
  385. /***************************************
  386. ** Function to implement EHLO cmd
  387. ***************************************/
  388. function ehlo(){
  389. if(is_resource($this->connection)
  390. AND $this->send_data('EHLO '.$this->helo)
  391. AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){
  392. return TRUE;
  393. }else{
  394. $this->errors[] = 'EHLO command failed, output: ' . trim(substr(trim($error),3));
  395. return FALSE;
  396. }
  397. }
  398. /***************************************
  399. ** Function to implement AUTH cmd
  400. ***************************************/
  401. function auth(){
  402. if(is_resource($this->connection)
  403. AND $this->send_data('AUTH LOGIN')
  404. AND substr(trim($error = $this->get_data()), 0, 3) === '334'
  405. AND $this->send_data(base64_encode($this->user)) // Send username
  406. AND substr(trim($error = $this->get_data()),0,3) === '334'
  407. AND $this->send_data(base64_encode($this->pass)) // Send password
  408. AND substr(trim($error = $this->get_data()),0,3) === '235' ){
  409. return TRUE;
  410. }else{
  411. $this->errors[] = 'AUTH command failed: ' . trim(substr(trim($error),3));
  412. return FALSE;
  413. }
  414. }
  415. /***************************************
  416. ** Function that handles the MAIL FROM: cmd
  417. ***************************************/
  418. function mail($from){
  419. if($this->is_connected()
  420. AND $this->send_data('MAIL FROM:')
  421. AND substr(trim($this->get_data()), 0, 2) === '250' ){
  422. return TRUE;
  423. }else
  424. return FALSE;
  425. }
  426. /***************************************
  427. ** Function that handles the RCPT TO: cmd
  428. ***************************************/
  429. function rcpt($to){
  430. if($this->is_connected()
  431. AND $this->send_data('RCPT TO:')
  432. AND substr(trim($error = $this->get_data()), 0, 2) === '25' ){
  433. return TRUE;
  434. }else{
  435. $this->errors[] = trim(substr(trim($error), 3));
  436. return FALSE;
  437. }
  438. }
  439. /***************************************
  440. ** Function that sends the DATA cmd
  441. ***************************************/
  442. function data(){
  443. if($this->is_connected()
  444. AND $this->send_data('DATA')
  445. AND substr(trim($error = $this->get_data()), 0, 3) === '354' ){
  446. return TRUE;
  447. }else{
  448. $this->errors[] = trim(substr(trim($error), 3));
  449. return FALSE;
  450. }
  451. }
  452. /***************************************
  453. ** Function to determine if this object
  454. ** is connected to the server or not.
  455. ***************************************/
  456. function is_connected(){
  457. return (is_resource($this->connection) AND ($this->status === SMTP_STATUS_CONNECTED));
  458. }
  459. /***************************************
  460. ** Function to send a bit of data
  461. ***************************************/
  462. function send_data($data){
  463. if(is_resource($this->connection)){
  464. return fwrite($this->connection, $data.CRLF, strlen($data)+2);
  465. }else
  466. return FALSE;
  467. }
  468. /***************************************
  469. ** Function to get data.
  470. ***************************************/
  471. function &get_data(){
  472. $return = '';
  473. $line = '';
  474. if(is_resource($this->connection)){
  475. while(strpos($return, CRLF) === FALSE OR substr($line,3,1) !== ' '){
  476. $line = fgets($this->connection, 512);
  477. $return .= $line;
  478. }
  479. return $return;
  480. }else
  481. return FALSE;
  482. }
  483. /***************************************
  484. ** Sets a variable
  485. ***************************************/
  486. function set($var, $value){
  487. $this->$var = $value;
  488. return TRUE;
  489. }
  490. } // End of class
  491. ?>
复制代码


热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

2

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

56

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

30

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

59

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

25

2026.03.03

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

79

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

61

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

50

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

47

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP基础入门课程
PHP基础入门课程

共33课时 | 2.2万人学习

Go语言教程-全程干货无废话
Go语言教程-全程干货无废话

共100课时 | 11.2万人学习

深入剖析redis教程
深入剖析redis教程

共55课时 | 8.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号