나는 최근에 진행하고 있던 프로젝트를 막 끝냈고 꽤 자유로워졌습니다. 여기로 오셔서 제가 축적한 기술을 여러분과 공유해 보세요!
1. PHP 리디렉션 방법 1에 관하여: header("Location: index.php");
방법 2: echo "<script>window.location ="$PHP_SELF";</script>";
방법 3: echo "<META HTTP-EQUIV="Refresh" CONTENT="0; URL=index.php">"
2. 방문자의 브라우저를 가져옵니다.
함수 browser_infor() {
$browser="";$browserver="";
$Browsers =array("Lynx","MOSAIC","AOL","Opera","JAVA","MacWeb","WebExplorer","OmniWeb");
$Agent = $GLOBALS["HTTP_USER_AGENT"];
($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 = "넷스케이프 네비게이터";
}
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 = 폭발("(", $Agent); $Part=$temp[1];
$temp = 폭발(";",$Part); $Part=$temp[1];
$temp = 폭발(" ",$Part);$browserver=$temp[2];
$browserver =preg_replace("/([d.]+)/"," \1",$browserver );
$browserver = " $browserver";
$browser = "인터넷 익스플로러";
}
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="윈도우 95";
}
elseif (eregi('win 9x',$Agent) && strpos($Agent, '4.90')) {
$os="윈도우 ME";
}
elseif (eregi('win',$Agent) && ereg('98',$Agent)) {
$os="윈도우 98";
}
elseif (eregi('win',$Agent) && eregi('nt 5.0',$Agent)) {
$os="윈도우 2000";
}
elseif (eregi('win',$Agent) && eregi('nt',$Agent)) {
$os="윈도우 NT";
}
elseif (eregi('win',$Agent) && eregi('nt 5.1',$Agent)) {
$os="윈도우 XP";
}
elseif (eregi('win',$Agent) && ereg('32',$Agent)) {
$os="윈도우 32";
}
elseif (eregi('linux',$Agent)) {
$os="리눅스";
}
elseif (eregi('unix',$Agent)) {
$os="유닉스";
}
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="파워PC";
}
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="IRIX";
}
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' => '이미지/x-pict',
'pic' => '이미지/x-pict',
'pct' => '이미지/x-pict',
'tif' => '이미지/tiff',
'tiff' => '이미지/tiff',
'psd' => '이미지/x-포토샵',
'swf' => '응용 프로그램/x-충격파-플래시',
'js' => '응용 프로그램/x-javascript',
'pdf' => '응용 프로그램/pdf',
'ps' => '응용 프로그램/포스트스크립트',
'eps' => '응용 프로그램/포스트스크립트',
'ai' => '응용 프로그램/포스트스크립트',
'wmf' => '응용 프로그램/x-msmetafile',
'css' => '텍스트/css',
'htm' => '텍스트/html',
'html' => '텍스트/html',
'txt' => '텍스트/일반',
'xml' => '텍스트/xml',
'wml' => '텍스트/wml',
'wbmp' => 'image/vnd.wap.wbmp',
'mid' => '오디오/미디',
'wav' => '오디오/wav',
'mp3' => '오디오/mpeg',
'mp2' => '오디오/mpeg',
'avi' => '비디오/x-msvideo',
'mpeg' => '비디오/mpeg',
'mpg' => '비디오/mpeg',
'qt' => '비디오/퀵타임',
'mov' => '비디오/퀵타임',
'lha' => '응용 프로그램/x-lha',
'lzh' => '응용 프로그램/x-lha',
'z' => '응용 프로그램/x-압축',
'gtar' => '응용 프로그램/x-gtar',
'gz' => '응용 프로그램/x-gzip',
'gzip' => '응용 프로그램/x-gzip',
'tgz' => '응용 프로그램/x-gzip',
'tar' => '응용 프로그램/x-tar',
'bz2' => '응용 프로그램/bzip2',
'zip' => '응용 프로그램/zip',
'arj' => '응용 프로그램/x-arj',
'rar' => '응용 프로그램/x-rar-압축',
'hqx' => '응용 프로그램/mac-binhex40',
'앉아' => '응용 프로그램/x-stuffit',
'bin' => '응용 프로그램/x-macbinary',
'uu' => '텍스트/x-uuencode',
'uue' => '텍스트/x-uuencode',
'latex' => '응용 프로그램/x-latex',
'ltx' => '응용 프로그램/x-라텍스',
'tcl' => '응용 프로그램/x-tcl',
'pgp' => '응용 프로그램/pgp',
'asc' => '응용 프로그램/pgp',
'exe' => '응용 프로그램/x-msdownload',
'doc' => '응용 프로그램/msword',
'rtf' => '응용 프로그램/rtf',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-파워포인트',
'mdb' => '응용 프로그램/x-msaccess',
'wri' => '응용 프로그램/x-mswrite',
);
5. PHP
<?
header("콘텐츠 유형:application/vnd.ms-excel");
header("콘텐츠 처리:파일 이름=test.xls");
에코 "테스트1t";
에코 "테스트2tn";
에코 "테스트1t";
에코 "테스트2tn";
에코 "테스트1t";
에코 "테스트2tn";
에코 "테스트1t";
에코 "테스트2tn";
에코 "테스트1t";
에코 "테스트2tn";
에코 "테스트1t";
에코 "테스트2tn";
?>
//해당 파일 헤더를
.doc 등의 출력 파일 형식으로 변경합니다.
방법 1:
//$db->rows[$i][date]는 데이터베이스의 날짜/시간 필드 값입니다.
$오늘=시간();
$theDay=date("Ymd H:i:s",$today-24*3600);
$newTag=$db->행[$i][날짜]>=$theDay?"<img src='../image/newinfor.gif'>":"";
방법 2:
$newTag=$db->행[$i][날짜]>=날짜("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입니다.
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: "Halted" 표시로 종료됩니다.
함수 데이터베이스($dbHost=SERVER,$dbUser=USER,$userPassword=PASSWORD,$database=DATABASE){
스위치($this->dbType){
사례 1:
$this->dbLink=@mysql_pconnect($dbHost,$dbUser,$userPassword);// 또는 die("원격 호스트에 연결할 수 없습니다!");
@mysql_select_db($database,$this->dbLink);// 또는 die ("원격 호스트에 연결할 수 없습니다!");
부서지다;
사례 2:
부서지다;
}
사실을 반환;
}
/*SQL:Select()는 false를 반환하고 결과가 없습니다*/
함수 선택($table,$columns,$condition=1){
$sql="$condition이 있는 $table에서 $columns를 선택합니다.";
//에코 $sql."<br>";
$this->result=@mysql_query($sql,$this->dbLink);
unset($this->rows);
if($this->결과){
$i=0;
if(!($this->rows=array("$i"=>@mysql_fetch_array($this->result))))
거짓을 반환;
if(($this->numRows=@mysql_num_rows($this->result))==0)
거짓을 반환;
while( $tempRows=@mysql_fetch_array($this->result )){
array_push($this->rows,$tempRows);
}
}또 다른{
$this->중지($sql);
거짓을 반환;
}
사실을 반환;
}
/*SQL:GetRows()는 쿼리된 총 레코드 수를 반환합니다*/
함수 GetRows($table,$condition=1){
$sql="$condition이 있는 $table의 개수로 count(1)를 선택합니다.";
//에코 $sql."<br>";
$this->result=@mysql_query($sql,$this->dbLink);
if($this->결과){
$temp=@mysql_fetch_array($this->result );
$this->numRows=$temp[count];
}또 다른{
$this->중지($sql);
거짓을 반환;
}
$this->numRows를 반환합니다.
}
/*SQL:삽입()*/
함수 삽입($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->중지($sql);
거짓을 반환;
}
사실을 반환;
}
/*SQL:업데이트()*/
함수 업데이트($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->중지($sql);
거짓을 반환;
}
사실을 반환;
}
/*SQL:삭제*/
함수 삭제($table,$condition){
$sql="$condition이 있는 $table에서 삭제";
$this->result=@mysql_query($sql,$this->dbLink);
if ($this->결과)
$this->numRows=@mysql_affected_rows($this->result);
또 다른{
$this->Halt($sql);
거짓을 반환;
}
사실을 반환;
}
/*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'>";//오류 메시지 파일 사용자 정의
거짓을 반환;
}
}
스위치($db->dbType){
사례 1:
@mysql_close();
부서지다;
사례 2:
부서지다;
}
$db = 새 데이터베이스();
?>