勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

PHPでアクセスIPからランダム英数字のIDを作成

   2024/02/25  PHP

PHPで掲示板などにあるようなアクセスIPからランダム英数字のIDを作成したかった。以下にほしい機能とソースをメモ。

 

ほしい機能

  • IPアドレスもしくは会員IDなどからランダムIDを作成
  • 日付によってランダムIDを変えたり変えなかったりする
  • ランダムIDの桁数も決めたい

 

ソースコード

//----------------------------------------
//    $limit(int) ランダムIDの桁数。デフォルトは10桁。
//    $daily(bool) 日付によってIDを変えるかどうか。デフォルトは変えない。
//    $free(text) 閲覧者のIPやユーザーID等、自由入力。空の場合は閲覧者のIPを使用。
//----------------------------------------
function createId( $limit = 10, $daily = false, $free = '' )
{
    $daily_md5 = ( $daily ) ? md5(date('Y-m-d')): '';
    $free_md5 = ( $free ) ? md5( $free ) : md5( $_SERVER['REMOTE_ADDR'] );

    $id = substr(base64_encode($daily_md5 . $free_md5), 0, $limit);

    return $id;
}

 - PHP

  関連記事

PHPにてmicrotimeで秒数を測定した際「xxxxxE-5」のような値になる場合の対応方法
PHPにてmicrotimeで秒数を測定した際「xxxxxE-5」のような値になる場合の対応方法

PHPで過去記事を参考の上、あるプログラムの処理にかかった時間を測定しようとした ...

Codeigniter4で独自・外部ライブラリの作成と呼び出し方法
Codeigniter4で独自・外部ライブラリの作成と呼び出し方法

Codeigniter4で独自ライブラリを作成し、コントローラー側で呼び出したい ...

PHPで引数の先頭に&(アンパサンド)をつける参照渡し(リファレンス渡し)について
PHPで引数の先頭に&(アンパサンド)をつける参照渡し(リファレンス渡し)について

他社が作成されたPHPのソースコードを拝見していると関数の引数の頭に&( ...

PHPからMySQLに接続する際「getaddrinfo for xxxxxx failed」エラーの対応方法
PHPからMySQLに接続する際「getaddrinfo for xxxxxx failed」エラーの対応方法

Podmanコンテナ環境で直前まではPHP→MySQL接続できていたのに「pod ...

Composerで後から別のパッケージを追加する方法と削除する方法
Composerで後から別のパッケージを追加する方法と削除する方法

Composerで何らかのパッケージをインストールし、後から別のパッケージを追加 ...