Last active
September 3, 2015 01:01
-
-
Save kawabataryo/961cdd6037739311f9a7 to your computer and use it in GitHub Desktop.
mailform sample
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
ini_set('display_errors', 0); | |
session_start(); | |
//トークンを生成 | |
$token = sha1(uniqid(mt_rand(), true)); | |
$_SESSION['token'] = $token; | |
//エスケープ | |
function h($s){ | |
return htmlspecialchars($s, ENT_QUOTES, "UTF-8"); | |
} | |
?> | |
<!DOCTYPE html> | |
<html lang="ja"> | |
<head> | |
<meta charset="UTF-8" /> | |
<title></title> | |
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> | |
</head> | |
<body> | |
<form id="contact-form" action="./check.php" method="post"> | |
<input type="hidden" name="sub_actions" value="confirm"> | |
<table> | |
<tbody> | |
<tr> | |
<th>お名前</th> | |
<td><input type="text" name="name" value=""></td> | |
</tr> | |
<tr> | |
<th>メールアドレス</th> | |
<td><input type="text" name="e_mail" value=""></td> | |
</tr> | |
<tr> | |
<th>メールアドレス(確認用)</th> | |
<td><input type="text" name="e_mail_confirm" value=""></td> | |
</tr> | |
<tr> | |
<th style="vertical-align:top;">お問い合わせ内容</th> | |
<td><textarea name="comment" rows="4" cols="40"></textarea> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
<div class="bt"> | |
<input type="hidden" value="<?php echo h($_SESSION['token']); ?>" name="token"> | |
<input type="submit" value="確認画面へ" name="submit"> | |
</div> | |
</form> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
ini_set('display_errors', 0); | |
session_start(); | |
//不正アクセスチェック | |
if(empty($_SESSION['token']) || ($_SESSION['token'] != $_POST['token'])){ | |
echo '不正なアクセスです。'; | |
exit; | |
} | |
if(strpos($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME']) === false){ | |
echo '不正なアクセスです。'; | |
exit(); | |
} | |
$_SESSION = $_POST; | |
//エスケープ | |
function h($s){ | |
return htmlspecialchars($s, ENT_QUOTES, "UTF-8"); | |
} | |
//入力項目チェック用の関数 | |
function checkNameRequired(){ | |
if(!empty($_POST['name'])){ | |
return true; | |
} | |
} | |
function checkMailRequired(){ | |
if(!empty($_POST['e_mail']) ){ | |
return true; | |
} | |
} | |
function checkMail(){ | |
if (preg_match('|^[0-9a-z_./?-]+@([0-9a-z-]+\.)+[0-9a-z-]+$|', $_POST['e_mail'])) { | |
return true; | |
} | |
} | |
function checkMailConfirm(){ | |
if($_POST['e_mail'] == $_POST['e_mail_confirm']){ | |
return true; | |
} | |
} | |
?> | |
<!DOCTYPE html> | |
<html lang="ja"> | |
<head> | |
<meta charset="UTF-8" /> | |
<title></title> | |
</head> | |
<body> | |
<form id="contact-form" action="./send.php" method="post"> | |
<input type="hidden" name="sub_actions" value="confirm"> | |
<table> | |
<tbody> | |
<tr> | |
<th>お名前</th> | |
<td> | |
<?php | |
if(checkNameRequired()){ | |
echo h($_POST['name']); | |
}else{ | |
echo '入力必須項目です。'; | |
} | |
?> | |
</td> | |
</tr> | |
<tr> | |
<th>メールアドレス</th> | |
<td> | |
<?php | |
if(checkMailRequired() && checkMail() && checkMailConfirm()){ | |
echo h($_POST['e_mail']); | |
}else if(!checkMailRequired()){ | |
echo '入力必須項目です。'; | |
}else if(!checkMail()){ | |
echo 'メールアドレスの形式が間違っています。'; | |
}else if(!checkMailConfirm()){ | |
echo 'メールアドレスが一致していません。'; | |
} | |
?> | |
</td> | |
</tr> | |
<tr> | |
<th style="vertical-align:top;">お問い合わせ内容</th> | |
<td><?php echo h($_POST['comment']);?> | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
<div class="bt"> | |
<a href="javascript:history.back();"> | |
<input type="button" value="戻る"> | |
</a> | |
<input type="hidden" value="<?php echo h($_SESSION['token']); ?>" name="token"> | |
<?php | |
if(checkNameRequired() && checkMailRequired() && checkMail() && checkMailConfirm()){ | |
echo '<input type="submit" value="送信" name="submit">'; | |
} | |
?> | |
</div> | |
</form> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
ini_set('display_errors', 0); | |
session_start(); | |
//不正アクセスチェック | |
if(empty($_SESSION['token']) || ($_SESSION['token'] != $_POST['token'])){ | |
echo '不正なアクセスです。'; | |
exit; | |
} | |
if(strpos($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME']) === false){ | |
echo '不正なアクセスです。'; | |
exit(); | |
} | |
//config | |
$admin_mail = 'test@sample.com'; | |
//メールヘッダー | |
$add_header="From: $admin_mail\r\n"; | |
$add_header .= "X-Mailer: PHP/". phpversion(); | |
$opt = '-f'. $admin_mail; | |
//自動返信メール | |
$return_message =<<<HTML | |
お問い合わせ内容の確認です。 | |
お名前 | |
{$_SESSION['name']} | |
E_mail | |
{$_SESSION['e_mail']} | |
お問い合わせ内容 | |
{$_SESSION['comment']} | |
HTML; | |
//管理者宛メール | |
$admin_message =<<<HTML | |
お問い合わせが届きました。 | |
お名前 | |
{$_SESSION['name']} | |
E_mail | |
{$_SESSION['e_mail']} | |
お問い合わせ内容 | |
{$_SESSION['comment']} | |
HTML; | |
//メールアドレスチェック | |
$e_mail = $_SESSION['e_mail']; | |
if (preg_match('|^[0-9a-z_./?-]+@([0-9a-z-]+\.)+[0-9a-z-]+$|', $e_mail)) { | |
$e_mail = $e_mail; | |
}else{ | |
echo '不正なメールアドレスです。'; | |
exit; | |
} | |
mb_language("ja"); | |
mb_internal_encoding("UTF-8"); | |
mb_send_mail($e_mail,"【お問い合わせ】確認メール",$return_message,$add_header,$opt); | |
mb_send_mail($admin_mail,"お問い合わせがありました",$admin_message,$add_header,$opt); | |
// セッション、セッションIDを破棄 | |
session_destroy();// セッションを破棄 | |
setcookie("PHPSESSID", '', time() - 1800, '/'); | |
?> | |
<!DOCTYPE html> | |
<html lang="ja"> | |
<head> | |
<meta charset="UTF-8" /> | |
<title></title> | |
</head> | |
<body> | |
<p>送信完了しました</p> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment