一時的にファイルを保管したい場合にファイル名が重複しなようにつけなければなりません。


ちなみに一時ファイルの事をみなさんは何て言っていますかね?


わたしは、テンポラリファイル、temporary、temp、一時ファイルとかですかね?


予断はさておき、1から順に振っていく場合は、ファイル番号1はあるかどうか?DBからシーケンス番号を取得する等あります。


だが、どれもオーバヘッドが大きくなるので、二重にならい用にユニークな文字列を付け、それをファイル名にする方法もあります。


今回はその方法で↓になります。

$file_name=md5(uniqid(rand(), true));
$file_name .= '.xml';


こんな感じで、できた文字列に拡張子をつければ完成です



内容としては次のような事をやってます。

rand関数でランダム文字列を取得。


uniqidでrand文字列をprefixにした文字列を生成。


生成された文字列からmd5関数を利用しハッシュ値を算出。


以上


これで一時(テンポラリ)ファイルのファイル名は作成完了。



後はtempname関数を利用すれば同様の事が可能です。


ディレクトリが既に決まっている場合は↓


$file_name=tempnam("/tmp", "pre");


http://php.net/manual/ja/function.tempnam.php



一時ファイルに融通をきかせたい場合は、最初のやり方、特に何でもいい場合は後者がよいかと。


(更に一時ファイル自体を作成する関数もありますんで、TPOで使い分けを)

日付は世界各国で表現の仕方が違い、また年のみ、月日のみといった柔軟な整形が必要となる項目かと思います。


C#では以前に和暦の変化の仕方を掲載しましたが右矢印こちらの記事


今回はMySQLでSelectする前や比較時に日付をフォーマットする方法を掲載します。


select DATE_FORMAT(test_date, '%Y/%/m/%d') from test


mysqlの関数DATE_FORMATを利用すれば可能です。


特に時間を取り除きたい場合なんかには重宝する関数でわ。

PHPでユーザーエージェント(User Agent)を取得する方法は↓です。


$user_agent = $_SERVER['HTTP_USER_AGENT'];



ちなみにユーザーエージェントは、クライアントから送られてくるOSやブラウザの情報を文字列化したものです。


DOCOMOやSOFTBANK、AUもこれで調べることが可能です。


$_SERVERを利用すれば、その他にリファラー(HTTP_REFERER)や接続先IP(REMOTE_ADDR)も取得が可能です。


いろいろ試してみてください。


PHP×携帯サイト デベロッパーズバイブル/荒木 稔
¥2,940
Amazon.co.jp

PHP×携帯サイト 実践アプリケーション集/株式会社マイネット・ジャパン
¥2,940
Amazon.co.jp