ユーザー登録時の確認メール。24h以内ならば有効。DBよりdatetime型の「レコード作成日時」を取得し、「24h前の現在時刻」と比較

MySQLMySQLi

概要

 閲覧数:1622  投稿日:2014-10-29  更新日:2020-04-03  

ユーザー登録時の確認メール
・24h以内ならば有効
・DBよりdatetime型の「レコード作成日時」を取得し、「24h前の現在時刻」と比較


2038年問題を考慮すると、下記実装の方が良い
http://phpcode.w4c.work/php/status/205


コード

  
	// オブジェクト指向型
	
	$urlhash   = "○○";

	$DBSERVER   = "localhost";    //MySQLサーバー名
	$DBUSER     = "○○";         //ログインユーザー名
	$DBPASSWORD = "○○";             //パスワード
	$DBNAME      = "○○";    //データベース名

	$mysqli = new mysqli($DBSERVER, $DBUSER, $DBPASSWORD, $DBNAME);

	//MySQL読み込み時の文字コードを設定(クライアントのデフォルト文字セットを設定)
	$mysqli->set_charset("utf8");// http://php.net/manual/ja/mysqli.set-charset.php
	
	//接続状況をチェック(直近の接続コールに関するエラーコードを返す)
	if (mysqli_connect_errno()) {
    	printf("Connect failed: %s\n", mysqli_connect_error());//直近のエラーの内容を文字列で返す
    	exit();
	}

	
	// プリペアドステートメントを作成
if ($stmt = $mysqli->prepare("SELECT created_at FROM user WHERE usr_confirm_hash = ?")) {// http://php.net/manual/ja/mysqli.prepare.php

	// パラメータを変数にバインド
	$stmt->bind_param("s", $urlhash);// stringの場合は、s。http://jp.php.net/manual/ja/mysqli-stmt.bind-param.php

	// クエリ実行
	$stmt->execute();

	// 結果変数をバインド
  $stmt->bind_result($result);// http://jp2.php.net/manual/ja/mysqli-stmt.bind-result.php

	// 値を取得
	$stmt->fetch();
	
  printf("%s\n", $result);

	// ステートメントを閉じる
  $stmt->close();
    
}

	// 接続を閉じる
	$mysqli->close();

$register = strtotime($result);//取得したレコード作成日時を、タイムスタンプへ変換

$confirm = strtotime("now -24 hour");//24h前の現在時刻

if($confirm<=$register){//C <= R	「24h前の現在時刻」「レコード作成日時」比較
	echo "有効";
}else{
	echo "無効";
	}





類似度ページランキング
順位 ページタイトル抜粋
1 ユーザー登録時の確認メール。24h以内ならば有効。DBよりdatetime型の「レコード作成日時」を取得し、「24h前の現在時刻」と比較 78
2 MySQLのdatetime型カラムより取得した「文字列」を、(先頭0なしの)年月日時分秒で表示 34
3 MySQLのdatetime型カラムに格納している値と比較して、24時間以内かどうかを判定 34
4 MySQLのdatetime型カラムより取得した「月日文字列」先頭に0があった場合、削除 30
5 MySQLのdatetime型へ格納するため、現在日時の1440分(1日)後を計算 28
6 2 つの配列(文字列とdatetime)が要素順で 対応している時、日付を整形して 新しい配列を作成 27
7 UNIXのタイムスタンプから日付(文字列)を取得後、「現在の年月日時分秒」を表示 … getdate() 27
8 指定日時より指定期間前の日時を取得 … strtotime() 26
9 投稿日時をTwitterのように「 26
10 Smartyのテンプレートにincludeしたファイルを表示 24
11 (データベースなどから取得した)多次元配列の値と、一次元配列を比較して、「一致」及び「増減」を返す 24
12 UNIXのタイムスタンプから日付(文字列)を取得後、「アクセスした時点の年月日時分秒」を整形して表示 … date() 24
13 gethostbynamel / 指定したインターネットホスト名に対応するIPv4アドレスの配列を取得 24
14 stdClassで、指摘キー毎の数をカウント後、新たなキー「count」として追加 / foreach 24
15 「range(int または numeric string または string)で生成した複数配列」をマージした結果の型を確認 23
16 gethostbyaddr / IPアドレスからホスト名を取得 22
17 dateとgmdateの比較 22
18 gethostbyname / インターネットホスト名に対応するIPv4アドレスを取得 22
19 「1週間後の年月日時分秒」を表示 … time() 22
20 対象文字列の内、「最初の指定文字列以前」と「それ以降の文字列」を取得する 21
2026/4/24 11:35 更新