自作ログイン | 基本

Demo

demo1.php

	<?php 
	if(!empty($_POST['login_submit'])){
		$pw_hash2 = getTestPwHash($_POST['uid']);
			if(password_verify($_POST['password'], $pw_hash2)){
				print 'ログイン成功';
			}else{
				print 'ログイン失敗';
			}
	}
	
	function getTestPwHash($uid){
		// 本来は、DBからユーザーIDにひもづくパスワードハッシュを取得処理である。
		// テスト用にパスワードハッシュを直に記述している。
		$pw='hogehoge'; // テストパスワード
		$pw_hash = password_hash($pw, PASSWORD_DEFAULT);
		return $pw_hash;
	}
	?>
	<form action="#" method="post">
		<input name="uid" type="text" /><br>
		<input name="password" type="password" />テスト用パスワード→hogehoge<br><br>
		<input type="submit" name="login_submit" value="Login" class="btn btn-primary"/>
	</form>
	
参考サイト:あぱーブログ:PHP のセッションを使ったログイン認証はなぜ安全なのか?


自作ログイン | ログインチェックとログアウト

Demo

demo2.php(main)

	<?php 
	// ログインチェック
	session_start();
	if(empty($_SESSION['uid'])){
		$_SESSION['referer'] = $_SERVER['REQUEST_URI'];
		header('Location: demo2_login.php');
		exit;
	}
	?>
	ログインが必要なページです。<br>
	<a href="demo2_logout.php" class="btn btn-default">ログアウト</a><br>
	

demo2_login.php

	<?php 
	if(!empty($_POST['login_submit'])){
		session_start();
		if(empty($_SESSION['uid'])){
			$pw_hash2 = getTestPwHash();
			if(password_verify($_POST['password'], $pw_hash2)){
				session_regenerate_id(true); // セッションの更新
				$_SESSION['uid'] =$_POST['uid'];
				header('Location: ' . $_SESSION['referer']);// 遷移元のページにリダイレクトする。
				exit();
			}else{
				print 'ログイン失敗';
			}
		}
	}
	
	function getTestPwHash(){
		// 本来は、DBからユーザーIDにひもづくパスワードハッシュを取得処理である。
		// テスト用にパスワードハッシュを直に記述している。
		$pw='hogehoge'; // テストパスワード
		$pw_hash = password_hash($pw, PASSWORD_DEFAULT);
		return $pw_hash;
	}
	?>
	
	<form action="#" method="post">
		<input name="uid" type="text" /><br>
		<input name="password" type="password" />テスト用パスワード→hogehoge<br>
		<input type="submit" name="login_submit" value="Login" class="btn btn-primary"/>
	</form>
	

demo2_logout.php

	<?php 
	session_start();
	$_SESSION['uid'] = null;
	?>
	ログアウトしました。<br>
	<a href="demo2.php">demo2へ戻る</a><br>
	<br>
	


メール送信 | mb_send_mail


	// 日本語文字化け対策
	mb_language("Japanese");
	mb_internal_encoding("UTF-8");

	$to = "example@example.com"; // 宛先メールアドレス
	$subject = "テストメールのタイトル";
	$message = "こんにちは テストメールです。\n本日の天気はいかがですか。";
	$headers = "";
	mb_send_mail($to, $subject, $message, $headers);
	

このサンプルは、さくらレンタルサーバー(スタンダードプラン)の環境で動作する。 メールホストの設定は特にしなくても動作したが、設定が必要になった場合はLaravelのメール送信設定 を参考にできるかもしれない。 なお、ローカル環境では動作しない。
「$headers」は空でよい。下手に値を指定すると受信側にて警告メッセージが表示されてしまう。
メール文章の改行は「\n」。
設定について

パスワード自動生成


	// 8桁のパスワードをランダム作成(2種類以上の文字は選ばれない)
	$password = substr(str_shuffle('1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, 8);
	echo $password;
	
参考サイト:Qiita@suin:ランダムなパスワードを1行で生成する


データのDB保存(オリジナル版) | save | saveAll

テストコード

$data = [
	['id'=>'1', 'kani_val'=>'1', 'kani_name'=>'大猫', 'kani_date'=>'2014-04-01', 'kani_group'=>'2', 'kani_dt'=>'2014-12-12 00:00:00', 'note'=>'', 'delete_flg'=>'0', 'update_user'=>'test', 'ip_addr'=>'::1', 'created'=>'2012-12-12'],
	['id'=>2, 'kani_val'=>'99', 'kani_name'=>'kani', 'kani_date'=>'', 'dummy'=>'エラー'],
	['id'=>'4', 'kani_val'=>'4', 'kani_name'=>'buta', 'kani_date'=>'2014-04-04', 'kani_group'=>'2', 'kani_dt'=>'2014-12-12 00:00:03', 'note'=>'AA¥r¥nBBB¥r¥n<input />', 'delete_flg'=>'0', 'update_user'=>'kani'],
	['id'=>'', 'kani_val'=>'3', 'kani_name'=>'ニューレコード', 'kani_date'=>'2015-09-17', 'kani_group'=>'2', 'kani_dt'=>'2014-12-12 00:00:02', 'note'=>'', 'delete_flg'=>'0', 'update_user'=>'kani', 'ip_addr'=>'::1', 'created'=>'2012-12-13', 'modified'=>'2012-12-14'],
];



require_once 'SaveData.php';
$saveData = new SaveData();

// データDB登録テスト
$res = $saveData->saveAll('kanis', $data);
debug($res['rData']);
debug($res['err_msg']);

// エンティティDB登録テスト
$ent = $data[3];
$res = $saveData->save('kanis', $ent);
debug($res['rEnt']);
debug($res['err_msg']);

// 行削除テスト
$saveData->delete('kanis', 20);


function debug($value){
	echo '<pre>';
	var_dump($value);
	echo '</pre>';
}

連想配列から変数を作成する | extract


	$box = ['neko'=>'ネコ', 'inu'=>'犬', 'buta'=>'ブタ'];
	extract($box, EXTR_REFS);
	
	echo $neko;
	echo '<br>';
	echo $inu;
	echo '<br>';
	echo $buta;
	
	$box['buta'] = "大ブタ";
	echo '<br>';
	echo $buta;
	

出力

	ネコ
	犬
	ブタ
	大ブタ