>  기사  >  백엔드 개발  >  임의의 문자열 가져오기

임의의 문자열 가져오기

WBOY
WBOY원래의
2016-07-25 09:11:13794검색
임의의 문자열 가져오기
  1. /*
  2. 기능: 임의의 문자열 가져오기
  3. 매개변수:
  4. 1, (int)$length = 32 #Random 문자 길이, 기본값은 32
  5. 2, (int)$mode = 0 #임의의 문자형, 0은 대문자, 소문자 영어와 숫자, 1은 숫자, 2는 소문자, 3은 대문자, 4는 대문자, 소문자 letter , 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 = 'ABCDEFGHIJKLMNOPQRSNOPQRSTUVWXYZ1234567890';
  30. 중단;
  31. 사례 '6':
  32. '; 기본값:
  33. $ Str =' ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn opqrstuvwxyz1234567890';
  34. break;
  35. }
  36. $result = '';
  37. $l = strlen($str);
  38. for($i = 0;$ i < $length; $i ){
  39. $num = rand(0, $l);
  40. $result .= $str[$num];
  41. }
  42. return $result;
  43. }
  44. }
  45. 클라이언트 정보 가져오기
  46. /*
  47. 기능: 클라이언트 정보 가져오기
  48. 매개변수:
  49. 반환: 지정된 데이터
  50. 사용:
  51. $code = new clientGetObj;
  52. 1. 브라우저: $str = $code->getBrowse();
  53. 2. IP 주소: $str = $code->getIP();
  54. 4. code->getOS();
  55. */
  56. class clientGetObj
  57. {
  58. function getBrowse()
  59. {
  60. global $_SERVER;
  61. $Agent = $ _SERVER['HTTP_USER_AGENT'];
  62. $browser = '';
  63. $browserver = '';
  64. $Browser = array('Lynx', 'MOSAIC' , 'AOL', 'Opera', ' JAVA', 'MacWeb', 'WebExplorer', 'OmniWeb');
  65. for($i = 0; $i <= 7; $i ){
  66. if(strpos($Agent, $Browsers[ $i])){
  67. $browser = $Browsers[$i];
  68. $browserver = '';
  69. }
  70. }
  71. if (ereg('Mozilla', $Agent) && !ereg('MSIE', $Agent)){
  72. $temp = 폭발('(', $Agent);
  73. $Part = $temp[0] ;
  74. $temp = 폭발(' /', $Part);
  75. $browserver = $temp[1];
  76. $temp = 폭발(' ', $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 = 폭발('(', $Agent);
  84. $Part = $temp[1] ;
  85. $temp = 폭발(')', $Part);
  86. $browserver = $temp[1];
  87. $temp = 폭발(' ', $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 =explore( '(', $Agent);
  95. $Part = $temp[1];
  96. $temp = 폭발(';', $Part);
  97. $Part = $temp[1];
  98. $temp = 폭발(' ', $ 부분);
  99. $browserver = $temp[2];
  100. $browserver = preg_replace('/([d.] )/','1',$browserver );
  101. $browserver = $browserver ;
  102. $browser = 'Internet 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. $ip 반환
  124. }
  125. 함수 getOS()
  126. {
  127. 전역 $_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 (eregi('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 (eregi('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( ' 오프라인', $agent)){
  200. $os = '오프라인';
  201. }
  202. else {
  203. $os = '알 수 없음';
  204. }
  205. $os를 반환합니다.
  206. }
  207. }
  208. //修改自q3boy
  209. class cnStrObj
  210. {
  211. function substrGB($str = '', $start = '', $len = ''){
  212. if($start == 0 || $start == ''){
  213. $start = 1;
  214. }
  215. if($str == '' || $ len == ''){
  216. false 반환;
  217. }
  218. for($i = 0; $i < $start $len; $i ){
  219. $tmpstr = (ord( $ str[$i]) >= 161 && ord($str[$i]) <= 247&& ord($str[$i 1]) >= 161 && ord($str[$i 1]) < ;= 254)?$str[$i].$str[ $i]:$tmpstr = $str[$i];
  220. if ($i >= $start && $i < ($start $len))
  221. {
  222. $tmp .=$tmpstr;
  223. }
  224. }
  225. return $tmp;
  226. }
  227. 함수는GB($ str)
  228. {
  229. $strLen = strlen($str);
  230. $length = 1;
  231. for($i = 0; $i < $strLen; $i ) {
  232. $tmpstr = ord(substr($str, $i, 1));
  233. $tmpstr2 = ord(substr($str, $i 1, 1));
  234. if(($tmpstr <= 161 || $tmpstr >= 247) && ($tmpstr2 <= 161 || $tmpstr2 >= 247)){
  235. $legaflag = false;
  236. } else {
  237. $legaflag = true;
  238. }
  239. }
  240. return $legalflag;
  241. }
  242. }
  243. // >
  244. define('SMTP_STATUS_NOT_CONNECTED', 1, TRUE);
  245. define ('SMTP_STATUS_CONNECTED', 2, TRUE);
  246. class smtp{
  247. $nexion; >var $recipients;
  248. var $headers;
  249. var $timeout;
  250. var $errors;
  251. var $status;
  252. var $body;
  253. var $from;
  254. var $host;
  255. var $port;
  256. var $helo;
  257. var $auth;
  258. var $user;
  259. var $pass;
  260. /***************************************
  261. ** 파일명...... : class.smtp.inc
  262. ** 프로젝트........: SMTP 클래스
  263. ** 버전........: 1.00b
  264. ** 최종 수정..: 2001년 9월 30일
  265. ***************************************/
  266. 함수 smtp($params = array()){
  267. if(!define('CRLF'))
  268. define('CRLF', "rn", TRUE );
  269. $this->timeout = 5;
  270. $this ->status = SMTP_STATUS_NOT_CONNECTED;
  271. $this->host = 'localhost';
  272. $this-> ;port = 25;
  273. $this->helo = 'localhost';
  274. $this->auth = FALSE;
  275. $this->user = '';
  276. $this- >pass = '';
  277. $this->errors = array();
  278. foreach($params를 $key => $value){
  279. $this->$key = $value;
  280. }
  281. }
  282. /***************************************
  283. ** 생성자 함수. 인수:
  284. ** $params - 매개변수의 연관 배열:
  285. **
  286. ** 호스트 - smtp 서버의 호스트 이름 기본값: localhost
  287. ** port - smtp 서버가 실행하는 포트 on 기본값: 25
  288. ** helo - HELO 명령으로 보낼 내용 기본값: localhost
  289. ** (일반적으로 이 스크립트가 실행되는
  290. ** 시스템의 호스트 이름)
  291. ** auth - 기본 인증 사용 여부 기본값: FALSE
  292. ** user - 인증용 사용자 이름 기본값:
  293. ** pass - 인증용 비밀번호 기본값:
  294. ** timeout - 시간 제한 통화 시간 초 기본값: 5
  295. ** fsockopen()
  296. ********************************** ********/
  297. 함수 연결($ params = array()){
  298. if(!isset($this->status)){
  299. $obj = new smtp($params);
  300. if($obj-> connect()){
  301. $obj->status = SMTP_STATUS_CONNECTED;
  302. }
  303. return $obj;
  304. }else{
  305. $this->connection = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);
  306. socket_set_timeout($this->connection, 0, 250000);
  307. $greeting = $this->get_data();
  308. if(is_resource($this->connection)){
  309. return $this->auth ? $this->ehlo() : $this->helo();
  310. }else{
  311. $this->errors[] = '서버 연결 실패: '.$errstr;
  312. 거짓 반환;
  313. }
  314. }
  315. }
  316. /***************************************
  317. ** 메일 발송을 처리하는 기능입니다.
  318. ** 인수:
  319. ** $params - 매개변수의 선택적 연관 배열.
  320. ** 포함 가능:
  321. ** 수신자 - 수신자의 인덱스 배열
  322. ** from - 보낸 사람 주소. (MAIL FROM에서 사용됨,
  323. ** 이것이 반환 경로가 됩니다
  324. ** 헤더 - 인덱스 배열 헤더 수, 배열 항목당 하나의 헤더
  325. ** body - 이메일 본문
  326. ** 또한 connect()
  327. ** 함수
  328. ***의 매개변수를 포함할 수도 있습니다. ************************************/
  329. function send($params = array()){
  330. foreach($params as $key => $value) {
  331. $this->set($key, $value);
  332. }
  333. if($this->is_connected()){
  334. // 우리는 인증인지 아닌지? auth 변수와 auth() 함수의 차이점에 유의하세요
  335. if($this->auth){
  336. if(!$this->auth())
  337. return FALSE;
  338. }
  339. $this->mail($this->from);
  340. if(is_array($this->recipients))
  341. foreach($this->recipients($value) )
  342. $this->rcpt($value);
  343. else
  344. $this->rcpt($this->recipients);
  345. if(!$this-> ;data())
  346. return FALSE;
  347. // 투명성
  348. $headers = str_replace(CRLF.'.', CRLF.'..', Trim(implode(CRLF, $this- >headers))));
  349. $body = str_replace(CRLF.'.', CRLF.'..', $this->body);
  350. $body = $body[0] == ' .' ? '.'.$body : $body;
  351. $this->send_data($headers);
  352. $this->send_data('');
  353. $this->send_data ($body);
  354. $this->send_data('.');
  355. return (substr(trim($this->get_data()), 0, 3) === ' 250');
  356. }else{
  357. $this->errors[] = '연결되지 않음!';
  358. return FALSE;
  359. }
  360. }
  361. /* **************************************
  362. ** HELO cmd 구현 기능
  363. ***************************************/
  364. 함수 helo(){
  365. if(is_resource($this->connection)
  366. AND $this->send_data('HELO'.$this-> ;helo)
  367. AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){
  368. return TRUE;
  369. }else{
  370. $this->errors[] = 'HELO 명령이 실패했습니다. 출력: ' . Trim(substr(trim($error),3));
  371. return FALSE;
  372. }
  373. }
  374. /***************************************
  375. ** EHLO cmd 구현 기능
  376. ***************************************/
  377. 함수 ehlo (){
  378. if(is_resource($this->connection)
  379. AND $this->send_data('EHLO '.$this->helo)
  380. AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){
  381. TRUE를 반환합니다.
  382. }else{
  383. $this->errors[ ] = 'EHLO 명령이 실패했습니다. 출력: ' . Trim(substr(trim($error),3));
  384. return FALSE;
  385. }
  386. }
  387. /***************************************
  388. ** AUTH cmd 구현 기능
  389. ***************************************/
  390. 함수 인증 (){
  391. if(is_resource($this->connection)
  392. AND $this->send_data('AUTH LOGIN')
  393. AND substr(trim($error = $this->get_data ()), 0, 3) === '334'
  394. AND $this->send_data(base64_encode($this->user)) // 사용자 이름 보내기
  395. AND substr(trim($error = $this->get_data()),0,3) === '334'
  396. AND $this->send_data(base64_encode($this->pass)) // 비밀번호 보내기
  397. AND substr (trim($error = $this->get_data()),0,3) === '235' ){
  398. TRUE를 반환합니다.
  399. }else{
  400. $ this->errors[] = 'AUTH 명령이 실패했습니다: ' . Trim(substr(trim($error),3));
  401. return FALSE;
  402. }
  403. }
  404. /***************************************
  405. ** MAIL FROM을 처리하는 함수: cmd
  406. *****************************************/
  407. 함수 메일 ($from){
  408. if($this->is_connected()
  409. AND $this->send_data('MAIL FROM:<'.$from.'>')
  410. AND substr(trim($this->get_data()), 0, 2) === '250' ){
  411. TRUE를 반환하고,
  412. }else
  413. FALSE를 반환합니다. ;
  414. }
  415. /***************************************
  416. ** RCPT TO를 처리하는 함수: cmd
  417. *****************************************/
  418. function rcpt($to){
  419. if($this->is_connected()
  420. AND $this->send_data('RCPT TO:<'.$to.'>')
  421. AND substr(trim($error = $this->get_data()), 0, 2) === '25' ){
  422. TRUE를 반환합니다.
  423. }else{
  424. $this->errors[] = Trim(substr(trim($error), 3) );
  425. FALSE 반환;
  426. }
  427. }
  428. /***************************************
  429. ** DATA cmd를 보내는 함수
  430. *****************************************/
  431. 함수 데이터(){
  432. if($ this->is_connected()
  433. AND $this->send_data('DATA')
  434. AND substr(trim($error = $this->get_data()), 0, 3) === '354' ){
  435. TRUE를 반환합니다.
  436. }else{
  437. $this->errors[] = Trim(substr(trim($error), 3));
  438. 거짓 반환;
  439. }
  440. }
  441. /***************************************
  442. ** 이 개체인지 확인하는 기능
  443. ** 서버에 연결되어 있는지 여부
  444. ************************************ ***/
  445. 함수 is_connected(){
  446. return (is_resource($this->connection) AND ($this->status === SMTP_STATUS_CONNECTED));
  447. }
  448. /***************************************
  449. ** 데이터를 조금 보내는 기능
  450. *****************************************/
  451. function send_data($data){
  452. if(is_resource($this ->connection)){
  453. return fwrite($this->connection, $data.CRLF, strlen($data) 2);
  454. }else
  455. return FALSE;
  456. }
  457. /***************************************
  458. ** 데이터를 가져오는 기능입니다.
  459. ***************************************/
  460. function &get_data(){
  461. $return = '';
  462. $line = '';
  463. if(is_resource($this->connection)){
  464. while(strpos($return, CRLF) === FALSE OR substr($line,3,1) !== ' '){
  465. $ line = fgets($this->connection, 512);
  466. $return .= $line;
  467. }
  468. return $return;
  469. }else
  470. return FALSE;
  471. }
  472. /***************************************
  473. ** 변수를 설정합니다
  474. ** *************************************/
  475. 함수 집합($var, $value){
  476. $this->$var = $value;
  477. return TRUE;
  478. }
  479. } // 수업 종료
  480. ?>
复system代码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.