取得隨機字串

WBOY
發布: 2016-07-25 09:11:13
原創
795 人瀏覽過
取得隨機字串
  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 = 'abcdefghijklmnopqrstuvwxyz';
  22. break;$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  23. break;
  24. case '4':
  25. $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefijklmnoprbreak; >$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
  26. break;
  27. case '6':
  28. $str = 'abcdefghijklmnopqrstuvwxyz1234567890'>g; OPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890' ;
  29. break;
  30. }
  31. $result = '';
  32. $l = strlen($str);
  33. for($i = 0;$i $num = rand(0, $l);
  34. $result .= $str[$num];
  35. }
  36. return $result;
  37. }
  38. }
  39. 取得客戶端資訊
  40. /*
  41. 作用:取得客戶端資訊
  42. 參數:
  43. 回傳:指定的資料
  44. 使用:
  45. 參數:
  46. 回傳:指定的資料
  47. 使用:
  48. 參數:
  49. 回傳:指定的資料
  50. 使用:
  51. 參數:
  52. 回傳:指定的資料
  53. 使用:
  54. $code = new clientGetObj;
  55. 1、瀏覽器:$str = $code->getBrowse();
  56. 2、IP位址:$str = $code->getIP();
  57. 4、作業系統:$str = $code->getOS();
  58. */
  59. class clientGetObj
  60. {
  61. function getBrowse()
  62. {glo $function getBrowse()
  63. {glo $_SERVER 🎜>$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 if(strpos ($Agent, $Browsers[$i])){
  68. $browser = $Browsers[$i];
  69. $browserver = '';
  70. }
  71. }
  72. if(ereg( 'Mozilla', $Agent) && !ereg('MSIE', $Agent)){
  73. $temp = explode('(', $Agent);
  74. $Part = $temp[0];
  75. $temp = explode('/', $Part);
  76. $browserver = $temp[1];
  77. $temp = explode(' ', $browserver);
  78. $browserver = $temp[ 0];
  79. $browserver = preg_replace('/([d.]+)/', '1', $browserver);
  80. $browserver = $browserver;
  81. $browser = 'Netscape Navigator' ;
  82. }
  83. if(ereg('Mozilla', $Agent) && ereg('Opera', $Agent)) {
  84. $temp = explode('(', $Agent);
  85. $Part = $temp[1];
  86. $temp = explode(')', $Part);
  87. $browserver = $temp[1];
  88. $temp = explode(' ', $browserver );
  89. $browserver = $temp[2];
  90. $browserver = preg_replace('/([d.]+)/', '1', $browserver);
  91. $browserver = $browserver ;
  92. $browser = 'Opera';
  93. }
  94. if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)){
  95. $temp = explode(' (', $Agent);
  96. $Part = $temp[1];
  97. $temp = explode(';', $Part);
  98. $Part = $temp[1];
  99. $temp = explode(' ', $Part);
  100. $browserver = $temp[2];
  101. $browserver = preg_replace('/([d.]+)/','1',$browserver );
  102. $browserver = $browserver;
  103. $browser = 'Internet Explorer';
  104. }
  105. if($browser != ''){
  106. $browseinfo = $browser.' ' .$browserver;
  107. } else {
  108. $browseinfo = false;
  109. }
  110. return $browseinfo;
  111. }
  112. function getIP ()
  113. }
  114. function getIP ()
  115. > global $_SERVER;
  116. if (getenv('HTTP_CLIENT_IP')) {
  117. $ip = getenv('HTTP_CLIENT_IP');
  118. } else if (getenv('HTTP_X_IP');
  119. } else if (getenv('HTTP_X_FORWARDED_FOR'))> = getenv('HTTP_X_FORWARDED_FOR');
  120. } else if (getenv('REMOTE_ADDR')) {
  121. $ip = getenv('REMOTE_ADDR');
  122. } else {
  123. ['REMOTE_ADDR'];
  124. }
  125. return $ip;
  126. }
  127. function getOS ()
  128. {
  129. global $_SERVER;$os = false;
  130. if (eregi('win', $agent) && strpos($agent, '95')){
  131. $os = 'Windows 95' ;
  132. }
  133. else if (eregi('win 9x', $agent) && strpos($agent, '4.90')){
  134. $os = 'Windows ME';
  135. }
  136. else if (eregi('win', $agent) && ereg('98', $agent)){
  137. $os = 'Windows 98';
  138. }
  139. else if (eregi('win ', $agent) && eregi('nt 5.1',​​ $agent)){
  140. $os = 'Windows XP';
  141. }
  142. else if (eregi('win', $agent) && eregi ('nt 5', $agent)){
  143. $os = 'Windows 2000';
  144. }
  145. else if (eregi('win', $agent) && eregi('nt', $agent )){
  146. $os = 'Windows NT';
  147. }
  148. else if (eregi('win', $agent) && ereg('32', $agent)){
  149. $os = 'Windows 32';
  150. }
  151. else if (eregi('linux', $agent)){
  152. $os = 'Linux';
  153. }
  154. else if (eregi(' unix', $agent)){
  155. $os = 'Unix';
  156. }
  157. else if (eregi('sun', $agent) && eregi('os', $agent)){
  158. $os = 'SunOS';
  159. }
  160. else if (eregi('ibm', $agent) && eregi('os', $agent)){
  161. $os = 'IBM OS/ 2';
  162. }else if (eregi('Mac', $agent) && eregi('PC', $agent)){$os = 'Macintosh';}
  163. else if (eregi('PowerPC', $agent)){
  164. $os = 'PowerPC';
  165. }
  166. else if (eregi('AIX', $agent)){
  167. $os = 'AIX';
  168. }
  169. else if (eregi('HPUX', $agent)){
  170. $os = 'HPUX';
  171. }
  172. else if (eregi ('NetBSD', $agent)){
  173. $os = 'NetBSD';
  174. }
  175. else if (eregi('BSD', $agent)){
  176. $os = 'BSD' ;
  177. }
  178. else if (ereg('OSF1', $agent)){
  179. $os = 'OSF1';
  180. }
  181. else if (ereg('IRIX', $agent ) ) )){
  182. $os = 'IRIX';
  183. }
  184. else if (eregi('FreeBSD', $agent)){
  185. $os = 'FreeBSD';
  186. }
  187. else if (eregi('teleport', $agent)){
  188. $os = 'teleport';
  189. }
  190. else if (eregi('flashget', $agent)){
  191. $ os = 'flashget';
  192. }
  193. else if (eregi('webzip', $agent)){
  194. $os = 'webzip';
  195. }
  196. else if (eregi ( '離線', $agent)){
  197. $os = '離線';
  198. }
  199. else {
  200. $os = '未知';
  201. }
  202. 回傳$os;
  203. }
  204. }
  205. //修改自q3boy
  206. class cnStrObj
  207. {
  208. function substrGB ($str = '', $start = '', $start = '', $start = '' len = ''){
  209. if($start == 0 || $start == ''){
  210. $start = 1;
  211. }
  212. if($str == '' | | $ len == ''){
  213. 回傳false;
  214. }
  215. for($i = 0; $i $tmpstr = (奧德($str[$i]) >= 161 && 奧德($str[$i]) = 161 && 奧德($str[ $i]) + 1]) if ($i >= $start && $我{
  216. $tmp .=$tmpstr;
  217. }
  218. }
  219. 回傳$tmp;
  220. }
  221. 函數isGB ( $ str)
  222. {
  223. $strLen = strlen($str);
  224. $length = 1;
  225. for($i = 0; $i $tmpstr = ord(substr($str, $i, 1));
  226. $tmpstr2 = ord(substr($str, $i+1, 1));
  227. if(($tmpstr = 247) && ($tmpstr2 = 247)){
  228. $legalflag = false;
  229. } else {
  230. $ legalflag = true;
  231. }
  232. }
  233. return $legalflag;
  234. }
  235. }
  236. //下載自某網站
  237. /**
  238. //下載自某網站
  239. /** */
  240. define('SMTP_STATUS_NOT_CONNECTED', 1, TRUE);
  241. define('SMTP_STATUS_CONNECTED', 2, TRUE);
  242. class smh{
  243. $ $ $var $recipients;
  244. var $headers;
  245. var $timeout;
  246. var $errors;
  247. var $status;
  248. var $body;
  249. var $from ;
  250. var $host;
  251. var $port;
  252. var $helo;
  253. var $auth;
  254. var $user;
  255. var $pass;
  256. / ***************************************
  257. ** 檔案名稱...... : class.smtp.inc
  258. ** 項目........: SMTP 類別
  259. ** 版本........: 1.00b
  260. ** 最後修改..: 2001 年9 月30 日
  261. ***************************************** ****/
  262. function smtp($params = array()){
  263. if(!define('CRLF'))
  264. define('CRLF', " rn", TRUE);
  265. $this->超時= 5;
  266. $this->status = SMTP_STATUS_NOT_CONNECTED;
  267. $this->host = 'localhost';
  268. $this--this-->host- >port = 25;
  269. $this->helo = 'localhost';
  270. $this->auth = FALSE;
  271. $this->user = '';
  272. $this->pass = '';
  273. $this->errors = array();
  274. foreach($params as $key =>; $value){
  275. $this->$key = $value;
  276. }
  277. }
  278. /****************************************
  279. ** 建構子。參數:
  280. ** $params - 參數的關聯數組:
  281. **
  282. ** host - smtp 伺服器的主機名稱預設值:localhost
  283. ** port - smtp 伺服器執行的連接埠預設值:25
  284. ** helo - 作為HELO 命令發送的內容預設值:localhost
  285. ** (通常是此腳本運行的
  286. ** 機器的主機名稱)
  287. ** auth -是否使用基本驗證預設:FALSE
  288. ** user - 驗證的使用者名稱預設:
  289. ** pass - 驗證的密碼預設:
  290. ** timeout - 逾時時間呼叫秒數預設:5
  291. ** 到fsockopen()
  292. ************************************** ** *****/
  293. 函數連接($ params = array()){
  294. if(!isset($這個->狀態)){
  295. $obj = new smtp($params);
  296. if($obj->; connect()){
  297. $obj->status = SMTP_STATUS_CONNECTED;
  298. }
  299. return $obj;
  300. }else{
  301. $this-open>連接$this->主機, $this->連接埠, $errno, $errstr, $this->逾時);
  302. socket_set_timeout($this->連線, 0, 250000);
  303. $greeting = $this->get_data();
  304. if(is_resource($this->connection)){
  305. 回傳$this->auth ? $this->ehlo() : $this->helo();
  306. }else{
  307. $this->errors[] = ' 無法連線到伺服器: '.$errstr;
  308. 回傳FALSE;
  309. }
  310. }
  311. }
  312. /****************************************
  313. ** 處理發送郵件的函數。
  314. ** 參數:
  315. ** $params - 可選的關聯參數陣列。
  316. ** 可以包含:
  317. **收件者 - 收件者索引陣列
  318. ** from - 寄件者位址。 (在MAIL FROM 中使用,
  319. ** 這將是返迴路徑
  320. ** 標頭- 索引數組標頭,每個陣列項目一個標頭
  321. ** 正文- 電子郵件正文
  322. ** 它也可以包含connect()
  323. ** 函數
  324. *** 中的任何參數** *************************************/
  325. function send($params = array()){
  326. foreach($params as $key => $value) {
  327. $this->set($key, $value);
  328. }
  329. if($this->is_connected()){
  330. // 我們做是否授權注意auth 變數與auth() 函數的差異
  331. if($this->auth){
  332. if(!$this->auth())
  333. return FALSE;
  334. }
  335. $this->mail($this->from);
  336. if(is_array($this->recipients))
  337. foreach($this->recipients as $value )
  338. $ this- >rcpt($value);
  339. else
  340. $this->rcpt($this->函數);
  341. if(!$this-> ;data())
  342. return FALSE ;
  343. // 透明度
  344. $headers = str_replace(CRLF.'.', CRLF.'..', trim(implode(CRLF, $this-> headers)));
  345. $ body = str_replace(CRLF.'.', CRLF.'..', $this->body);
  346. $body = $body[0] == ' .' '.'.$body : $body;
  347. $this->send_data($headers);
  348. $this->send_data('');
  349. $this->send_data ($ body );
  350. $this->send_data('.');
  351. return (substr(trim($this->get_data()), 0, 3) === ' 250');
  352. }else{
  353. $this->errors[] = '未連接!
  354. 函數helo(){
  355. if(is_resource($this->connection)
  356. AND $this->send_data('HELO '.$this-> ;helo)
  357. AND substr (trim($error = $this->get_data()), 0, 3) === '250' ){
  358. 回傳TRUE;
  359. }else{
  360. $ this ->errors[] = 'HELO指令失敗,輸出:' . rim(substr(trim($error),3));
  361. return FALSE;
  362. }
  363. }
  364. /****************************************
  365. ** 實作HELO cmd 的函數
  366. *******************************************/
  367. 函數嘿嘿(){
  368. if(is_resource($this->connection)
  369. AND $this->send_data('EHLO '.$this->helo)
  370. AND substr(trim($error = $this- >get_data()), 0, 3) === '250' ){
  371. 回傳TRUE;
  372. }else{
  373. $this->errors[ ] = 'EHLO 指令失敗,輸出:' . rim(substr(trim($error),3));
  374. 回傳 FALSE;
  375. }
  376. }
  377. /****************************************
  378. ** 實作EHLO cmd 的函數
  379. *******************************************/
  380. 函數驗證(){
  381. if(is_resource($this->connection)
  382. AND $this->send_data('AUTH LOGIN')
  383. AND substr(trim($error = $this->get_data) () ), 0, 3) === '334'
  384. AND $this->send_data(base64_encode($this->user)) // 傳送使用者名稱
  385. AND substr(trim($error = $this- >get_data()),0,3) === '334'
  386. AND $this->send_data(base64_encode($this->pass)) // 傳送密碼
  387. AND substr (trim($error = $this->get_data()),0,3) === '235' ){
  388. 回傳TRUE;
  389. }else{
  390. $ this->errors[] = 'AUTH 指令失敗:' 。 rim(substr(trim($error),3));
  391. return FALSE;
  392. }
  393. }
  394. /****************************************
  395. ** 實作AUTH cmd 的函數
  396. *******************************************/
  397. 函數郵件($from){
  398. if($this->is_connected()
  399. AND $this->send_data('MAIL FROM:' )
  400. AND substr(trim($this->get_data()), 0, 2) === '250' ){
  401. 回傳TRUE;
  402. }else
  403. 回傳FALSE ;
  404. }
  405. /****************************************
  406. ** 處理MAIL FROM 的函數:cmd
  407. *****************************************/
  408. 函數rcpt($to){
  409. if($this->is_connected()
  410. AND $this->send_data('RCPT TO:')
  411. AND substr(trim($error = $this->get_data()), 0, 2) === '25' ){
  412. 返回TRUE;
  413. }else{
  414. $this->errors[] = trim(substr(trim($error), 3) );
  415. 回傳FALSE;
  416. }
  417. }
  418. /***************************************
  419. ** 處理RCPT TO 的函數:cmd
  420. *****************************************/
  421. 函數data(){
  422. if($ this->is_connected){
  423. if($ this->is_connected ()
  424. AND $this->send_data('DATA')
  425. AND substr(trim($error = $this->get_data()), 0, 3) === '354' ){
  426. 回傳TRUE;
  427. }else{
  428. $this->errors[] = trim(substr(trim($error), 3));
  429. 回傳FALSE;
  430. }
  431. }
  432. /****************************************
  433. ** 判斷此物件是否** 是否連接到伺服器。
  434. **************************************** ***/
  435. function is_connected(){
  436. return (is_resource($this->connection) AND ($this->status == = SMTP_STATUS_CONNECTED));
  437. }
  438. /****************************************
  439. ** 發送一點資料的函數
  440. *********************************************/
  441. 函數send_data($data){
  442. if(is_resource($this ->連接)){
  443. return fwrite($this->connection, $data.CRLF, strlen($data)+2);
  444. }else
  445. return FALSE;
  446. }
  447. /****************************************
  448. ** 取得資料的函數。
  449. *******************************************/
  450. 函數&get_data(){
  451. $return = '';
  452. $line = '';
  453. if(is_resource ($this->connection)){
  454. while(strpos($return, CRLF) === FALSE OR substr($line,3,1) !== ' '){
  455. $line = fgets( $this->連線, 512);
  456. $return .= $line;
  457. }
  458. 回傳$return;
  459. }else
  460. 回傳FALSE;
  461. }
  462. /****************************************
  463. ** 設定變數
  464. ** ***************************************/
  465. 函數集($var, $value){
  466. $this->$var = $value ;
  467. 返回TRUE;
  468. }
  469. } // 課程結束
  470. ?>
複製代碼

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板