ユニークなIDを生成!PHPでuniqidを使う方法【初心者向け】
初心者向けにPHPでuniqid関数を使う方法について解説しています。マイクロ秒単位の現在時刻にもとづいた唯一の値(ユニークID)を生成する書き方を説明しています。実際にいくつか書いてみているので、参考にしてみてください。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
PHPでuniqidを使う方法について解説します。
現在時刻にもとづいたユニークなIDを生成する関数で、いくつか書き方を紹介しているので、ぜひ理解しておきましょう。
そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプPHP/Laravel講座の内容をもとに紹介しています。
今回は、PHPに関する内容だね!
どういう内容でしょうか?
PHPでuniqidを使う方法について詳しく説明していくね!
お願いします!
uniqidとは
PHPで用意されている唯一の値(ユニークID)を生成する関数です。
現在時刻のマイクロ秒までを元にして、唯一の値を生成します。
ただ、唯一の値といっても、現在時刻を元にしているため、複数のサーバでマイクロ秒まで同じ時刻で、uniqidを実行すると同じ値が生成されてしまうので注意が必要です。
この問題は第一引数にプレフィックス(接頭辞)を指定できることを応用して回避できます。それはプレフィックスにrand関数を利用してランダムな値を指定することです。
また、使い所としては、画像やファイルのアップロード時で、アップロードファイルを保存する際のファイル名の生成などで利用される場合がありそうです。
注意点としてはuniqidは暗号としては脆弱なので、パスワードやトークンとして利用しないように気をつけましょう!
uniqidの書き方
第一引数はプレフィックスとなります。
第二引数は生成される文字数を増やすかどうかをtrue/falseで指定します。第二引数はデフォルトではfalse状態で、生成される文字数は13文字です。
[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは
実際に書いてみよう
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エンジニアの経験は5年ほどです。TechAcademyではPHP/Laravelコースを担当しています。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもPHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。