ホームページ > バックエンド開発 > PHPチュートリアル > ランダムな文字列を取得する

ランダムな文字列を取得する

WBOY
リリース: 2016-07-25 09:11:13
オリジナル
818 人が閲覧しました
ランダムな文字列を取得する
  1. /*
  2. 関数: ランダムな文字列を取得します
  3. パラメータ:
  4. 1, (int)$length = 32 #ランダムな文字の長さ、デフォルトは 32
  5. 2, (int)$mode = 0 # ランダムな文字の種類、0 は大文字と小文字と数字、1 は数字、2 は小文字、3 は大文字、4 は大文字と小文字、5 は大文字と数字、6 は小文字と数字
  6. Return : 文字列の取得
  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. スイッチ ($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 = 'ABCDEFGHIJK LMNOPQRSTUVWX YZ1234567890';
  30. 休憩;
  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 $num = rand(0, $l);
  41. $result .= $str[$num];
  42. }
  43. return $result ;
  44. }
  45. }
  46. クライアント情報の取得
  47. /*
  48. Function: クライアント情報の取得
  49. Parameters:
  50. Return: 指定された情報
  51. Usage:
  52. $code = new clientGetObj;
  53. 1. ブラウザ: $str = $ code- >getBrowse();
  54. 2. IP アドレス: $str = $code->getIP();
  55. 4. オペレーティング システム: $str = $code->getOS();
  56. */
  57. class clientGetObj
  58. {
  59. function getBrowse()
  60. {
  61. global $_SERVER;
  62. $Agent = $_SERVER['HTTP_USER_AGENT'];
  63. $browser = '';
  64. $browserver = '';
  65. $Browser = array('Lynx' , ' MOSAIC'、'AOL'、'Opera'、'JAVA'、'MacWeb'、'WebExplorer'、'OmniWeb');
  66. for($i = 0; $i if(strpos($Agent, $Browsers[$i])){
  67. $browser = $Browsers[$i];
  68. $browserver = '';
  69. }
  70. }
  71. if(ereg('Mozilla', $ Agent) && !ereg('MSIE', $Agent)){
  72. $temp =explode('(', $Agent);
  73. $Part = $temp[0];
  74. $temp =explode('/', $Part) ;
  75. $browserver = $temp[1];
  76. $temp =explode(' ', $browserver);
  77. $browserver = $temp[0];
  78. $browserver = preg_replace('/([d.]+ )/ ', '1', $browserver);
  79. $browserver = $browserver;
  80. $browser = 'Netscape Navigator';
  81. }
  82. if(ereg('Mozilla', $Agent) && ereg('Opera', $ Agent) ) {
  83. $temp =explode('(', $Agent);
  84. $Part = $temp[1];
  85. $temp =explode(')', $Part);
  86. $browserver = $temp[1 ];
  87. $temp =explode(' ', $browserver);
  88. $browserver = $temp[2];
  89. $browserver = preg_replace('/([d.]+)/', '1', $browserver) ;
  90. $browserver = $browserver;
  91. $browser = 'Opera';
  92. }
  93. if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)){
  94. $temp =explode('( ', $Agent);
  95. $Part = $temp[1];
  96. $temp =explode(';', $Part);
  97. $Part = $temp[1];
  98. $temp =explode(' ', $Part) ;
  99. $browserver = $temp[2];
  100. $browserver = preg_replace('/([d.]+)/','1',$browserver);
  101. $browserver = $browserver;
  102. $browser = 'インターネットExplorer';
  103. }
  104. if($browser != ''){
  105. $browseinfo = $browser.' '.$browserver;
  106. } else {
  107. $browseinfo = false;
  108. }
  109. return $browseinfo;
  110. }
  111. function getIP ()
  112. {
  113. global $_SERVER;
  114. if (getenv('HTTP_CLIENT_IP')) {
  115. $ip = getenv('HTTP_CLIENT_IP');
  116. } else if (getenv('HTTP_X_FORWARDED_FOR')) {
  117. $ ip = getenv('HTTP_X_FORWARDED_FOR');
  118. } else if (getenv('REMOTE_ADDR')) {
  119. $ip = getenv('REMOTE_ADDR');
  120. } else {
  121. $ip = $_SERVER['REMOTE_ADDR'];
  122. }
  123. return $ip;
  124. }
  125. function getOS ()
  126. {
  127. global $_SERVER;
  128. $agent = $_SERVER['HTTP_USER_AGENT'];
  129. $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. }
  163. else if (eregi('Mac', $agent) && eregi('PC', $agent)){
  164. $os = 'Macintosh';
  165. }
  166. else if (eregi('PowerPC', $agent)){
  167. $os = 'PowerPC';
  168. }
  169. else if (eregi('AIX', $agent)){
  170. $os = 'AIX';
  171. }
  172. else if (eregi('HPUX', $agent)){
  173. $os = 'HPUX';
  174. }
  175. else if (eregi('NetBSD', $agent)){
  176. $os = 'NetBSD';
  177. }
  178. else if (ereg('BSD', $agent)){
  179. $os = 'BSD';
  180. }
  181. else if (ereg('OSF1', $agent)){
  182. $os = 'OSF1';
  183. }
  184. else if (ereg('IRIX', $agent)){
  185. $os = 'IRIX';
  186. }
  187. else if (ereg('FreeBSD', $agent)){
  188. $os = 'FreeBSD';
  189. }
  190. else if (eregi('teleport', $agent)){
  191. $os = 'teleport';
  192. }
  193. else if (eregi('flashget', $agent)){
  194. $os = 'flashget';
  195. }
  196. else if (eregi('webzip', $agent)){
  197. $os = 'webzip';
  198. }
  199. else if (eregi('offline', $agent)){
  200. $os = 'offline';
  201. }
  202. else {
  203. $os = 'Unknown';
  204. }
  205. return $os;
  206. }
  207. }
  208. //修改自q3boy
  209. class cnStrObj
  210. {
  211. ''$function = $tstr = star , $len = ' '){
  212. if($start == 0 || $start == ''){
  213. $start = 1;
  214. }
  215. if($str == '' || $len == ' '){
  216. return false;
  217. }
  218. for($i = 0; $i $tmpstr = (ord($str[$i]) >= 161 && ord($ str[$i]) = 161 && ord($str[$i+1]) if ($i >= $start && $i < ($start + $len))
  219. {
  220. $tmp .=$tmpstr;
  221. }
  222. }
  223. return $tmp;
  224. }
  225. 関数 isGB ($str)
  226. {
  227. $strLen = strlen($str);
  228. $length = 1;
  229. for($i = 0; $i < $strLen; $i ++) {
  230. $tmpstr = ord(substr($str, $i, 1));
  231. $tmpstr2 = ord( substr($str, $i+1, 1));
  232. if(($tmpstr <= 161 || $tmpstr >= 247) && ($tmpstr2 <= 161 || $tmpstr2 >= 247) ){
  233. $legalflag = false;
  234. } else {
  235. $legalflag = true;
  236. }
  237. }
  238. return $legalflag;
  239. }
  240. }
  241. //
  242. define('SMTP_STATUS_NOT_CONNECTED', 1, TRUE);
  243. define ('SMTP_STATUS_CONNECTED', 2, TRUE);
  244. class smtp{
  245. var $connection;
  246. var $connection; var $timeout ;
  247. var $errors;
  248. var $status;
  249. var $body;
  250. var $from ;
  251. var $host;
  252. var $port;
  253. var $helo;
  254. var $auth;
  255. var $user;
  256. var $pass ;
  257. /***************************************
  258. ** ファイル名......: クラス.smtp.inc
  259. ** プロジェクト....: SMTP クラス
  260. ** バージョン....: 1.00b
  261. ** 最終更新日..: 2001 年 9 月 30 日
  262. **** **********************************/
  263. function smtp($params = array ()){
  264. if(!define('CRLF'))
  265. define('CRLF', "rn", TRUE);
  266. $this->タイムアウト = 5;
  267. $this->ステータス = SMTP_STATUS_NOT_CONNECTED ;
  268. $this->ホスト = 'localhost';
  269. $this->ポート = 25;
  270. $this->thelo> = 'localhost';
  271. $this->auth = FALSE;
  272. $this- >user = '';
  273. $this->pass = '';
  274. $this->errors = array();
  275. foreach($params as $key => $value){
  276. $this->$key = $value;
  277. }
  278. }
  279. /****************************************
  280. ** コンストラクター関数。引数:
  281. ** $params - パラメータの連想配列:
  282. **
  283. ** host - SMTP サーバーのホスト名 デフォルト: localhost
  284. ** port - SMTP サーバーが実行されるポート デフォルト: 25
  285. ** helo - HELO コマンドとして送信するもの デフォルト: localhost
  286. ** (通常、このスクリプトが実行される
  287. ** マシンのホスト名)
  288. ** auth - 基本認証を使用するかどうか デフォルト: FALSE
  289. ** user - 認証用のユーザー名デフォルト:
  290. ** pass - 認証用のパスワード デフォルト:
  291. ** timeout - 呼び出しのタイムアウト (秒) デフォルト: 5
  292. ** to fsockopen()
  293. ******* *******************************/
  294. function connect($params = array()){
  295. if(!isset( $this->status)){
  296. $obj = new smtp($params);
  297. if($obj->connect()){
  298. $obj->status = SMTP_STATUS_CONNECTED;
  299. }
  300. return $obj ;
  301. }else{
  302. $this->connection = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);
  303. socket_set_timeout($this- >connection, 0, 250000);
  304. $greeting = $this->get_data();
  305. if(is_resource($this->connection)){
  306. return $this->auth ? $this->ehlo() : $this->helo();
  307. }else{
  308. $this->errors[] = 'サーバーへの接続に失敗しました: '.$errstr;
  309. return FALSE;
  310. }
  311. }
  312. }
  313. /****************************************
  314. ** メールの送信を処理する関数。
  315. **引数:
  316. ** $params - パラメータのオプションの関連配列
  317. ** 含めることができます:
  318. ** 受信者 - 受信者のインデックス付き配列
  319. ** from - 送信元アドレス。 (MAIL FROM で使用)、
  320. ** これはリターン パスになります
  321. ** headers - ヘッダーのインデックス付き配列、1 つ配列エントリごとのヘッダー
  322. ** body - メールの本文
  323. ** connect()
  324. ** 関数のパラメータのいずれかを含めることもできます
  325. *************** ************************/
  326. function send($params = array()){
  327. foreach($params as $key =>$value){
  328. $this->set($key, $value);
  329. }
  330. if($this->is_connected()){
  331. // 認証するかどうか? auth 変数と auth() 関数の違いに注意してください
  332. if($this->auth){
  333. if(!$this->auth())
  334. return FALSE;
  335. }
  336. $this->mail ($this->from);
  337. if(is_array($this->受信者))
  338. foreach($this->受信者を $value として)
  339. $this->rcpt($value);
  340. else
  341. $this->rcpt($this->recipients);
  342. if(!$this->data())
  343. return FALSE;
  344. // 透明性
  345. $headers = str_replace(CRLF.'.', CRLF.'..', trim(implode(CRLF, $this->headers)));
  346. $body = str_replace(CRLF.'.', CRLF.'..', $this->body);
  347. $body = $body[0] == '.' ? '.'.$body : $body;
  348. $this->send_data($headers);
  349. $this->send_data('');
  350. $this->send_data($body);
  351. $this ->send_data('.');
  352. return (substr(trim($this->get_data()), 0, 3) === '250');
  353. }else{
  354. $this-> errors[] = '接続されていません!';
  355. return FALSE;
  356. }
  357. }
  358. /***************************************
  359. ** HELO cmdを実装する関数
  360. **** **********************************/
  361. function helo(){
  362. if(is_resource($this->connection)
  363. AND $ this->send_data('HELO '.$this->helo)
  364. AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){
  365. return TRUE;
  366. }else{
  367. $this->errors[] = 'HELO コマンドが失敗しました。出力: ' 。トリム(substr(trim($error),3));
  368. return FALSE;
  369. }
  370. }
  371. /****************************************
  372. ** EHLO cmdを実装する関数
  373. **** **********************************/
  374. function ehlo(){
  375. if(is_resource($this->connection )
  376. AND $this->send_data('EHLO '.$this->helo)
  377. AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){
  378. return TRUE;
  379. }else{
  380. $this->errors[] = 'EHLO コマンドが失敗しました。出力: ' 。トリム(substr(trim($error),3));
  381. return FALSE;
  382. }
  383. }
  384. /****************************************
  385. ** AUTH cmdを実装する関数
  386. **** **********************************/
  387. function auth(){
  388. if(is_resource($this->connection )
  389. AND $this->send_data('AUTH LOGIN')
  390. AND substr(trim($error = $this->get_data()), 0, 3) === '334'
  391. AND $this-> ;send_data(base64_encode($this->user)) // ユーザー名を送信します
  392. AND substr(trim($error = $this->get_data()),0,3) === '334'
  393. AND $this ->send_data(base64_encode($this->pass)) // パスワードを送信
  394. AND substr(trim($error = $this->get_data()),0,3) === '235' ){
  395. return TRUE;
  396. }else{
  397. $this->errors[] = 'AUTH コマンドが失敗しました: ' 。トリム(substr(trim($error),3));
  398. return FALSE;
  399. }
  400. }
  401. /****************************************
  402. ** MAIL FROM を処理する関数: cmd
  403. * *************************************/
  404. function mail($from){
  405. if($this-> is_connected()
  406. AND $this->send_data('MAIL FROM:<'.$from.'>')
  407. AND substr(trim($this->get_data()), 0, 2) == = '250' ){
  408. return TRUE;
  409. }else
  410. return FALSE;
  411. }
  412. /***************************************
  413. ** RCPT TO を処理する関数: cmd
  414. * *************************************/
  415. function rcpt($to){
  416. if($this->is_connected ()
  417. AND $this->send_data('RCPT TO:<'.$to.'>')
  418. AND substr(trim($error = $this->get_data()), 0, 2) === '25' ){
  419. return TRUE;
  420. }else{
  421. $this->errors[] = トリム(substr(trim($error), 3));
  422. return FALSE;
  423. }
  424. }
  425. /****************************************
  426. ** DATA cmdを送信する関数
  427. *** ***********************************/
  428. function data(){
  429. if($this->is_connected()
  430. AND $this->send_data('DATA')
  431. AND substr(trim($error = $this->get_data()), 0, 3) === '354' ){
  432. return TRUE;
  433. }else{
  434. $this->errors[] = トリム(substr(trim($エラー)、3));
  435. FALSE を返す;
  436. }
  437. }
  438. /****************************************
  439. ** このオブジェクト
  440. ** がサーバーに接続されているかどうか。
  441. ***************************************/
  442. function is_connected(){
  443. return (is_resource($this->connection) AND ($this->status === SMTP_STATUS_CONNECTED));
  444. }
  445. / ****************************************
  446. ** ちょっとしたデータを送信する機能
  447. ** ************************************/
  448. function send_data($data){
  449. if(is_resource($this->connection)){
  450. return fwrite($this->connection, $data.CRLF, strlen($ data)+2);
  451. }else
  452. return FALSE;
  453. }
  454. /****************************************
  455. ** データを取得する関数
  456. **** **********************************/
  457. function &get_data(){
  458. $return = '';
  459. $line = '';
  460. if (is_resource($this->connection)){
  461. while(strpos($return, CRLF) === FALSE OR substr($line,3,1) !== ' '){
  462. $line = fgets($ this->connection, 512);
  463. $return .= $line;
  464. }
  465. return $return;
  466. }else
  467. return FALSE;
  468. }
  469. /****************************************
  470. ** 変数を設定します
  471. ****** ********************************/
  472. function set($ var, $value){
  473. $this->$var = $value;
  474. return TRUE;
  475. }
  476. } // 授業終了
  477. ?>
复制代


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート