ユニークなIDを生成!PHPでuniqidを使う方法【初心者向け】

初心者向けにPHPでuniqid関数を使う方法について解説しています。マイクロ秒単位の現在時刻にもとづいた唯一の値(ユニークID)を生成する書き方を説明しています。実際にいくつか書いてみているので、参考にしてみてください。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

PHPでuniqidを使う方法について解説します。

現在時刻にもとづいたユニークなIDを生成する関数で、いくつか書き方を紹介しているので、ぜひ理解しておきましょう。

 

なお本記事は、TechAcademyのPHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、PHPに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PHPでuniqidを使う方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

uniqidとは

PHPで用意されている唯一の値(ユニークID)を生成する関数です。
現在時刻のマイクロ秒までを元にして、唯一の値を生成します。

ただ、唯一の値といっても、現在時刻を元にしているため、複数のサーバでマイクロ秒まで同じ時刻で、uniqidを実行すると同じ値が生成されてしまうので注意が必要です。

この問題は第一引数にプレフィックス(接頭辞)を指定できることを応用して回避できます。それはプレフィックスにrand関数を利用してランダムな値を指定することです。

 

また、使い所としては、画像やファイルのアップロード時で、アップロードファイルを保存する際のファイル名の生成などで利用される場合がありそうです。

注意点としてはuniqidは暗号としては脆弱なので、パスワードやトークンとして利用しないように気をつけましょう!

 

uniqidの書き方

第一引数はプレフィックスとなります。

第二引数は生成される文字数を増やすかどうかをtrue/falseで指定します。第二引数はデフォルトではfalse状態で、生成される文字数は13文字です。

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

1. 第一引数の有無による違いを確認しましょう。

echo uniqid();          // 13文字の文字列が生成される
echo uniqid("""");        // 空文字を第一引数に指定するのは、引数なしと同じことです。
echo uniqid(""prefix_""); // 「prefix_」に13文字で生成された文字列が出力される

2. 第二引数を設定してみましょう。

echo uniqid("""", false);          // 13文字の文字列が生成される
echo uniqid(""prefix_"", false);   // 「prefix_」に続いて13文字で生成された文字列が出力される

echo uniqid("""", true);          // 23文字の文字列が生成される
echo uniqid(""prefix_"", true);   // 「prefix_」に続いて23文字で生成された文字列が出力される

3. 複数のサーバで同時実行を考慮しましょう。

echo uniqid(rand().'_');   // 「ランダム数値_」に続いて13文字で生成された文字列が出力される
この記事を監修してくれた方

青木 敦史(あおきあつし)
昼間は自社のWebサービスを運営している会社でフロントエンド/バックエンドを担当しているエンジニア。

Webエンジニアの経験は5年ほどです。TechAcademyではPHP/Laravelコースを担当しています。
開発実績: メイクレッスン支援アプリ / 電力自由化パッケージ / 携帯電話料金計算 / ライブチャットサービス

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

オンラインのプログラミングスクールTechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

PHPやフレームワークのLaravelを使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。