目次 >> php
ここでは、PHP(Hypertext Preprocessor)関係のtipsを記述する。
mail関数を使います。
mail関数は宛先、題名、メッセージの本体、ヘッダを指定できます。Fromは直接は指定できないので、ヘッダに入れてやります。
$to = "toaddress@example.com" ; $subject = "subject is here"; $headers = "From: fromaddress@example.com\r\nContent-Type: text/plain; charset=\"UTF-8\"\r\n"; $message = "Hello!"; mail($to, $subject, $message,$headers);
charset=\"UTF-8\"の部分は、phpのコードがUTF-8で書かれている場合です。これをつけておかないと、メーラーはデフォルトでUTF-8と仮定していることはほとんどないので、日本語を送ると文字化けします。別の方法としては、メッセージ内容をISO-2022-JPなどに変換してから送る方法もあります。
クッキーの値を読み出すには$_COOKIE['hogehoge']を使います。
//クッキーにhogehogeという名前で保存された値を読み出す $hoge = $_COOKIE['hogehoge'];
クッキーに保存するにはsetcookie関数を使います。
setcookieはすべての出力の前に行う必要がある。
//$hogeの内容をhogehogeという名前で保存。有効期限は現在の時刻から1週間後 setcookie("hogehoge", $hoge, time() + 3600*24*7);
$_POST[name]を使います。
header関数を使い、Locationを送信します。
//同じディレクトリ上のsomewhere.htmlに飛びます header("Location: ./somewhere.html");
$_SERVER["REMOTE_ADDR"]を使います。
通常、JPEGファイルやテキストファイルは、単純にリンクすると、ブラウザで表示されます。
これを、ブラウザで表示させずに、ダウンロードダイアログボックスを表示させるようにするには次のようにします。
<?php header("Content-type: image/jpeg"); header("Content-Disposition: attachment; filename=hogehoge.jpg"); header("Content-length: " . filesize("./TEST.JPG")); readfile("./TEST.JPG"); ?>
hogehoge.jpgがブラウザに渡される名前で、ファイルをセーブする際のデフォルトの名前として使われます。
一方、TEST.JPGは実際にサーバにあるファイルで、ダウンロードされるファイルの中身はこのファイルになります。
テキストファイルも同様に、
<?php header("Content-type: text/plain"); header("Content-Disposition: attachment; filename=hogehoge.txt"); header("Content-length: " . filesize("./TEST.TXT")); readfile("./TEST.TXT"); ?>
とします。
なお、ダウンロードではなく、ブラウザで表示させる場合は、Content-Dispositionの部分のattachmentをinlineに変えると出来ます。
<?php header("Content-type: image/jpeg"); header("Content-Disposition: inline; filename=hogehoge.jpg"); header("Content-length: " . filesize("./TEST.JPG")); readfile("./TEST.JPG"); ?>
<?php header("Content-type: text/plain"); header("Content-Disposition: inline; filename=hogehoge.txt"); header("Content-length: " . filesize("./TEST.TXT")); readfile("./TEST.TXT"); ?>
ftp_put関数を使います。
ftp_loginでログインした後、ftp_putでアップロードします。
//FTPサーバに接続します $ffp = ftp_connect("ftp.example.com"); //パスワードとユーザー名を使ってログインします。 ftp_login($ffp, "username", "password"); //ログインが成功したなら、処理を継続 if ($ffp) { // ファイルをアップロード $upload = ftp_put($ffp, "destination.txt", "source.txt", FTP_ASCII); } //FTP処理を終了します ftp_quit($ffp);
date関数を使います。
time関数は、1970年1月1日 00:00:00 GMTからの通算秒数しか入っていないので、dateを使ってフォーマットをしてやる必要があります。
//ローカルの年月日、及び時刻を取得する date("Y/m/d H:i:s");
フォーマットなどの詳しい情報は、マニュアルを参照のこと
gmdate関数を使います。
グリニッジ標準時になる以外は、date関数と使い方は一緒です。
exif_read_data関数を使います。
flock関数を使います。
ロックは、ファイルがfcloseでクローズされた場合、あるいは、スクリプトが終了した場合に、解除されます。
$fp = fopen ("filename.txt","a"); flock($fp, LOCK_EX);
readdir関数を使います。
if ($handle = opendir("./somedir/")) { while (false !== ($file = readdir($handle))) { //ここで書くファイルに対する処理を行う } closedir($handle); }
$fp = fopen($logfile, "w"); flock($fp, 2); fputs($fp, implode('',$new_log)); fclose($fp);
mkdirを使います。
mkdir ("/path/to/my/dir", 0700);
chmod関数を使います。
Fedoraの場合は、yum install phpでインストールする。
php -vで調べられる。
$ php -v PHP 5.2.6 (cli) (built: Sep 13 2008 11:13:28) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
OS:fedora
もともとは
$ php -v PHP 4.3.4 (cgi) (built: Apr 7 2004 09:43:47) Copyright (c) 1997-2003 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2003 Zend Technologies
まずはソースのダウンロード(http://www.php.net/downloads.php)
$ ./configure $ make # make install
で完了
ログインし直してphp -v
を打ってみると
標準では
$ php -v PHP 5.0.4 (cgi) (built: Apr 6 2005 05:37:21) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.0.4-dev, Copyright (c) 1998-2004 Zend Technologies
となるはず。
ubuntuの場合は、もしphpがインストールされていない場合は、phpとタイプすると、
$ php The program 'php' is currently not installed. You can install it by typing: sudo apt-get install php5-cli -bash: php: command not found
このようなメッセージが出てくるはずである。これに従い、apt-get install php5-cliでインストールする。
$ sudo apt-get install php5-cli Reading package lists... Done Building dependency tree Reading state information... Done E: Couldn't find package php5-cl satod@ubu:~$ sudo apt-get install php5-cli Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: php5-common Suggested packages: php-pear The following NEW packages will be installed: php5-cli php5-common 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 2957kB of archives. After this operation, 6734kB of additional disk space will be used. Do you want to continue [Y/n]? y Get:1 http://us.archive.ubuntu.com hardy-updates/main php5-common 5.2.4-2ubuntu5.1 [317kB] Get:2 http://us.archive.ubuntu.com hardy-updates/main php5-cli 5.2.4-2ubuntu5.1 [2640kB] Fetched 2957kB in 9s (323kB/s) Selecting previously deselected package php5-common. (Reading database ... 118480 files and directories currently installed.) Unpacking php5-common (from .../php5-common_5.2.4-2ubuntu5.1_amd64.deb) ... Selecting previously deselected package php5-cli. Unpacking php5-cli (from .../php5-cli_5.2.4-2ubuntu5.1_amd64.deb) ... Setting up php5-common (5.2.4-2ubuntu5.1) ... Setting up php5-cli (5.2.4-2ubuntu5.1) ... Creating config file /etc/php5/cli/php.ini with new version
最終更新日