임의의 문자열 가져오기
- /*
- 기능: 임의의 문자열 가져오기
- 매개변수:
- 1, (int)$length = 32 #Random 문자 길이, 기본값은 32
- 2, (int)$mode = 0 #임의의 문자형, 0은 대문자, 소문자 영어와 숫자, 1은 숫자, 2는 소문자, 3은 대문자, 4는 대문자, 소문자 letter , 5는 대문자와 숫자, 6은 소문자와 숫자
- 반환: 얻은 문자열
- 사용:
- $code = new activeCodeObj;
- $str = $code->getCode( $ length, $mode);
- */
- class activeCodeObj
- {
- function getCode($length = 32, $mode = 0)
- {
- switch($mode) {
- case '1':
- $str = '1234567890';
- break;
- case '2':
- $str = 'abcdefghijklmnopqrstuvwxyz';
- break;
- case ' 3':
- $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- break;
- case '4':
- $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
- break;
- case '5':
- $ Str = 'ABCDEFGHIJKLMNOPQRSNOPQRSTUVWXYZ1234567890';
- 중단;
- 사례 '6':
- '; 기본값:
- $ Str =' ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn opqrstuvwxyz1234567890';
- break;
- }
-
- $result = '';
- $l = strlen($str);
-
- for($i = 0;$ i < $length; $i ){
- $num = rand(0, $l);
- $result .= $str[$num];
- }
- return $result;
- }
- }
- 클라이언트 정보 가져오기
- /*
- 기능: 클라이언트 정보 가져오기
- 매개변수:
- 반환: 지정된 데이터
- 사용:
- $code = new clientGetObj;
- 1. 브라우저: $str = $code->getBrowse();
- 2. IP 주소: $str = $code->getIP();
- 4. code->getOS();
- */
-
- class clientGetObj
- {
- function getBrowse()
- {
- global $_SERVER;
- $Agent = $ _SERVER['HTTP_USER_AGENT'];
- $browser = '';
- $browserver = '';
- $Browser = array('Lynx', 'MOSAIC' , 'AOL', 'Opera', ' JAVA', 'MacWeb', 'WebExplorer', 'OmniWeb');
- for($i = 0; $i <= 7; $i ){
- if(strpos($Agent, $Browsers[ $i])){
- $browser = $Browsers[$i];
- $browserver = '';
- }
- }
- if (ereg('Mozilla', $Agent) && !ereg('MSIE', $Agent)){
- $temp = 폭발('(', $Agent);
- $Part = $temp[0] ;
- $temp = 폭발(' /', $Part);
- $browserver = $temp[1];
- $temp = 폭발(' ', $browserver);
- $browserver = $temp[0];
- $ browserver = preg_replace('/([d.] )/', '1', $browserver);
- $browserver = $browserver;
- $browser = 'Netscape Navigator';
- }
- if(ereg('Mozilla', $Agent) && ereg('Opera', $Agent)) {
- $temp = 폭발('(', $Agent);
- $Part = $temp[1] ;
- $temp = 폭발(')', $Part);
- $browserver = $temp[1];
- $temp = 폭발(' ', $browserver);
- $browserver = $temp[2];
- $browserver = preg_replace('/([d.] )/', '1', $browserver);
- $browserver = $ browserver;
- $browser = 'Opera ';
- }
- if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)){
- $temp =explore( '(', $Agent);
- $Part = $temp[1];
- $temp = 폭발(';', $Part);
- $Part = $temp[1];
- $temp = 폭발(' ', $ 부분);
- $browserver = $temp[2];
- $browserver = preg_replace('/([d.] )/','1',$browserver );
- $browserver = $browserver ;
- $browser = 'Internet Explorer';
- }
- if($browser != ''){
- $browseinfo = $browser.' ' .$browserver;
- } else {
- $browseinfo = false;
- }
- return $browseinfo;
- }
- function getIP()
- {
- global $_SERVER;
- if(getenv ('HTTP_CLIENT_IP')) {
- $ip = getenv('HTTP_CLIENT_IP');
- } else if (getenv('HTTP_X_FORWARDED_FOR')) {
- $ip = getenv('HTTP_X_FORWARDED_FOR');
- } else if (getenv('REMOTE_ADDR')) {
- $ip = getenv('REMOTE_ADDR');
- } else {
- $ip = $_SERVER ['REMOTE_ADDR'];
- }
- $ip 반환
- }
- 함수 getOS()
- {
- 전역 $_SERVER;
- $agent = $_SERVER ['HTTP_USER_AGENT'];
- $ os = false;
- if (eregi('win', $agent) && strpos($agent, '95')){
- $os = 'Windows 95' ;
- }
- else if (eregi('win 9x', $agent) && strpos($agent, '4.90')){
- $os = 'Windows ME';
- }
- else if (eregi('win', $agent) && ereg('98', $agent)){
- $os = 'Windows 98';
- }
- else if (eregi('win ', $agent) && eregi('nt 5.1', $agent)){
- $os = 'Windows XP';
- }
- else if (eregi('win', $agent) && eregi ('nt 5', $agent )){
- $os = 'Windows 2000';
- }
- else if (eregi('win', $agent) && eregi('nt', $agent )){
- $os = 'Windows NT';
- }
- else if (eregi('win', $agent) && ereg('32', $agent)){
- $os = 'Windows 32';
- }
- else if (eregi('linux', $agent)){
- $os = 'Linux';
- }
- else if (eregi(' unix', $agent)){
- $os = 'Unix';
- }
- else if (eregi('sun', $agent) && eregi('os', $agent)){
- $os = 'SunOS' ;
- }
- else if (eregi('ibm', $agent) && eregi('os', $agent)){
- $os = 'IBM OS/ 2';
- }
- else if (eregi('Mac', $agent) && eregi('PC', $agent)){
- $os = 'Macintosh';
- }
- else if (eregi('PowerPC', $agent)){
- $os = 'PowerPC';
- }
- else if (eregi('AIX', $agent)){
- $os = 'AIX';
- }
- else if (eregi('HPUX', $agent)){
- $os = 'HPUX';
- }
- else if (eregi ('NetBSD', $agent)){
- $os = 'NetBSD';
- }
- else if (eregi('BSD', $agent)){
- $os = 'BSD' ;
- }
- else if (ereg('OSF1', $agent)){
- $os = 'OSF1';
- }
- else if (ereg('IRIX', $agent) ) )){
- $os = 'IRIX';
- }
- else if (eregi('FreeBSD', $agent)){
- $os = 'FreeBSD';
- }
- else if (eregi('teleport', $agent)){
- $os = 'teleport';
- }
- else if (eregi('flashget', $agent)){
- $ os = 'flashget';
- }
- else if (eregi('webzip', $agent)){
- $os = 'webzip';
- }
- else if (eregi( ' 오프라인', $agent)){
- $os = '오프라인';
- }
- else {
- $os = '알 수 없음';
- }
- $os를 반환합니다.
- }
- }
- //修改自q3boy
- class cnStrObj
- {
- function substrGB($str = '', $start = '', $len = ''){
- if($start == 0 || $start == ''){
- $start = 1;
- }
- if($str == '' || $ len == ''){
- false 반환;
- }
- for($i = 0; $i < $start $len; $i ){
- $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];
- if ($i >= $start && $i < ($start $len))
- {
- $tmp .=$tmpstr;
- }
- }
- return $tmp;
- }
- 함수는GB($ str)
- {
- $strLen = strlen($str);
- $length = 1;
- for($i = 0; $i < $strLen; $i ) {
- $tmpstr = ord(substr($str, $i, 1));
- $tmpstr2 = ord(substr($str, $i 1, 1));
- if(($tmpstr <= 161 || $tmpstr >= 247) && ($tmpstr2 <= 161 || $tmpstr2 >= 247)){
- $legaflag = false;
- } else {
- $legaflag = true;
- }
- }
- return $legalflag;
- }
- }
-
- // >
- define('SMTP_STATUS_NOT_CONNECTED', 1, TRUE);
- define ('SMTP_STATUS_CONNECTED', 2, TRUE);
-
- class smtp{
-
- $nexion; >var $recipients;
- var $headers;
- var $timeout;
- var $errors;
- var $status;
- var $body;
- var $from;
- var $host;
- var $port;
- var $helo;
- var $auth;
- var $user;
- var $pass;
-
- /***************************************
- ** 파일명...... : class.smtp.inc
- ** 프로젝트........: SMTP 클래스
- ** 버전........: 1.00b
- ** 최종 수정..: 2001년 9월 30일
- ***************************************/
-
- 함수 smtp($params = array()){
-
- if(!define('CRLF'))
- define('CRLF', "rn", TRUE );
-
- $this->timeout = 5;
- $this ->status = SMTP_STATUS_NOT_CONNECTED;
- $this->host = 'localhost';
- $this-> ;port = 25;
- $this->helo = 'localhost';
- $this->auth = FALSE;
- $this->user = '';
- $this- >pass = '';
- $this->errors = array();
-
- foreach($params를 $key => $value){
- $this->$key = $value;
- }
- }
-
- /***************************************
- ** 생성자 함수. 인수:
- ** $params - 매개변수의 연관 배열:
- **
- ** 호스트 - smtp 서버의 호스트 이름 기본값: localhost
- ** port - smtp 서버가 실행하는 포트 on 기본값: 25
- ** helo - HELO 명령으로 보낼 내용 기본값: localhost
- ** (일반적으로 이 스크립트가 실행되는
- ** 시스템의 호스트 이름)
- ** auth - 기본 인증 사용 여부 기본값: FALSE
- ** user - 인증용 사용자 이름 기본값:
- ** pass - 인증용 비밀번호 기본값:
- ** timeout - 시간 제한 통화 시간 초 기본값: 5
- ** fsockopen()
- ********************************** ********/
-
- 함수 연결($ params = array()){
-
- if(!isset($this->status)){
- $obj = new smtp($params);
- if($obj-> connect()){
- $obj->status = SMTP_STATUS_CONNECTED;
- }
-
- return $obj;
-
- }else{
- $this->connection = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);
- socket_set_timeout($this->connection, 0, 250000);
-
- $greeting = $this->get_data();
- if(is_resource($this->connection)){
- return $this->auth ? $this->ehlo() : $this->helo();
- }else{
- $this->errors[] = '서버 연결 실패: '.$errstr;
- 거짓 반환;
- }
- }
- }
-
- /***************************************
- ** 메일 발송을 처리하는 기능입니다.
- ** 인수:
- ** $params - 매개변수의 선택적 연관 배열.
- ** 포함 가능:
- ** 수신자 - 수신자의 인덱스 배열
- ** from - 보낸 사람 주소. (MAIL FROM에서 사용됨,
- ** 이것이 반환 경로가 됩니다
- ** 헤더 - 인덱스 배열 헤더 수, 배열 항목당 하나의 헤더
- ** body - 이메일 본문
- ** 또한 connect()
- ** 함수
- ***의 매개변수를 포함할 수도 있습니다. ************************************/
-
- function send($params = array()){
-
- foreach($params as $key => $value) {
- $this->set($key, $value);
- }
-
- if($this->is_connected()){
-
- // 우리는 인증인지 아닌지? auth 변수와 auth() 함수의 차이점에 유의하세요
- if($this->auth){
- if(!$this->auth())
- return FALSE;
- }
-
- $this->mail($this->from);
- if(is_array($this->recipients))
- foreach($this->recipients($value) )
- $this->rcpt($value);
- else
- $this->rcpt($this->recipients);
-
- if(!$this-> ;data())
- return FALSE;
-
- // 투명성
- $headers = str_replace(CRLF.'.', CRLF.'..', Trim(implode(CRLF, $this- >headers))));
- $body = str_replace(CRLF.'.', CRLF.'..', $this->body);
- $body = $body[0] == ' .' ? '.'.$body : $body;
-
- $this->send_data($headers);
- $this->send_data('');
- $this->send_data ($body);
- $this->send_data('.');
-
- return (substr(trim($this->get_data()), 0, 3) === ' 250');
- }else{
- $this->errors[] = '연결되지 않음!';
- return FALSE;
- }
- }
-
- /* **************************************
- ** HELO cmd 구현 기능
- ***************************************/
-
- 함수 helo(){
- if(is_resource($this->connection)
- AND $this->send_data('HELO'.$this-> ;helo)
- AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){
-
- return TRUE;
-
- }else{
- $this->errors[] = 'HELO 명령이 실패했습니다. 출력: ' . Trim(substr(trim($error),3));
- return FALSE;
- }
- }
-
- /***************************************
- ** EHLO cmd 구현 기능
- ***************************************/
-
- 함수 ehlo (){
- if(is_resource($this->connection)
- AND $this->send_data('EHLO '.$this->helo)
- AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){
-
- TRUE를 반환합니다.
-
- }else{
- $this->errors[ ] = 'EHLO 명령이 실패했습니다. 출력: ' . Trim(substr(trim($error),3));
- return FALSE;
- }
- }
-
- /***************************************
- ** AUTH cmd 구현 기능
- ***************************************/
-
- 함수 인증 (){
- if(is_resource($this->connection)
- AND $this->send_data('AUTH LOGIN')
- AND substr(trim($error = $this->get_data ()), 0, 3) === '334'
- AND $this->send_data(base64_encode($this->user)) // 사용자 이름 보내기
- AND substr(trim($error = $this->get_data()),0,3) === '334'
- AND $this->send_data(base64_encode($this->pass)) // 비밀번호 보내기
- AND substr (trim($error = $this->get_data()),0,3) === '235' ){
-
- TRUE를 반환합니다.
-
- }else{
- $ this->errors[] = 'AUTH 명령이 실패했습니다: ' . Trim(substr(trim($error),3));
- return FALSE;
- }
- }
-
- /***************************************
- ** MAIL FROM을 처리하는 함수: cmd
- *****************************************/
-
- 함수 메일 ($from){
-
- if($this->is_connected()
- AND $this->send_data('MAIL FROM:<'.$from.'>')
- AND substr(trim($this->get_data()), 0, 2) === '250' ){
-
- TRUE를 반환하고,
-
- }else
- FALSE를 반환합니다. ;
- }
-
- /***************************************
- ** RCPT TO를 처리하는 함수: cmd
- *****************************************/
-
- function rcpt($to){
-
- if($this->is_connected()
- AND $this->send_data('RCPT TO:<'.$to.'>')
- AND substr(trim($error = $this->get_data()), 0, 2) === '25' ){
-
- TRUE를 반환합니다.
-
- }else{
- $this->errors[] = Trim(substr(trim($error), 3) );
- FALSE 반환;
- }
- }
-
- /***************************************
- ** DATA cmd를 보내는 함수
- *****************************************/
-
- 함수 데이터(){
-
- if($ this->is_connected()
- AND $this->send_data('DATA')
- AND substr(trim($error = $this->get_data()), 0, 3) === '354' ){
-
- TRUE를 반환합니다.
-
- }else{
- $this->errors[] = Trim(substr(trim($error), 3));
- 거짓 반환;
- }
- }
-
- /***************************************
- ** 이 개체인지 확인하는 기능
- ** 서버에 연결되어 있는지 여부
- ************************************ ***/
-
- 함수 is_connected(){
-
- return (is_resource($this->connection) AND ($this->status === SMTP_STATUS_CONNECTED));
- }
-
- /***************************************
- ** 데이터를 조금 보내는 기능
- *****************************************/
-
- function send_data($data){
-
- if(is_resource($this ->connection)){
- return fwrite($this->connection, $data.CRLF, strlen($data) 2);
- }else
- return FALSE;
- }
-
- /***************************************
- ** 데이터를 가져오는 기능입니다.
- ***************************************/
-
- function &get_data(){
-
- $return = '';
- $line = '';
-
- if(is_resource($this->connection)){
- while(strpos($return, CRLF) === FALSE OR substr($line,3,1) !== ' '){
- $ line = fgets($this->connection, 512);
- $return .= $line;
- }
- return $return;
-
- }else
- return FALSE;
- }
-
- /***************************************
- ** 변수를 설정합니다
- ** *************************************/
-
- 함수 집합($var, $value){
-
- $this->$var = $value;
- return TRUE;
- }
-
- } // 수업 종료
- ?>
-
复system代码
|