2009年6月アーカイブ

数値に変換

| コメント(0) | トラックバック(0)

文字列を数値に変換する

myNum = parseInt("500");
myNum = parseFloat("500");
myNum = Number("500");
myNum = "500" - 0;

substr

| コメント(0) | トラックバック(0)
myStr="123456";
myStr2=myStr.substr(0 ,2)

結果"12"

最初の文字を 0 番目。
から2つめの引数文字分返します。
負の値を指定すると後ろから数えます。

replace

| コメント(0) | トラックバック(0)
myStr="あれこれいろいろ";
KEKKA=myStr.replace(正規表現, 置換文字列) ;

match

| コメント(0) | トラックバック(0)
myStr="123abc456def";
if (myStr.match(/456/i)) {
	alert("456");
}

iはオプション

オプション
i=大文字小文字を区別しない
g=2番目、3番目も検索する
m=複数行検索

length

| コメント(0) | トラックバック(0)
myStr="123456";
num=myStr.length;

文字列の長さを調べます

絶対値

| コメント(0) | トラックバック(0)
aryNum=Math.abs(ary[N]);

ロード時に呼び出し

| コメント(0) | トラックバック(0)

<script type="text/javascript" language="JavaScript">
<!--
function jump()
{
location.href = "./index.php";
}
// -->
</script>

<body bgcolor="#ffffff" text="#191919" onLoad="setTimeout('jump()',500)">

この例ではロードされてからjump()が呼び出される。

リンクから呼び出し

| コメント(0) | トラックバック(0)
<a href="javascript:submitgo('1');">

ボタンから呼び出し

| コメント(0) | トラックバック(0)
<input type="button" value="テスト" onclick="my_test()" />

タイマーで呼び出し

| コメント(0) | トラックバック(0)
window.setTimeout("JS", int) 

intミリ秒後に指定した処理を行います。
JS にJavaScript の構文か関数名を記述します。

function test() {
	alert("一秒後にもう一回");
	setTimeout("test()", 1000);
}

window.setInterval("JS", int)

指定した処理が intミリ秒毎に定期的に実行。

スクリプトタグの書き方

| コメント(0) | トラックバック(0)

<script type="text/javascript">
<!--
function my_test(){
alert("test");
}
//-->
</script>

イベントで呼び出し

| コメント(0) | トラックバック(0)
function myfnc(){
    alert();
}

onclick="myfnc()"
ondblclick="myfnc()"
onmousedown="myfnc()"
onmouseup="myfnc()"
onmouseover="myfnc()"
onmouseout="myfnc()"
onmousemove="myfnc()"

document.all(id)

| コメント(0) | トラックバック(0)
document.all(id).style.color=ff0000;
document.all.item(id).style.color=ff0000;

はSafariで動かなかったので×

Safariでは下記のように書く

document.getElementById('1-0').style.color=ff0000;

このようにしてオブジェクトを指定する

selectの値を調べる

| コメント(0) | トラックバック(0)
selectの値を調べるには下記のようにする
<!--
function jump(){
var TXT=""
obj=document.jumpform.urlMenu;
TXT=obj.options[obj.selectedIndex].value;
url="menu"+TXT+".html";
location.href=url;
}

HTMLは。。。
<form name="jumpform">
<select name="urlMenu" onchange="jump()">
<option value="" SELECTED>選んでね。</OPTION>
<option value="00">00年</OPTION>
<option value="01">01年</OPTION>
<option value="02">02年</OPTION>
<option value="03A">03年前半</OPTION>
<option value="03B">03年後半</OPTION>
<option value="04A">04年前半</OPTION>
</select>
</form>

文字コード

| コメント(0) | トラックバック(0)
$sub=mb_convert_encoding($sub,'JIS','SJIS');

SJIS<=JIS

string mb_convert_encoding (str, to-encoding [, from-encoding])

strの文字エンコーディングを from-encoding から to-encoding に変換。

from-encodingは","区切りで複数記述可。省略すると内部文字エンコーディング
from-encodingを"auto"にすると"ASCII,JIS,UTF-8,EUC-JP,SJIS"

UCS-2LE
ASCII
JIS
UTF-7
UTF-8
EUC-JP
SJIS
eucjp-win
sjis-win

整数にする

| コメント(0) | トラックバック(0)
$num=intval("500");

urlencode

| コメント(0) | トラックバック(0)

こんな感じ。

$keyword = urlencode($keyword);

タグやスラッシュを外す

| コメント(0) | トラックバック(0)

タグをはずす

TXT=strip_tags($TXT);

スラッシュを外す

stripslashesはaddslashesの反対

\をはぶく

桁を空白で埋める

| コメント(0) | トラックバック(0)
str_pad ($str,3 [, " " [, option]])

文字列を3ケタになるように" "で埋める

オプションの引数には、
STR_PAD_RIGHT,
STR_PAD_LEFT,
STR_PAD_BOTHを指定可能です。
指定されない場合、STR_PAD_RIGHT 。

$M="1";
$M=str_pad($M,2,' ',STR_PAD_LEFT);

結果

$M=" 1"

タグの禁止

| コメント(0) | トラックバック(0)
$data=htmlspecialchars($data);	
#HTMLの特殊文字の変換(タグの禁止)

base64

| コメント(0) | トラックバック(0)
$sub=base64_encode($sub);
$sub="=?ISO-2022-JP?B?".$sub."?=";

addslashes

| コメント(0) | トラックバック(0)
$data=addslashes($data);	
#DB格納用にメタ文字をエスケープ

\を加えるということ

要素の数を数える

| コメント(0) | トラックバック(0)
$num= count ($ARY

配列内に存在するか?

| コメント(0) | トラックバック(0)
if(in_array($STR,$ARY)){

$ARY内に$STRが存在するか?

配列を文字列に連結

| コメント(0) | トラックバック(0)
$str=implode(",",$ary);

配列$aryを連結します。
区切り文字に","が入る

配列の連結して1つの配列

| コメント(0) | トラックバック(0)
array_merge
<?php
$array1 = array ("key1" => "val1", 2, 4);
$array2 = array ("a", "b", "key1" => "val2", "etc" => "val3", 4);
$result = array_merge ($array1, $array2);
print_r($result);
?> 

同じkeyは後ろが優先。

[key1] => val2
[0] => 2
[1] => 4
[2] => a
[3] => b
[etc] => val3
[4] => 4

配列の作成

| コメント(0) | トラックバック(0)
$list = array("A", "B", "C", "D", "E");

配列の最初に値を入れる

| コメント(0) | トラックバック(0)
array_unshift ($menu,'<table width="100%" border="0"><tr>');

配列に分割

| コメント(0) | トラックバック(0)
$ary=explode(",",$str);

文字列$strを
","区切りで配列に分解

逆は

$stringdata=implode(",",$ary);

配列すべてにtrim

| コメント(0) | トラックバック(0)
$list1=array_map('trim',$list1);
$myList=array_unique($myList);

ソートする

| コメント(0) | トラックバック(0)
sort($todaylist);

戻り値なし。引数の配列がそのまま変更される

natsort($todaylist);

自然なsortになる。

配列のKEYでSORT

ksort($hash);
krsort($hash);

キーを取り出す

| コメント(0) | トラックバック(0)
$keyAry=array_keys($XML);

小さい(大きい)値

| コメント(0) | トラックバック(0)

もっとも小さい値

min($ary)

もっとも大きい値

max($ary)

要素を削除

| コメント(0) | トラックバック(0)

1つめの配列を削除

array_shift($list1);

N番目の要素を削除

$selectList=array_splice($selectList,$N);
#N番目の要素を削除

include

| コメント(0) | トラックバック(0)
include "./inc/userdata.php";

外部phpを読み込む

mbモジュールを使用する方法(Windows)

php.iniをC:\WINDOWSへ移動

;extension=php_mbstring.dll

の;をはずす

extension_dir = "./"を下記のように変更
extension_dir = "C:/php/extensions"

ディスプレイエラー

| コメント(0) | トラックバック(0)
display_errors = On

これで表示

error_reporting  =  E_ALL & ~E_NOTICE

Macではこうしないと
なんでもかんでもエラーに。。。

$ID=$_POST[myID];

とかが受けれなくなってしまう。

php.iniの場所

| コメント(0) | トラックバック(0)
<?php
	phpinfo();
?>

で調べることができる。

MacOSXの場合は

/usr/local/php/lib/php.ini

パターン

| コメント(0) | トラックバック(0)
.	改行以外のすべての文字
[a-zA-Z0-9]	セット内の1文字
[^a-zA-Z0-9]	セット以外の1文字
\d	数字
\D	数字以外
\w	英数字
\W	英数字以外
\s	スペース・tab・改行
\S	スペース・tab・改行以外
\n	改行chr(10)
\r	復帰chr(13)
\t	tab
\f	改ページ
\b	バックスペース
\0	ヌル文字

?	0または1個
*	0個以上
+	1個以上
{m,n}	m個以上n個以下

abc	abcにHIT
a|b|c	aかbかcにHIT

$	行の最後
^	行の先頭

preg_replace

| コメント(0) | トラックバック(0)
$TXT=preg_replace('/¥([0-9,]*)/',$fomat[$N2].'¥'.'$1</b></font>',$TXT);

preg_match

| コメント(0) | トラックバック(0)
if(preg_match("/^KDDI/",$TANMATSU)){$URL="indexk.php";}

戻り値はint

preg_match("/^(.*)/",$moto, $matches);
print $matches[0];
 $matches[0]はパターン全体にマッチしたテキスト。 $matches[1]は最初の括弧付きのサブパターンにマッチしたテキスト 。

preg_grep

| コメント(0) | トラックバック(0)
$ARY=preg_grep($data,$ARYmoto);

$dataは正規表現
$ARYmotoは配列。

配列の中から$dataにHITする配列を取り出す。

eregi_replace

| コメント(0) | トラックバック(0)
$data=ereg_replace("\n","<br>",$data);#改行コードの変換

大文字小文字を区別しない

$data=eregi_replace("http://","",$url);

.*を改行もOKにする

| コメント(0) | トラックバック(0)

s (PCRE_DOTALL)

この修飾子が設定された場合、
パターン中のドットメタ文字は
改行を含む全ての文字にマッチ。
これを指定しない場合、改行は除かれます。
この修飾子は、Perl の /s 修飾子と等価です。

四捨五入等

| コメント(0) | トラックバック(0)

切上げ
ceil(数値);

切捨て
floor(数値);

四捨五入
round(数値);

書き込む

| コメント(0) | トラックバック(0)

書き込む

fwrite($fp,"text");

ファイルロック

flock($fp,operation)
ロックはfopenの直後にロック解除はfcloseの直前に
operation
LOCK_SH	共有ロック。読み込み可
LOCK_EX	排他的ロック	読み書き不可
LOCK_UN	ロック解除	※ファイルを閉じる前に実行。


$log="./count.dat";
$fp=fopen($log,"r+");
if(!$fp){
	print "ファイルを開けませんでした。";
	exit;
}
flock($fp,LOCK_EX);
$count=fread($fp,filesize($log));
rewind($fp);
$count++;
fwrite($fp,$count);
flock($fp,LOCK_UN);#ファイルを閉じる前に実行。
fclose($fp);

サンプル
function fWRITEGO($file,$writeTXT){
	$FLG=true;
	#print $file;
	$fp=fopen($file,"w");#書き込み	fpはfileの先頭
	if($fp){
		flock($fp,LOCK_EX);
		fwrite($fp,$writeTXT);
		flock($fp,LOCK_UN);#ファイルを閉じる前に実行。
		fclose($fp);
	}else{$FLG=false;}
	chmod($file,0766);
}

更新日を表示

| コメント(0) | トラックバック(0)
$filename = 'data.csv';
if (file_exists($filename)) {
 echo "最終更新日:" . date ("F d Y H:i:s.", filemtime($filename));
}

空のファイルを作成する

| コメント(0) | トラックバック(0)
touch($lock);#空のファイルを作成する

開くお手軽に

| コメント(0) | トラックバック(0)

改行区切りで配列がかえってくる。

$list1=file($file);

改行や余分なスペースを削除。

$list1=array_map('trim',$list1);

1つのテキストにしたい時は下記で
配列を結合する。この場合上のtrimはしない。

$StrData=implode("",$list1);

開く

| コメント(0) | トラックバック(0)

開く

$fp=fopen(filename,"mode");

エラーのときは$fpは空になる。if(!$fp)で確認
modeは
r 読み込み fpはfileの先頭
r+ 読み書き fpはfileの先頭
w 書き込み fpはfileの先頭 fileがなければ作成※開いた瞬間ファイルの中身が空になる。
w+ 読み書き fpはfileの先頭 fileがなければ作成※開いた瞬間ファイルの中身が空になる。
a 書き込み fpはfileの終端
a+ 読み書き fpはfileの終端
※+がつくのは全部読み書き

閉じる

fclose($fp);

ファイルサイズを調べる。

filesize(filename);

読み込む

fread($fp,バイト数);

バイト数はファイルサイズを調べて入れる。
このとき読み込んだバイト分カーソルも移動してしまう。
全部読み込むとファイルの最後にカーソルが移動する。

カーソルを先頭に移動する。

rewind($fp);

フォルダ内リスト作成

| コメント(0) | トラックバック(0)
<?php
$targetdir="./datafolder/";
$DIRLIST=GETDIRLIST($targetdir);

if($DIRLIST<>""){
	foreach($DIRLIST as $buf){
		print $buf."
";
	}
}

#★★★★★★★★★★★★★★★★★★★★★#
#★★★	  フォルダ内リスト作成	★★★#
#★★★★★★★★★★★★★★★★★★★★★#

function GETDIRLIST($targetdir){
	if($targetdir==""){
		return "";
	}

	if(!file_exists($targetdir)){
		return "";
	}
	$dir=dir($targetdir);
	while(($ent=$dir->read()) !== FALSE){
		if(eregi('.+xml$|.+html$',$ent)){
			$DIRLIST[]=$ent;
		}
	}
	return $DIRLIST;
}

?>

ファイルサイズを調べる

| コメント(0) | トラックバック(0)
$baksize=filesize($filebak);

ファイルを削除

| コメント(0) | トラックバック(0)
if(file_exists($lock)){
		unlink($lock);
 }

ファイルを消す
bool unlink (filename)
0=false
1=trueで返ってくる

ファイルが存在するか

| コメント(0) | トラックバック(0)
if(file_exists($file)){
#ファイルがあるなら
}

バックアップファイル

| コメント(0) | トラックバック(0)

書き込みに常に2つのファイルに書き込んでおき
開くときにファイルサイズの大きい方を開く。
バックアップがないときも下記で新たに作られる。

function READLIST($readFile){
	$readFile=fGETBAK($readFile);
	if(file_exists($readFile)){
		$LIST=file($readFile);
	}
	$LIST=array_map('trim',$LIST);
	return $LIST;
}

#★★★★★★★★★★★★★★★★★★★★★#
#★★★	バックアップファイル名をGET	★★★#
#★★★★★★★★★★★★★★★★★★★★★#
function fGETBAK($file){
	$filebak=$file.".bak";
	#####比較###########
	if(file_exists($filebak)){
		$baksize=filesize($filebak);
	}else{
		$baksize=0;
	}
	if(file_exists($file)){
		$fsize=filesize($file);
	}else{
		$fsize=0;
	}
	if($baksize>$fsize){
		#要領が大きいほうを小さい方にコピーする。
		copy($filebak,$file);
		chmod($file,0766);
		$refile=$filebak;
	}elseif($baksize<$fsize){
		copy($file,$filebak);
		chmod($filebak,0766);
		$refile=$file;
	}
	return $refile;
}

#★★★★★★★★★★★★★★★★★★★★★#
#★★★	バックアップファイルにも書き込み	★★★#
#★★★★★★★★★★★★★★★★★★★★★#
function fWRITEBAK($file,$wStr){
	if(file_exists($file)){
		$fp=fopen($file,"w");#書き込み	fpはfileの先頭
	}
	if($fp){
		flock($fp,LOCK_EX);
		fwrite($fp,$wStr);
		flock($fp,LOCK_UN);#ファイルを閉じる前に実行。
		fclose($fp);
	}
	#さらにバックアップもしておく。
	if(file_exists($file.".bak")){
		$fp=fopen($file.".bak","w");#書き込み	fpはfileの先頭
	}
	if($fp){
		flock($fp,LOCK_EX);
		fwrite($fp,$wStr);
		flock($fp,LOCK_UN);#ファイルを閉じる前に実行。
		fclose($fp);
	}
}
is_dir($file);

mkdirロック

| コメント(0) | トラックバック(0)

掲示板などで使われるmkdirロック

#★★★★★★★★★★★★★★★★★★★★★#
#★★★		  ファイルロック		  ★★★#
#★★★★★★★★★★★★★★★★★★★★★#
function mkdirLook(){
	global $lock;
	if(file_exists($lock)){
		#ファイルが存在して時間が昔のものなら消しておく。
		$list=(stat($lock));
		$ftime=$list[ctime];
		$mytime=time();
		if($mytime-5>$ftime){mkdirunlock();}
	}
	$retry=5;
	while(file_exists($lock)){
		if($retry==0){
			#ロックに失敗したらエラーを返す。
			return false;
			exit;
		}
		sleep(1);
		$retry--;
	}
	#成功したら
	touch($lock);#空のファイルを作成する
	chmod($lock,0755);
	return true;
}

#★★★★★★★★★★★★★★★★★★★★★#
#★★★ ロック解除 ★★★#
#★★★★★★★★★★★★★★★★★★★★★#
function mkdirunlock() {
global $lock;
if(file_exists($lock)){
unlink($lock);
}
}

ディレクトリを作成

| コメント(0) | トラックバック(0)
mkdir($fol,0766);

ファイルコピー

| コメント(0) | トラックバック(0)
copy($file, $file.'.bak')

0=false
1=trueで返ってくる

chmod

| コメント(0) | トラックバック(0)
chmod($file,0666);

権限を変える

携帯かどうか調べる

| コメント(0) | トラックバック(0)
<?php

$user_agent= explode( "/", $_SERVER['HTTP_USER_AGENT']);

$TANMATSU=$user_agent[0];

if($TANMATSU=="DoCoMo"){$URL="indexk.php";}

elseif($TANMATSU=="L-mode"){$URL="indexk.php";}

elseif($TANMATSU=="ASTEL"){$URL="indexk.php";}

elseif($TANMATSU=="UP.Browser"){$URL="indexk.php";}

elseif($TANMATSU=="PDXGW"){$URL="indexk.php";}

elseif($TANMATSU=="J-PHONE"){$URL="indexk.php";}

elseif(preg_match("/^KDDI/",$TANMATSU)){$URL="indexk.php";}

else{$URL="demo.html";}

header("Location: ".$URL);

?>

強制リフレッシュ

| コメント(0) | トラックバック(0)
header("Refresh:600");

単位秒

プロクシに制限をかける

| コメント(0) | トラックバック(0)
##########ここからプロクシチェック#############
	$FLG=false;
	$IP=getenv(REMOTE_ADDR);
	$HS=getenv(REMOTE_HOST);
	if($HS==""){$HS=gethostbyaddr($IP);}
	$PO=getenv(REMOTE_PORT);
	#.jp 、.bbtec.net 、 .il24.net 以外は規制
	if(!eregi('\.jp|\.bbtec.net|\.il24\.net|localhost',$HS)){$FLG=true;}
	#以下の環境変数に何か含まれてたらアウト
	if(getenv(HTTP_VIA)){$FLG=true;}
	if(getenv(HTTP_CACHE_INFO)){$FLG=true;}
	if(getenv(HTTP_SP_HOST)){$FLG=true;}
	if(getenv(HTTP_FORWARDED)){$FLG=true;}
	if(getenv(HTTP_FORWARDED_FOR)){$FLG=true;}
	if(getenv(HTTP_X_FORWARDED_FOR)){$FLG=true;}
	if(getenv(HTTP_CLIENT_IP)){$FLG=true;}
	#ホスト名にprox squid cache www dns firewall
	if(eregi('prox|squid|cache|www|dns|firewall',$HS)){$FLG=true;}
	if($FLG==true){
		ERREXIT("プロクシ経由での予約は現在行っておりません。");
	}

クッキーのサンプル

| コメント(0) | トラックバック(0)
#このファイルをインクルードするだけでチェックできる。
	$NAME="KIRARI";
	$OVERTIME=30;#単位分
	$URL="./login.php";
	$COOKIEFLG="true";
	if(isset($_COOKIE[$NAME])){
		$time=$_COOKIE[$NAME];
		$timeflg1=time()-$time;
		$timeflg2=60*$OVERTIME;
		if($timeflg1>$timeflg2){
			$COOKIEFLG="timeover";
			setcookie($NAME);
			setcookie($NAME,0,0);
		}else{
			setcookie($NAME);
			setcookie($NAME,time(),0);
		}
	}else{$COOKIEFLG="false";}
	if($COOKIEFLG=="true"){
		return;
	}

クッキーが存在するか?

| コメント(0) | トラックバック(0)
if(isset($_COOKIE[$NAME])){

クッキーの値を取り出す

| コメント(0) | トラックバック(0)
$time=$_COOKIE[$NAME];

キャッシュさせない

| コメント(0) | トラックバック(0)
# 日付が過去
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
# 常に修正されている
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
# HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
# HTTP/1.0
header("Pragma: no-cache");

どれだけがんばってもIEはキャッシュするのでファイル名を動的に変更する必要がある。

setcookie

| コメント(0) | トラックバック(0)
setcookie("KIRARI",time(),0);
setcookie("KIRARIUSER",$ID,0);

引数は
クッキー名,クッキーの値,有効期限

有効期限はtime()ユニックスまたはmktime()関数で作られる
UNIXタイムスタンプ形式

setcookie($NAME);
setcookie($NAME,0,0);

値を何も入れないとクッキーを消せる

header

| コメント(0) | トラックバック(0)
header("Location: ".$URL);

転送先設定で届いたメールをPHPに転送するようにしておく
PHPでは転送されたメールを読み込んで処理する。

●設定1転送設定

さくらサーバ
コントロールパネルで
メールアドレスの管理
該当するメールの転送設定を作成する(転送先はなんでもいい)
FTPでさくらサーバに接続
/home/アカウント名/MailBox/メールID/
に.mailfilterができているので、内容を

to "| /usr/local/bin/php /home/アカウント名/www/test.php"
exit

に書き換えてアップ。
※要注意!パーミッションは600!!!

●設定2PHP
/home/アカウント名/www/test.phpの内容

#!/usr/local/bin/php -q
<?php
set_time_limit(0);
$stdin = fopen("php://stdin", "r");
while(!feof ($stdin)){
	$mail .= fgets($stdin, 4096);
}
fclose ($stdin);

$fp = fopen('./mail.txt', "a");
set_file_buffer($fp, 0);
flock($fp, 2);
fwrite($fp, $mail);
flock($fp, 3);
fclose($fp);
?>

1行目の#!/usr/local/bin/php -qは必要!
動かすとでき上がるmail.txtを解析すればOK

チェックボックス

| コメント(0) | トラックバック(0)

チェックボックスの値の送受信

こんな感じで送ると

<td><input type="checkbox" name="FB[1]" value="2004/11/08">08</td>
<td><input type="checkbox" name="FB[2]" value="2004/11/09">09</td>
<td><input type="checkbox" name="FB[3]" value="2004/11/10">10</td>
<td><input type="checkbox" name="FB[4]" value="2004/11/11">11</td>
<td><input type="checkbox" name="FB[5]" value="2004/11/12">12</td>

こんな感じで受け取れる。

$FB=$_POST[FB];
if(!$FB){$FB[]="";}
foreach($FB as $buf){
	print $buf;
}

$FBにはvalue値が入る

POSTかGETか

| コメント(0) | トラックバック(0)
if($_SERVER['REQUEST_METHOD']=="POST"){
	$TXT=hESC($_POST[file]);
}

IPアドレス

| コメント(0) | トラックバック(0)
$IP=getenv(REMOTE_ADDR);

HOSTネームを調べる

| コメント(0) | トラックバック(0)
$IP=getenv(REMOTE_ADDR);
$HOST=getenv(REMOTE_HOST);
if($HOST==""){$HOST=gethostbyaddr($IP);}
if(eregi("yahoobb219029008014|localhost",$HOST)){#proxやsquidが含まれる。
	return "";
}
$PORT=getenv(REMOTE_PORT);

SERVER情報の受け取り

| コメント(0) | トラックバック(0)

■ユーザー情報の取得

$ip=$_SERVER["SERVER_ADDR"];
$blowser=$_SERVER["HTTP_USER_AGENT"];
print "<h2>あなたのIPアドレスは".$ip."です</h2>";
print "<h2>あなたのブラウザは".$blowser."です</h2>";

POSTの値を受け取る

| コメント(0) | トラックバック(0)
$btnName=$_POST[submit];

ファイルのアップロード

| コメント(0) | トラックバック(0)
<form action="image.php" method="post" name="f">

<input type="hidden" name="MAX_FILE_SIZE" value="100000">

アップロードファイルを選択してください。

<input type="file" name="img" size="40">
<input type="submit" name="upload" value="アップロード">



if($_POST[upload]=="アップロード"){
	$fomatfol="./imgfolder";
	hSAVEIMG($fomatfol,$_FILES);
}


#★★★★★★★★★★★★★★★★★★★★★#
#★★★		  $_FILEを保存		  ★★★#
#★★★★★★★★★★★★★★★★★★★★★#

function hSAVEIMG($imgFol,$_FILES){
	if($_FILES['img']['name']){
		#print $_FILES['img']['name']."";#クライアントマシンの元のファイル名。
		#print $_FILES['img']['tmp_name']."";#アップロードされたファイルがサーバー上で保存されているテンポラ リファイルの名前。
		#$_FILES['img']['type']#ファイルのMIME型。ただし、ブラウザがこの情報を提供する場合。 例えば、"image/gif"のようになります。 
		#$_FILES['img']['size']#アップロードされたファイルのバイト単位のサイズ。 
		#print $_FILES['img']['error'];
		
		$kakucyou=$_FILES['img']['type'];
		if		(strpos($kakucyou,"jpeg")>0){$kakucyou="jpg";}
		elseif	(strpos($kakucyou,"jpg")>0){$kakucyou="jpg";}
		elseif	(strpos($kakucyou,"gif")>0){$kakucyou="gif";}
		elseif	(strpos($kakucyou,"png")>0){$kakucyou="png";}
		else{$kakucyou="";}
		if($kakucyou<>""){
			copy($_FILES['img']['tmp_name'],$imgFol.$_FILES['img']['name']);
		}
	}
}

background-repeat

| コメント(0) | トラックバック(0)
background-repeat: no-repeat;

 repeat(敷き詰める)

 repeat-x(横方向のみ並べる)

 repeat-y(縦方向のみ並べる)

 no-repeat(ひとつだけ表示する)

 inherit(継承)

background-position

| コメント(0) | トラックバック(0)
background-position: center center;

  left(左端)

 center(中央)

 right(右端)

  50% のような割合

 top(上端)

 center(中央)

 bottom(下端)

  50% のような割合

background-image

| コメント(0) | トラックバック(0)
background-image: url(image/back.gif); 

url(画像のパス)

background-color

| コメント(0) | トラックバック(0)
background-color:#ffffff;

color

 色の名前

 transparent(既定値:透明色)

 inherit(継承)

background-attachment

| コメント(0) | トラックバック(0)
background-attachment:fixed;

 scroll(一緒にスクロールする)

 fixed(スクロールしない)

 inherit(継承

background

| コメント(0) | トラックバック(0)
background:#ff00ff url(image/back.gif) no-repeat fixed 50% 50%; }

color

 色の名前

 transparent(既定値:透明色)

 inherit(継承)

url(画像のパス)

repeat

  repeat(敷き詰める)

 repeat-x(横方向のみ並べる)

 repeat-y(縦方向のみ並べる)

 no-repeat(ひとつだけ表示する)

 inherit(継承)

attachment

 scroll(一緒にスクロールする)

 fixed(スクロールしない)

 inherit(継承)

position

  left(左端)

 center(中央)

 right(右端)

  50% のような割合

 top(上端)

 center(中央)

 bottom(下端)

border

| コメント(0) | トラックバック(0)
border-top: 2px solid #444444;
border-left: 2px solid #444444;
border-right: 2px solid #aaaaaa;
border-bottom: 2px solid #aaaaaa;

position

| コメント(0) | トラックバック(0)

場所を指定

    position: absolute;

    top: 201px;

    left: 0;

こんな感じで絶対位置指定。

marginとpadding

| コメント(0) | トラックバック(0)
margin: top right bottom left

枠の外側の余白です。
上下左右の余白を指定します。

padding: top right bottom left

内側の余白はpaddingを使います。

2.0em, 2px, 120%

上下左右=1px

padding: 1px;

上下=1px、左右=5px

padding: 1px 5px;

上=1px、左右=5px、下=3px

padding: 1px 5px 3px;

上=1px、右=5px、下=3px、左=10px

padding: 1px 5px 3px 10px;

text-justify

| コメント(0) | トラックバック(0)
text-justify: auto;

text-align: justify; と組み合わせて使用し、単語間や文字間のスペースを調整する方法を指定

auto(既定値)

newspaper(英文向け)

inter-word(単語間のみによる調整)

distribute-all-lines(最後の行も調整)

inter-ideograph(単語間と文字間による調整)

inter-cluster(アジア言語向け)

distribute(タイ言語向け)

kashida(アラビア語向け)

text-indent

| コメント(0) | トラックバック(0)
text-indent: 12px;

字下げを指定

text-align

| コメント(0) | トラックバック(0)
text-align: auto;

left(左寄せ)

right(右寄せ)

center(センタリング)

justify(両端揃え)

inherit(継承)

font-weight

| コメント(0) | トラックバック(0)
font-weight:bold;

bold, bolder, lighter,

100, 200, 300, 400, 500, 600, 700, 800, 900

a

| コメント(0) | トラックバック(0)
a {
    background-color: transparent;
    color: "#003399";
    text-decoration: underline;
}

a:hover {
    background-color: transparent;
    color: "#999933";
    text-decoration: underline;
}

a:active {
    background-color: transparent;
    color: #396;
    text-decoration: none;
}

内部cssファイル

| コメント(0) | トラックバック(0)

<style type="text/css">
<!--
a{font-size:"12pt";color:#0000ff;font-family: 'MS ゴシック','Osaka'; }
a:Visited{font-size:"12pt";color:#0000ff;font-family: 'MS ゴシック','Osaka'; }
a:Active{font-size:"12pt";color:#ff0000;font-family: 'MS ゴシック','Osaka'; }
a:hover{font-size:"12pt";color:#ff0000;font-family: 'MS ゴシック','Osaka'; }
-->
</style>

外部cssファイル

| コメント(0) | トラックバック(0)
<link rel="stylesheet" href="../style.css" type="text/css">

論理演算子

| コメント(0) | トラックバック(0)

A and B AとB
A && B AとB
A or B AかB
A || B AかB
!A Aではない。

変数

| コメント(0) | トラックバック(0)

■変数
$data普通の変数
$data0配列
$data[name]連想配列

配列に値を入れるとき下記で自動でaddしてくれる。
$data[]="A"
$data[]="B"
$data[]="C"

$data=array("A","B","C")これでも同じ(arrayは関数名)

$data=array("1"=>"A","2"=>"B","3"=>"C")これも同じ。連想配列にも使える。

比較演算子

| コメント(0) | トラックバック(0)

■比較演算子

A > B
A < B
A >= B
A <= B
A == B等しい
A <> B違う★

条件分岐

| コメント(0) | トラックバック(0)

★条件分岐

if ($data == "朝"){
	print "おはようございます";
}elseif($data == "昼"){#★
	print "こんにちは";
}else{
	print "こんばんは";
}

算術演算子

| コメント(0) | トラックバック(0)
■算術演算子
A + B
A = B
A * B
A / B
A % B	A/Bのあまり
A++	Aに1を足す
A-	Aから1をひく

外部ファイルを読み込む

| コメント(0) | トラックバック(0)
include "./bfnc.php";

ループを抜ける

| コメント(0) | トラックバック(0)

break;

リファレンスDownLoad

| コメント(0) | トラックバック(0)

http://www.php.net/download-docs.php

乱数(ランダム)

| コメント(0) | トラックバック(0)
mt_rand(5, 15);

5~15の乱数を生成する

スーパーグローバル変数

| コメント(0) | トラックバック(0)

$_GET[name]でGETで送信されたformのnameの内容を調べる。(旧バージョンでは$HTTP_GET_VARS)
$_POST[name]でPOSTで送信されたformのnameの内容を調べる。(旧バージョンでは$HTTP_POST_VARS)
$_ENV環境変数(旧バージョンでは$HTTP_ENV_VARS)
$_SERVERサーバー変数(旧バージョンでは$HTTP_SERVER_VARS)
$_COOKIEクッキーの値(旧バージョンでは$HTTP_COOKIE_VARS)
$_REQUESTゲットやクッキーやポストの内容全てが収納されるが下位互換なし。
$_FILESアップロードされたファイルの情報が入ります。(旧バージョンでは$HTTP_POST_FILES)
$_SESSIONセッションモジュールにより登録された内容が格納される。(旧バージョンでは$HTTP_SESSION_VARS)

while文

| コメント(0) | トラックバック(0)

$FLGがtrueの間繰り返す

while($FLG){
	if($bufAry==""){$FLG=false;}
	else{
	
		}
	}
}

1秒停止

| コメント(0) | トラックバック(0)
sleep(1);

実行可能な秒数設定

| コメント(0) | トラックバック(0)

時間のかかる処理の場合下記のようにすると
90秒はエラーが出ない

set_time_limit(90);

function

| コメント(0) | トラックバック(0)

■functionの作り方


function OpenDB($data="デフォルト値"){
#引数が無ければデフォルト値が使われる。
return $data;
}

呼び出し方

OpenDB($data);

外部ファイルを作る場合はsubpack.incなど拡張子incすることもあり。

for文

| コメント(0) | トラックバック(0)

for文


for($i = 1 ; $i <= 10 ; $i++){
print "数値は".$i."です。";
}

while文

$i=1;
while ($i <= 10){
print "数値は".$i."です。";
$i++;
}

foreach

| コメント(0) | トラックバック(0)

foreach文(連想配列のキーと値を取り出せる。)★


$price=array("りんご"=>120,"みかん"=>80,"ぶどう"=>150);
foreach($price as $key=>$value)
{
print $key."は".$value."円だよ";
}

do文

| コメント(0) | トラックバック(0)

do文。評価が最後に来る


$i=1;
do{
print "数値は".$i."です。";
$i++;
}while($i <= 10);

文字化け対策

| コメント(0) | トラックバック(0)

「INSERT」、「UPDATE」のクエリする直前に
mysql_query("SET NAMES utf8")
mysql_query("SET NAMES ujis")
mysql_query("SET NAMES euc")
などで文字コードを指定しておくと
文字化けしないで登録できる。

動いているかTEST

| コメント(0) | トラックバック(0)
?>

#mysql_affected_rowsの関数で変更がかかったかどうかチェックできます。
if(!mysql_affected_rows()){
	#直前のupdate文で変更がかかっていなかったら。
	ErrorPrint("パスワードが違います。");
	exit;
}

値の取り出し

| コメント(0) | トラックバック(0)

値の取り出し。


$myAry=mysql_fetch_array($result,option);

option
MYSQL_NUM 通常配列で取り出しfieldの左から順に[0]・・・・
MYSQL_ASSOC 連想配列で取り出し
配列のkeyはmysqlのfield名
MYSQL_BOTH 上の両方。



#全てのデータを連想配列で取り出す。
$arr_data=mysql_fetch_array($result,MYSQL_ASSOC);

print $arr_data[name].",";
print $arr_data[e_mail].",";
print $arr_data[title].",";
print $arr_data[url].",";
print $arr_data[contents].",";
print $arr_data[remote_host].",";
print $arr_data[datetime].",";
print $arr_data[serial];

★レコード分どうやって取り出すか


$arr_data=mysql_fetch_array($result,MYSQL_ASSOC);

↑これを繰り返すとデータを全て表示させることができる。

for ($i=1;$i<=$row;$i++){
#全てのデータを連想配列で取り出す。
$arr_data=mysql_fetch_array($result,MYSQL_ASSOC);
$name = stripslashes($arr_data[name]);
$mail = stripslashes($arr_data[e_mail]);
$title = stripslashes($arr_data[title]);
$url = stripslashes($arr_data[url]);
$contents = stripslashes($arr_data[contents]);
$remote_host = $arr_data[remote_host];
$datetime = $arr_data[datetime];
$serial = $arr_data[serial];
}

全てを選択

| コメント(0) | トラックバック(0)
#全てを選択のクエリーを発行。
$sql="select * from bbs where delflg='N' order by datetime desc limit ".$tmp.",".($limit+1);

接続

| コメント(0) | トラックバック(0)
function OpenDB($ID,$PASS){

$user = $ID;#"COOP";
$pass = $PASS;#"coopsql";
$dbname = "kirari";

###MySQLへの接続
###mysql_connect(server名,ユーザー名,パスワード)

$con = @mysql_connect("localhost",$user,$pass);
#mysql_connectの返り値を$conに代入する
#失敗した場合は、「@」が関数の前についているので、$conには何も入らない


if(!$con){
#もし$conが変数として存在しない場合(中身が空の場合・値が0の場合・値がfalseの場合)
ErrorPrint("MySQLへの接続に失敗しました","MySQL接続エラー");
exit;
}

#DBの選択
$result = mysql_select_db($dbname);
#$result = mysql_query("use ".$user);

if(!$result){
ErrorPrint("DBの選択に失敗しました","DB接続エラー");
exit;
}

}

クエリ発行

| コメント(0) | トラックバック(0)
	$sql="insert into Smaster set ";
	$sql.=returnQuery($fieldNameList,0);
	#★★更新のsqlクエリ★★★★★★★★★★★★★★
	$sql=stripslashes($sql);
	$result = mysql_query($sql);
	if(!$result){
		return $_POST[ef0]."の新規保存に失敗しました。";
	}else{
		return $_POST[ef0]."を新規保存しました。";
	}

select

| コメント(0) | トラックバック(0)

★Databaseからselect


$sql="select * from bbs";
$result=mysql_query($sql);

※返り値はリソースID

・selectできた数を調べる


$row=mysql_num_rows($result)

mysqlへの接続

| コメント(0) | トラックバック(0)

★mysqlへの接続。


$con=@mysql_connect(server名,ユーザー名,パスワード);
$con=@mysql_connect("localhost",$user,$pass);
if(!$con){
//エラー処理
}

※@をつけないとmysqlのエラー文が表示されてしまう。

insert

| コメント(0) | トラックバック(0)

DataBaseへinsert


$sql="insert into bbs set name='$db_name',e_mail='$db_mail',title='$db_title',";
$sql.="url='$db_url',contents='$db_cont',remote_host='$ip',datetime=now()";
$result=mysql_query($sql);
if(!$result){
//エラー処理
}

DataBase選択

| コメント(0) | トラックバック(0)
$result=mysql_select_db(データベース名)

echoとprint

| コメント(0) | トラックバック(0)
print "";
printは一行
echo "aaaaa
bbbbbbbb
ccccccccc";
echoは;がでるまでつづけられる。

曜日を調べる

| コメント(0) | トラックバック(0)
function bGETYOUBI($year,$mon,$day){
	#任意の日付けで曜日を出す
	$youbi=array('日','月','火','水','木','金','土');
	$y=$year; 
	$m=$mon; 
	$d=$day;
	if ($m < 3) {--$y; $m+=12;}
	$w=($y+ floor($y/4) - floor($y/100) + floor($y/400)+ floor((13*$m+8)/5) + $d) % 7;
	return "$youbi[$w]";#.$hol;
}

その年の祝日をかえす

| コメント(0) | トラックバック(0)
function GETHOLIDAY($year){
	###############ここから###############

#★★★★★日の決まった祝日★★★★★★★★★★★★★★★★★★★

$HOLARY = array('test','','','0101','0211','0429','0503','0505','1103','1123','1223');
#★★★★★春分・秋分日を計算(1980-2099まで有効)★★★★★★★★★

$dirY = 1980;
$syunbun = (int)(20.8431 + 0.242194*($year - $dirY) - (int)(($year - $dirY)/4));
$syubun = (int)(23.2488 + 0.242194*($year - $dirY) - (int)(($year - $dirY)/4));
$HOLARY[1] = ($year <= "2099") ? "03".substr("0".$syunbun,-2) : '';
$HOLARY[2] = ($year <= "2099") ? "09".substr("0".$syubun,-2) : '';

#★★★★★日の決まっていない祝日(何月第何月曜)★★★★★★

$mARY = array("01", "07", "09", "10");
$dARY = array("2", "3", "3", "2");
for($N=0;$N<4;$N++){
$monbuf=$mARY[$N];
$syu=$dARY[$N];
$youbibuf=strftime('%a',mktime(12,00,00,$monbuf,1,$year,0));#$Mon1月の1日の曜日を調べる
$shuARY=array("Sun"=>2,"Mon"=>1,"Tue"=>7,"Wed"=>6,"Thu"=>5,"Fri"=>4,"Sat"=>3);
$daybuf=$shuARY[$youbibuf];#これで最初の月曜日の日付がでる。
$daybuf+=($syu-1)*7;#これで何週目の月曜が指定できる。
if($daybuf<10){$daybuf=bTWOKETA($daybuf);}#2桁数字に整える。
$HOLARY[]=$monbuf.$daybuf;
}

#★★★★★★★★★★ここから振替休日★★★★★★★★★★★
foreach($HOLARY as $buf){
$Mbuf=substr($buf,0,2);
$Dbuf=substr($buf,2,2);
$youbi=bGETYOUBI($year,$Mbuf,$Dbuf);
if($youbi=="日"){
$Dbuf++;
$Dbuf=bTWOKETA($Dbuf);
}
$HOLARY2[]=$Mbuf.$Dbuf;
}

#★★★★★★★★★★ここから休日と休日の間・国民の休日を検索★★★★★★★★★★★

foreach($HOLARY2 as $buf){
$HOLARY3[]=$buf;
$Mbuf=substr($buf,0,2);
$Dbuf=substr($buf,2,2);
$Dbuf2=bTWOKETA($Dbuf+2);
if(array_search ($Mbuf.$Dbuf2, $HOLARY2)){
if(bGETYOUBI($year,$Mbuf,$Dbuf)<>"土"){
$HOLARY3[]=$Mbuf.bTWOKETA($Dbuf+1);
}
}
}
return $HOLARY3;

}

time

| コメント(0) | トラックバック(0)
$myTime=time();
1970/1/1 0:00:00 からの経過秒数

mktime

| コメント(0) | トラックバック(0)
$myTime=mktime(22,45,5,7,5,2004);
時,分,秒,月,日,年

UNIXタイムスタンプを返す

microtime

| コメント(0) | トラックバック(0)
$time=time();
$time=microtime();

getdate

| コメント(0) | トラックバック(0)
$myTime=time();
$ARY = getdate($myTime); 

配列が戻り値
[seconds] => 40
[minutes] => 58
[hours] => 21
[mday] => 17
[wday] => 2
[mon] => 6
[year] => 2003
[yday] => 167
[weekday] => Tuesday
[month] => June
[0] => 1055901520

date

| コメント(0) | トラックバック(0)
date(Y);//年4ケタ
date(n);//月
date(m);//月2ケタ
date(j);//日
date(d);//日2ケタ
date(H);//時
date(i);//分

a :午前または午後(小文字) am or pm
A :午前または午後(大文字) AM or PM
B :Swatch Internet time 000 から 999
d :日。二桁の数字(先頭にゼロがつく場合も) 01 から 31
D :曜日。3文字のテキスト形式。 Mon から Sun
F :月。フルスペルの文字。 January から December
g :時。12時間単位。先頭にゼロを付けない。 1 から 12
G :時。24時間単位。先頭にゼロを付けない。 0 から 23
h :時。数字。12 時間単位。 01 から 12
H :時。数字。24 時間単位。 00 から 23
i :分。先頭にゼロをつける。 00 to 59
I :(大文字の i) サマータイム制か否か 1ならサマータイム制。 0ならそうではない。
j :日。先頭にゼロをつけない。 1 から 31
l :(小文字の 'L') 曜日。フルスペル形式。 Sunday から Saturday
L :閏年であるかどうかを表す論理値。 1なら閏年。0なら閏年ではない。
m :月。数字。先頭にゼロをつける。 01 から 12
M :月。3文字形式。 Jan から Dec
n :月。数字。先頭にゼロをつけない。 1 から 12
O :グリニッジ標準時(GMT)との時間差 Example: +0200
r :RFC 822 フォーマットされた日付 Example: Thu, 21 Dec 2000 16:01:07 +0200
s :秒。先頭にゼロをつける。 00 から 59
S :英語形式の序数を表すサフィックス。2 文字。 st, nd, rd or th. Works well with j
t :指定した月の日数。 28 から 31
T :このマシーンのタイムゾーンの設定。 Examples: EST, MDT ...
U :Unix 時(1970年1月1日0時0分0秒)からの秒数 See also time()
w: 曜日。数値。 0 (日曜)から 6 (土曜)
W ISO-8601 月曜日に始まる年単位の週番号 (PHP 4.1.0で追加) Example: 42 (the 42nd week in the year)
Y :年。4 桁の数字。 Examples: 1999 or 2003
y :年。2 桁の数字。 Examples: 99 or 03
z :年間の通算日。数字。 0 から 366
Z :タイムゾーンのオフセット秒数。 UTCの西側のタイムゾーン用のオフセットは常に負です。そして、 UTCの東側のオフセットは常に正です。

sidebar.phpの

<h3>Categories</h3>
<ul>	
<?php wp_list_categories('title_li='); ?>
</ul>

の下に下記を挿入します。


<?
if($_GET[cat]){
$cat = 'category='.$_GET[cat];
$cathtml = '&cat='.$_GET[cat];
$catname = get_cat_name($_GET[cat]);
}else{
$catname = "最新";
}
print '<h3>'.$catname.'の記事一覧</h3>';
$post_data = get_posts($cat);
if($post_data){
foreach($post_data as $post){
?>
<li><a href="<?the_permalink();?><?=$cathtml?>"><?the_title();?></a></li>
<?
}
}
?>

カテゴリ

このアーカイブについて

このページには、2009年6月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2009年5月です。

次のアーカイブは2009年7月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

OpenID対応しています OpenIDについて