-
Notifications
You must be signed in to change notification settings - Fork 0
/
resetrequest.php
131 lines (117 loc) · 4.99 KB
/
resetrequest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php
require_once('./myid.php');
$errorMessage = '';
if (isset($_POST["login"])) {
if (empty($_POST["usermail"])) {
$errorMessage = 'メールアドレスが入力されていません.';
}
if (!empty($_POST["usermail"])) {
try {
$strcode = array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET CHARACTER SET 'utf8'");
$dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_ID, DB_PASS, $strcode);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$query = "SELECT * FROM AdminUsers WHERE Email = :usermail";
$stmt = $dbh->prepare($query);
$stmt->bindParam(':usermail', $_POST['usermail'], PDO::PARAM_STR);
$stmt->execute();
$UserSet = $stmt->fetch(PDO::FETCH_ASSOC);
if(!empty($UserSet['Email'])){
$token1 = substr(bin2hex(random_bytes(128)), 0, 128);
$token2 = substr(bin2hex(random_bytes(128)), 0, 128);
$exptoken = date("Y-m-d H:i:s",strtotime("+30 minute"));
$query = "INSERT INTO ResetToken (AuthKey, AuthPri, expired, UserID) VALUES (:token1, :token2, :expd, :userid)";
$stmt = $dbh->prepare($query);
$stmt->bindParam(':token1', $token1, PDO::PARAM_STR);
$stmt->bindParam(':token2', $token2, PDO::PARAM_STR);
$stmt->bindParam(':expd', $exptoken, PDO::PARAM_STR);
$stmt->bindParam(':userid', $UserSet['ID'], PDO::PARAM_INT);
$stmt->execute();
$toMail = $UserSet['Email'];
$returnMail = '[email protected]';
$name = "M-CMS";
$mail = '[email protected]';
$subject = "パスワードリセットリンクのお知らせ";
$mydomain = "moritoworks.com/cms";
$body = <<< EOM
{$name}をご利用頂きありがとうございます。
パスワードリセット依頼を承りましたのでご連絡致します。
パスワードリセットのお手続きを続けるには以下のURLにアクセスしてください。
※URLの有効期限はリセット依頼受付から30分間です。
https://{$mydomain}/resetauth.php?token1={$token1}&token2={$token2}
お手続きに身に覚えがない場合、お手数ですが運営事務局までお問い合わせ下さい。
なお、このメールは送信専用のメールアドレスで送信しているため、返信頂いても対応することができません。
何卒ご了承ください。
------------------------------
{$name}
Developed by Takenori Morio.
E-mail:[email protected]
------------------------------
EOM;
mb_language('ja');
mb_internal_encoding('UTF-8');
$header = 'From: ' . mb_encode_mimeheader($name) . ' <' . $mail . '>';
mb_send_mail($toMail, $subject, $body, $header, '-f' . $returnMail);
}
header("Location: ./requestcomplete.php");
exit(0);
} catch (PDOException $e) {
$errorMessage = 'データベースへの接続に失敗しました.';
}
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>パスワードリセット</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="css/materialize.min.css">
<link rel="stylesheet" type="text/css" href="css/whitestyle.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="js/materialize.min.js"></script>
<script>
$(document).ready(function() {
M.updateTextFields();
});
</script>
</head>
<?php
if($errorMessage!=null){
echo '
<div class="row">
<div class="col s12 m12 pink lighten-5">
<h5 class="valign-wrapper">
<i style="font-size: 2.5rem;" class="material-icons orange-text text-darken-5">warning</i>
<font class="red-text">';
echo " " . htmlspecialchars($errorMessage, ENT_QUOTES);
echo '</font>
</h5>
</div>
</div>
';
}
?>
<div class="loginForm">
<div class="centering">
<p class="image"><img src="img/logo.png" style="height:50px;weight:auto;"/></p>
</div>
<form class="col s12 m12 card blue-grey lighten-5" id="loginForm" name="loginForm" action="" method="POST" style="padding:10px;">
<div class="card-content grey-text text-darken-4">
<span class="card-title">パスワード変更手続き</span>
<div class="row">
<div class="input-field col s8">
<i class="material-icons prefix">mail</i>
<input type="text" id="usermail" name="usermail" class="validate" value="<?php
if (!empty($_POST["usermail"])) {echo htmlspecialchars($_POST["usermail"], ENT_QUOTES);} ?>" required>
<label for="usermail" class="active">登録メールアドレス</label>
</div>
<button class="btn waves-effect waves-ligh right" type="submit" id="login" name="login">変更依頼送信</button>
</div>
</div>
</form>
<a href="login.php" class="btn waves-effect waves-ligh" ><i class="material-icons left">arrow_back</i>ログインへ</a><br><br>
</div>
</body>
</html>