最近取り組んでいたプロジェクトを終えたばかりで、とても自由です。ここに来て、私が蓄積してきたスキルの一部をあなたと共有してください!
1. PHP リダイレクト方法 1 について: header("Location:index.php");
方法 2: echo "<script>window.location ="$PHP_SELF";</script>";
方法 3: echo "<META HTTP-EQUIV="Refresh" CONTENT="0;
2. 訪問者のブラウザを取得します。
関数browse_infor() {
$browser="";$browserver="";
$Browsers =array("Lynx","MOSAIC","AOL","Opera","JAVA","MacWeb","WebExplorer","OmniWeb");
$Agent = $GLOBALS["HTTP_USER_AGENT"];
for ($i=0; $i<=7; $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 = "オペラ";
}
if (ereg("Mozilla",$Agent) && ereg("MSIE",$Agent)) {
$temp =explode("(", $Agent); $Part=$temp[1];
$temp =explode(";",$Part);
$temp =explode(" ",$Part);$browserver=$temp[2];
$browserver =preg_replace("/([d.]+)/"," \1",$browserver );
$browserver = " $browserver";
$browser = "Internet Explorer";
}
if ($browser!="") {
$browseinfo = "$browser$browserver";
}それ以外 {
$browseinfo = "不明";
}
$browseinfo を返します。
}
//メソッド $browser=browseinfo() を呼び出し、結果を直接返します
3. 訪問者のオペレーティング システムを取得します。
関数 osinfo() {
$os="";
$Agent = $GLOBALS["HTTP_USER_AGENT"];
if (eregi('win',$Agent) && strpos($Agent, '95')) {
$os="Windows 95";
}
elseif (eregi('win 9x',$Agent) && strpos($Agent, '4.90')) {
$os="Windows ME";
}
elseif (ereg('win',$Agent) && ereg('98',$Agent)) {
$os="Windows 98";
}
elseif (eregi('win',$Agent) && eregi('nt 5.0',$Agent)) {
$os="Windows 2000";
}
elseif (eregi('win',$Agent) && eregi('nt',$Agent)) {
$os="Windows NT";
}
elseif (eregi('win',$Agent) && eregi('nt 5.1',$Agent)) {
$os="Windows XP";
}
elseif (ereg('win',$Agent) && ereg('32',$Agent)) {
$os="Windows 32";
}
elseif (eregi('linux',$Agent)) {
$os="Linux";
}
elseif (eregi('unix',$Agent)) {
$os="Unix";
}
elseif (eregi('sun',$Agent) && eregi('os',$Agent)) {
$os="SunOS";
}
elseif (eregi('ibm',$Agent) && eregi('os',$Agent)) {
$os="IBM OS/2";
}
elseif (eregi('Mac',$Agent) && eregi('PC',$Agent)) {
$os="マッキントッシュ";
}
elseif (eregi('PowerPC',$Agent)) {
$os="PowerPC";
}
elseif (eregi('AIX',$Agent)) {
$os="AIX";
}
elseif (eregi('HPUX',$Agent)) {
$os="HPUX";
}
elseif (eregi('NetBSD',$Agent)) {
$os="NetBSD";
}
elseif (eregi('BSD',$Agent)) {
$os="BSD";
}
elseif (ereg('OSF1',$Agent)) {
$os="OSF1";
}
elseif (ereg('IRIX',$Agent)) {
$os="アイリックス";
}
elseif (eregi('FreeBSD',$Agent)) {
$os="FreeBSD";
}
if ($os=='') $os = "不明";
$os を返します。
}
//呼び出しメソッド $os=os_infor();
4. ファイル形式クラス
$mime_types = array(
'gif' => '画像/gif',
'jpg' => '画像/jpeg',
'jpeg' => '画像/jpeg',
'jpe' => '画像/jpeg',
'bmp' => '画像/bmp',
'png' => '画像/png',
'tif' => '画像/tiff',
'tiff' => '画像/tiff',
'pict' => 'image/x-pict',
'pic' => 'image/x-pict',
'pct' => 'image/x-pict',
'tif' => '画像/tiff',
'tiff' => '画像/tiff',
'psd' => 'image/x-photoshop'、
'swf' => 'application/x-shockwave-flash'、
'js' => 'application/x-javascript',
'pdf' => 'アプリケーション/pdf',
'ps' => 'アプリケーション/追記',
'eps' => 'アプリケーション/追記',
'ai' => 'アプリケーション/追記',
'wmf' => 'application/x-msmetafile'、
'css' => 'text/css'、
'htm' => 'テキスト/html',
'html' => 'テキスト/html',
'txt' => 'テキスト/プレーン',
'xml' => 'テキスト/xml',
'wml' => 'テキスト/wml',
'wbmp' => 'image/vnd.wap.wbmp'、
'mid' => 'audio/midi'、
'wav' => 'オーディオ/wav',
'mp3' => 'オーディオ/mpeg',
'mp2' => 'オーディオ/mpeg'、
'avi' => 'ビデオ/x-msvideo'、
'mpeg' => 'ビデオ/mpeg',
'mpg' => 'ビデオ/mpeg',
'qt' => 'ビデオ/クイックタイム',
'mov' => 'video/quicktime'、
'lha' => 'application/x-lha'、
'lzh' => 'アプリケーション/x-lha',
'z' => 'アプリケーション/x-compress',
'gtar' => 'アプリケーション/x-gtar',
'gz' => 'application/x-gzip',
'gzip' => 'application/x-gzip',
'tgz' => 'application/x-gzip',
'tar' => 'アプリケーション/x-tar',
'bz2' => 'アプリケーション/bzip2',
'zip' => 'アプリケーション/zip',
'arj' => 'アプリケーション/x-arj',
'rar' => 'application/x-rar-compressed'、
'hqx' => 'application/mac-binhex40'、
'sit' => 'application/x-stuffit',
'bin' => 'application/x-macbinary'、
'uu' => 'text/x-uuencode'、
'uue' => 'text/x-uuencode'、
'latex' => 'application/x-latex'、
'ltx' => 'アプリケーション/x-latex',
'tcl' => 'アプリケーション/x-tcl'、
'pgp' => 'アプリケーション/pgp'、
'asc' => 'アプリケーション/pgp',
'exe' => 'application/x-msdownload',
'doc' => 'アプリケーション/msword',
'rtf' => 'アプリケーション/rtf',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',
'mdb' => 'アプリケーション/x-msaccess',
'wri' => 'application/x-mswrite',
);
5. php
<?
で Excel ドキュメントを生成します。
header("コンテンツタイプ:アプリケーション/vnd.ms-excel");
header("Content-Disposition:filename=test.xls");
エコー「test1t」;
エコー「test2tn」;
エコー「test1t」;
エコー「test2tn」;
エコー「test1t」;
エコー「test2tn」;
エコー「test1t」;
エコー「test2tn」;
エコー「test1t」;
エコー「test2tn」;
エコー「test1t」;
エコー「test2tn」;
?>
// 対応するファイル ヘッダーを
.doc などの出力ファイル形式に変更します。
方法 1:
//$db->rows[$i][date] はデータベース内の日時フィールドの値です。
$today=time();
$theDay=date("Ymd H:i:s",$today-24*3600);
$newTag=$db->rows[$i][date]>=$theDay?"<img src='../image/newinfor.gif'>":"";
方法 2:
$newTag=$db->rows[$i][date]>=date("Ymd 00:00:00")?"<img src='../image/newinfor.gif'>":"";
7. データベースのカプセル化の例
<?php
//------------------------------------------------ ------------------------------------------
// ※Database()コンストラクタ、データベース初期パラメータ
// ※Select()クエリ
// ※GetRows()はクエリされたレコードの総数を返します
// ※Insert() レコードを挿入
// ※Update() 更新
// ※Delete() 削除
// ※Halt()は中断してエラーメッセージを表示します*/
//------------------------------------------------ ------------------------------------------
define("DATABASETYPE","1"); //データベースの種類を定義します。1 は MySql、3 は Oracle、4 は Odbc です。
define("SERVER","localhost"); //データベースサーバーのホスト名またはIPアドレス
define("DATABASE","dbName"); //接続するデータベースの名前
define("USER","tableName"); //データベースへの接続に使用するユーザー名
define("PASSWORD","paswd"); //データベースへの接続に使用するパスワード
クラスデータベース{
var $dbLink //接続ハンドル;
var $result; //クエリハンドル
var $insId; //Insert() は AUTO_INCREMENT 列の値を正常に返します。
var $rows; // データ配列を返します。
var $numRows // データの数を返します。
var $dbHost、$dbUser、$userPassword、$database;
var $dbType=DATABASETYPE;
var $msgFlag = "yes" ; //yes:Mysql メッセージを表示 ; no: show "Halted" によって終了します。
関数データベース($dbHost=SERVER,$dbUser=USER,$userPassword=PASSWORD,$database=DATABASE){
switch($this->dbType){
ケース1:
$this->dbLink=@mysql_pconnect($dbHost,$dbUser,$userPassword);// または die("リモート ホストに接続できません!");
@mysql_select_db($database,$this->dbLink);// または die ("リモート ホストに接続できません!");
壊す;
ケース 2:
壊す;
}
true を返します。
}
/*SQL:Select() は false を返し、結果はありません*/
関数 Select($table,$columns,$condition=1){
$sql="$condition の $table から $columns を選択 ";
//エコー $sql."<br>";
$this->result=@mysql_query($sql,$this->dbLink);
unset($this->rows);
if($this->result){
$i=0;
if(!($this->rows=array("$i"=>@mysql_fetch_array($this->result))))
false を返します。
if(($this->numRows=@mysql_num_rows($this->result))==0)
false を返します。
while( $tempRows=@mysql_fetch_array($this->result )){
array_push($this->rows,$tempRows);
}
}それ以外{
$this->Halt($sql);
false を返します。
}
true を返します。
}
/*SQL:GetRows() はクエリされたレコードの合計数を返します*/
関数 GetRows($table,$condition=1){
$sql="select count(1) as count from $table where $condition";
//エコー $sql."<br>";
$this->result=@mysql_query($sql,$this->dbLink);
if($this->result){
$temp=@mysql_fetch_array($this->result );
$this->numRows=$temp[カウント];
}それ以外{
$this->Halt($sql);
false を返します。
}
$this->numRows を返します。
}
/*SQL:Insert()*/
関数 Insert($table,$columns,$values){
$sql="$table ($columns) 値 ($values) に挿入";
// $sql をエコー;
$this->result=@mysql_query($sql,$this->dbLink);
if ($this->結果)
$this->insId=@mysql_insert_id($this->dbLink);
それ以外{
$this->Halt($sql);
false を返します。
}
true を返します。
/
*SQL:Update()*/
関数 Update($table,$settings,$condition){
$sql="update $table set $settings where $condition";
// $sql をエコー;
$this->result=@mysql_query($sql,$this->dbLink);
if ($this->結果)
$this->numRows=@mysql_affected_rows($this->result);
それ以外{
$this->Halt($sql);
false を返します。
}
true を返します。
/
*SQL:削除*/
関数削除($テーブル,$条件){
$sql="$condition の $table から削除";
$this->result=@mysql_query($sql,$this->dbLink);
if ($this->結果)
$this->numRows=@mysql_affected_rows($this->result);
それ以外{
$this->Halt($sql);
false を返します。
}
true を返します。
}
/*Halt():エラーメッセージ */
関数停止($msg){
if($this->msgFlag=="はい"){
printf("<b>データベース クエリ エラー:</b> %s<br>n", $msg);
printf("<b>MySql エラー:</b> %s<br>n",mysql_error());
}それ以外
echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=../include/error.htm'>";//エラー メッセージ ファイルをカスタマイズする
false を返します。
}
}
switch($db->dbType){
ケース1:
@mysql_close();
壊す;
ケース 2:
壊す;
}
$db = 新しいデータベース();
?>