PHPでランダムIDを生成するランダムな文字列を生成する

PHPでランダムIDを生成するランダムな文字列を生成する

このコードは、PHPを使用して安全かつ高強度なランダムID(トークン)を生成するための関数です。セキュリティ性の高い乱数生成を実現し、ログイン認証、APIキー、CSRFトークンなどの用途に適したランダムな文字列を作成します。

セキュアな64文字ランダムトークン生成PHPコード

function ope_crypto_rand_secure($min, $max)
{
    $range = $max - $min;
    if ($range < 0) {
        return $min;
    }
    // not so random...
    $log = log($range, 2);
    $bytes = (int) ($log / 8) + 1; // length in bytes
    $bits = (int) $log + 1; // length in bits
    $filter = (int) (1 << $bits) - 1; // set all lower bits to 1
    do {
        $rnd = hexdec(bin2hex(openssl_random_pseudo_bytes($bytes)));
        $rnd = $rnd&$filter; // discard irrelevant bits
    } while ($rnd >= $range);
    return $min + $rnd;
}

function ope_getToken($length)
{
    $token = "";
    $codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $codeAlphabet .= "abcdefghijklmnopqrstuvwxyz";
    $codeAlphabet .= "0123456789";
    $codeAlphabet .= "[]_-()|,~.^?/$&`{};+@#";
    for ($i = 0; $i < $length; $i++) {
        $token .= $codeAlphabet[ope_crypto_rand_secure(0, strlen($codeAlphabet))];
    }
    return $token;
}

$ope_token = ope_getToken(64); // 64文字のランダム文字列を生成する

用語解説

🛡️ ope_crypto_rand_secure($min, $max)

  • 暗号的に安全な乱数バイトを使用し、$min から $max の範囲内の整数を返す
  • openssl_random_pseudo_bytes() + ビットフィルタリングで偏りを除去

🧪 ope_getToken($length)

  • 英大文字、小文字、数字、記号を含むランダム文字列を生成
  • 例えば ope_getToken(64) は 64文字のユニークなIDを出力

まとめ

このPHPコードは、セキュリティ要件が高いWebシステムにおいて必要とされる「ランダム性」と「予測不可能性」を兼ね備えたトークンを生成するために設計されています。openssl_random_pseudo_bytes() を使用することで、従来の rand()mt_rand() よりも安全性が高くなっています。

関連記事
IT業界の初心者が知っておくべきの用語(2025版)
新しいテクノロジーについて話すとき、時々自分がみんなのペースについていけないと感じることはありませんか?あるいは、その業界にいるのに、自分はまだ十分ではないと感じ、多くの専門用語を理解しなければならないこともあるでしょう。
Details
Details
7ヶ月前
IT業界の初心者が知っておくべきの用語(2025版)
!important なしでも大丈夫!CSS @layer でスタイル管理をもっと簡単に
CSS の !important は便利ですが、乱用すると保守が難しくなります。そこで注目されているのが新機能 @layer。この記事では、@layer を使って優先度を整理する方法を実装例とともに紹介します。
Details
Details
5ヶ月前
!important なしでも大丈夫!CSS @layer でスタイル管理をもっと簡単に
PHPの hash_equals 関数とは?なぜ == や === を使わないのか?
hash_equals は PHP において、2つの文字列が等しいかを安全に比較するための関数です。特にパスワードのハッシュや署名の検証などで使われます。== や === といった通常の比較演算子とは異なり、タイミング攻撃(Timing A […]
解構人
解構人
5ヶ月前
PHPの hash_equals 関数とは?なぜ == や === を使わないのか?
相対パスと絶対パスの使い方
相対パスは、モジュールやディレクトリ内のローカルな参照に適しており、柔軟性があります。一方、絶対パスはウェブサイト全体で共通のリソース(CSS、画像、CDNなど)を参照する際に便利です。両者を理解して使い分けることで、パスのエラーや読み込み不具合を防げます。
Details
Details
7ヶ月前
相対パスと絶対パスの使い方
よく使われるPHPライブラリ9選【公式リンク付き・2025年版】
2025年最新!PHPでのWeb開発に役立つライブラリ&フレームワーク12選を厳選紹介。Laravel・Symfony・PHPMailer・Guzzleなど、実務で使えるツールをまとめてチェック。公式リンク付きで、今すぐ使える便利リスト!
aki0o0
aki0o0
7ヶ月前
よく使われるPHPライブラリ9選【公式リンク付き・2025年版】
PHPで日本語の日付形式をタイムスタンプに変換する方法【午前/午後対応】
日本語の「2025年6月24日」や「2025年6月24日 午後3時30分」といった形式の日付を、PHPで正確にタイムスタンプへ変換する方法を解説。DateTimeクラスを使ったベストプラクティスや、午前・午後を含む特殊な形式の処理例も紹介します。日本向けWordPress開発にも最適。
キウイフルーツ
キウイフルーツ
7ヶ月前
PHPで日本語の日付形式をタイムスタンプに変換する方法【午前/午後対応】
WordPressサイトでメルマガ運用する時の注意点|簡単にできることには注意が必要でやんす。
「一括管理って響き最高!」だけど…WordPressでメルマガ配信するならセキュリティにご用心!メリットと落とし穴、そしてBenchmark Emailの使い方まで、編集長がゆるっと解説!
WASABI
WASABI
6ヶ月前
WordPressサイトでメルマガ運用する時の注意点|簡単にできることには注意が必要でやんす。
PHPでMySQLのバージョンを確認する方法
PHPを使ってMySQLのバージョンを取得する方法には、mysqli_get_server_info()、PDO::getAttribute()、および SELECT VERSION() という3つの一般的な方法があります。それぞれの方法でMySQLへの接続が必要です。
Details
Details
7ヶ月前
PHPでMySQLのバージョンを確認する方法
【jQuery】フルスクリーンナビゲーション時に背景のスクロールを無効にする方法
このjQueryコードは、トグルボタンの状態に応じてナビゲーションを開閉し、背景のスクロールを動的に制御します。クラス名 back をトリガーとして、html 要素に適切なスタイルを適用し、快適なフルスクリーンUIを提供します。
Details
Details
7ヶ月前
【jQuery】フルスクリーンナビゲーション時に背景のスクロールを無効にする方法
【CSSテクニック】:not()セレクタで階層を跨いだ除外を実現
:not()疑似クラスはCSSでの除外指定に便利ですが、親要素や階層関係に対しては思わぬ制約があります。本記事では、WordPressの投稿構造を例に、インラインコードとコードブロックを正確に区別するためのセレクタ設計を解説します。
無敵の小さな蚊
無敵の小さな蚊
6ヶ月前
【CSSテクニック】:not()セレクタで階層を跨いだ除外を実現
同一ドメイン配下の複数アプリケーションにおけるCSRF対策ガイド
目次 1. 技術的背景と適用シナリオ 代表的な適用例 技術的利点 潜在的なリスク 2. CSRF保護メカニズムの基本原則 保護の三要素 3. 複数アプリケーション環境におけるセキュリティ課題 3.1 セッション命名衝突の深層的影響 具体的な […]
解構人
解構人
7ヶ月前
同一ドメイン配下の複数アプリケーションにおけるCSRF対策ガイド
ユーザーのブラウザに保存されているJavaScript、CSS、画像のキャッシュを削除するにはどうすればいいですか?
ブラウザのキャッシュによる古いJavaScript、CSS、画像の表示を防ぐには、URLにバージョン番号や日時パラメータを付けてリソースを更新する方法が有効です。 毎回タイムスタンプを使うとキャッシュ効果がなくなるため、手動や適切なタイミングでバージョン番号を管理するのがおすすめです。
Details
Details
8ヶ月前
ユーザーのブラウザに保存されているJavaScript、CSS、画像のキャッシュを削除するにはどうすればいいですか?
Facebookがウェブページを開いたときに自動でFacebookアプリを起動し、指定したユーザーのページを開く方法
このチュートリアルでは、ウェブページからFacebookアプリを自動または手動で起動し、指定したFacebookページを開く方法を紹介しています。ページIDの取得方法、iPhoneとAndroidで異なるリダイレクト方法、リンクによる手動遷移の実装例を説明し、最後にクライアント判別を含むサンプルパッケージも提供しています。Facebook誘導やモバイルUX改善を目指す方におすすめです。
Details
Details
7ヶ月前
Facebookがウェブページを開いたときに自動でFacebookアプリを起動し、指定したユーザーのページを開く方法
画像の遅延読み込みはこう変わる!2025年最新版・Lazy LoadとIntersectionObserverの最適解
2025年最新の画像遅延読み込み(Lazy Load)完全ガイド。ネイティブloading="lazy"とIntersectionObserverの使い分け・実装例・SEOやLCPへの最新対応ポイントまで徹底解説。パフォーマンスと検索順位アップのための必読ノウハウ!
aki0o0
aki0o0
8ヶ月前
画像の遅延読み込みはこう変わる!2025年最新版・Lazy LoadとIntersectionObserverの最適解
ABテストとは?赤か青か?データが導く最適な選択
ABテストは、今やデジタルマーケティングの「常識」となった科学的な意思決定手法です。日本のECサイトやアプリ開発の現場でも、「どちらのデザインが効果的か」「どんなキャッチコピーが響くか」を決める際に頻繁に活用されています。 この手法のルーツ […]
解構人
解構人
6ヶ月前
ABテストとは?赤か青か?データが導く最適な選択