ランダムな文字列を取得する
- /*
- 関数: ランダムな文字列を取得します
- パラメータ:
- 1, (int)$length = 32 #ランダムな文字の長さ、デフォルトは 32
- 2, (int)$mode = 0 # ランダムな文字の種類、0 は大文字と小文字と数字、1 は数字、2 は小文字、3 は大文字、4 は大文字と小文字、5 は大文字と数字、6 は小文字と数字
- Return : 文字列の取得
- 使用:
- $code = new activeCodeObj;
- $str = $code->getCode($length, $mode);
- */
- class activeCodeObj
- {
- function getCode ($length = 32, $mode) ) = 0)
- {
- スイッチ ($mode) {
- case '1':
- $str = '1234567890';
- break;
- case '2':
- $str = 'abcdefghijklmnopqrstuvwxyz';
- break;
- case ' 3 ':
- $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- break;
- case '4':
- $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
- break;
- case '5':
- $str = 'ABCDEFGHIJK LMNOPQRSTUVWX YZ1234567890';
- 休憩;
- case ' 6':
- $str = 'abcdefghijklmnopqrstuvwxyz1234567890';
- break;
- default:
- $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
- break;
- }
-
- $result = '';
- $l = strlen($str);
-
- for($i = 0;$i $num = rand(0, $l);
- $result .= $str[$num];
- }
- return $result ;
- }
- }
- クライアント情報の取得
-
- /*
- Function: クライアント情報の取得
- Parameters:
- Return: 指定された情報
- Usage:
- $code = new clientGetObj;
- 1. ブラウザ: $str = $ code- >getBrowse();
- 2. IP アドレス: $str = $code->getIP();
- 4. オペレーティング システム: $str = $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 if(strpos($Agent, $Browsers[$i])){
- $browser = $Browsers[$i];
- $browserver = '';
- }
- }
- if(ereg('Mozilla', $ Agent) && !ereg('MSIE', $Agent)){
- $temp =explode('(', $Agent);
- $Part = $temp[0];
- $temp =explode('/', $Part) ;
- $browserver = $temp[1];
- $temp =explode(' ', $browserver);
- $browserver = $temp[0];
- $browserver = preg_replace('/([d.]+ )/ ', '1', $browserver);
- $browserver = $browserver;
- $browser = 'Netscape Navigator';
- }
- if(ereg('Mozilla', $Agent) && ereg('Opera', $ Agent) ) {
- $temp =explode('(', $Agent);
- $Part = $temp[1];
- $temp =explode(')', $Part);
- $browserver = $temp[1 ];
- $temp =explode(' ', $browserver);
- $browserver = $temp[2];
- $browserver = preg_replace('/([d.]+)/', '1', $browserver) ;
- $browserver = $browserver;
- $browser = 'Opera';
- }
- if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)){
- $temp =explode('( ', $Agent);
- $Part = $temp[1];
- $temp =explode(';', $Part);
- $Part = $temp[1];
- $temp =explode(' ', $Part) ;
- $browserver = $temp[2];
- $browserver = preg_replace('/([d.]+)/','1',$browserver);
- $browserver = $browserver;
- $browser = 'インターネット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'];
- }
- return $ip;
- }
-
- function getOS ()
- {
- global $_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 (ereg('BSD', $agent)){
- $os = 'BSD';
- }
- else if (ereg('OSF1', $agent)){
- $os = 'OSF1';
- }
- else if (ereg('IRIX', $agent)){
- $os = 'IRIX';
- }
- else if (ereg('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('offline', $agent)){
- $os = 'offline';
- }
- else {
- $os = 'Unknown';
- }
- return $os;
- }
-
- }
-
- //修改自q3boy
- class cnStrObj
- {
- ''$function = $tstr = star , $len = ' '){
- if($start == 0 || $start == ''){
- $start = 1;
- }
- if($str == '' || $len == ' '){
- return false;
- }
- for($i = 0; $i $tmpstr = (ord($str[$i]) >= 161 && ord($ str[$i]) = 161 && ord($str[$i+1]) if ($i >= $start && $i < ($start + $len))
- {
- $tmp .=$tmpstr;
- }
- }
- return $tmp;
- }
- 関数 isGB ($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) ){
- $legalflag = false;
- } else {
- $legalflag = true;
- }
- }
- return $legalflag;
- }
- }
-
- //
-
- define('SMTP_STATUS_NOT_CONNECTED', 1, TRUE);
- define ('SMTP_STATUS_CONNECTED', 2, TRUE);
-
- class smtp{
-
- var $connection;
-
- var $connection; var $timeout ;
- var $errors;
- var $status;
- var $body;
- var $from ;
- var $host;
- var $port;
- var $helo;
- var $auth;
- var $user;
- var $pass ;
-
- /***************************************
- ** ファイル名......: クラス.smtp.inc
- ** プロジェクト....: SMTP クラス
- ** バージョン....: 1.00b
- ** 最終更新日..: 2001 年 9 月 30 日
- **** **********************************/
-
- function smtp($params = array ()){
-
- if(!define('CRLF'))
- define('CRLF', "rn", TRUE);
-
- $this->タイムアウト = 5;
- $this->ステータス = SMTP_STATUS_NOT_CONNECTED ;
- $this->ホスト = 'localhost';
- $this->ポート = 25;
- $this->thelo> = 'localhost';
- $this->auth = FALSE;
- $this- >user = '';
- $this->pass = '';
- $this->errors = array();
-
- foreach($params as $key => $value){
- $this->$key = $value;
- }
- }
-
- /****************************************
- ** コンストラクター関数。引数:
- ** $params - パラメータの連想配列:
- **
- ** host - SMTP サーバーのホスト名 デフォルト: localhost
- ** port - SMTP サーバーが実行されるポート デフォルト: 25
- ** helo - HELO コマンドとして送信するもの デフォルト: localhost
- ** (通常、このスクリプトが実行される
- ** マシンのホスト名)
- ** auth - 基本認証を使用するかどうか デフォルト: FALSE
- ** user - 認証用のユーザー名デフォルト:
- ** pass - 認証用のパスワード デフォルト:
- ** timeout - 呼び出しのタイムアウト (秒) デフォルト: 5
- ** to fsockopen()
- ******* *******************************/
-
- function connect($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;
- return FALSE;
- }
- }
- }
-
- /****************************************
- ** メールの送信を処理する関数。
- **引数:
- ** $params - パラメータのオプションの関連配列
- ** 含めることができます:
- ** 受信者 - 受信者のインデックス付き配列
- ** from - 送信元アドレス。 (MAIL FROM で使用)、
- ** これはリターン パスになります
- ** headers - ヘッダーのインデックス付き配列、1 つ配列エントリごとのヘッダー
- ** 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->受信者))
- foreach($this->受信者を $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を実装する関数
- **** **********************************/
-
- function 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 コマンドが失敗しました。出力: ' 。トリム(substr(trim($error),3));
- return FALSE;
- }
- }
-
- /****************************************
- ** EHLO cmdを実装する関数
- **** **********************************/
-
- function ehlo(){
- if(is_resource($this->connection )
- AND $this->send_data('EHLO '.$this->helo)
- AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){
-
- return TRUE;
-
- }else{
- $this->errors[] = 'EHLO コマンドが失敗しました。出力: ' 。トリム(substr(trim($error),3));
- return FALSE;
- }
- }
-
- /****************************************
- ** AUTH cmdを実装する関数
- **** **********************************/
-
- function auth(){
- 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' ){
-
- return TRUE;
-
- }else{
- $this->errors[] = 'AUTH コマンドが失敗しました: ' 。トリム(substr(trim($error),3));
- return FALSE;
- }
- }
-
- /****************************************
- ** MAIL FROM を処理する関数: cmd
- * *************************************/
-
- function mail($from){
-
- if($this-> is_connected()
- AND $this->send_data('MAIL FROM:<'.$from.'>')
- AND substr(trim($this->get_data()), 0, 2) == = '250' ){
-
- return TRUE;
-
- }else
- return 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' ){
-
- return TRUE;
-
- }else{
- $this->errors[] = トリム(substr(trim($error), 3));
- return FALSE;
- }
- }
-
- /****************************************
- ** DATA cmdを送信する関数
- *** ***********************************/
-
- function data(){
-
- if($this->is_connected()
- AND $this->send_data('DATA')
- AND substr(trim($error = $this->get_data()), 0, 3) === '354' ){
-
- return TRUE;
-
- }else{
- $this->errors[] = トリム(substr(trim($エラー)、3));
- FALSE を返す;
- }
- }
-
- /****************************************
- ** このオブジェクト
- ** がサーバーに接続されているかどうか。
- ***************************************/
-
- function 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;
- }
-
- /****************************************
- ** 変数を設定します
- ****** ********************************/
-
- function set($ var, $value){
-
- $this->$var = $value;
- return TRUE;
- }
-
- } // 授業終了
- ?>
-
复制代
|