· 5 years ago · Jun 13, 2020, 12:28 PM
1<?php
2include("db.php");
3// Import PHPMailer classes into the global namespace
4// These must be at the top of your script, not inside a function
5use PHPMailer\PHPMailer\PHPMailer;
6use PHPMailer\PHPMailer\SMTP;
7use PHPMailer\PHPMailer\Exception;
8
9class users extends db
10{
11
12 public function cekmsgLogin()
13 {
14 header("location:masuk");
15 $_SESSION["msgStatus1"] = 'Silahkan login dulu';
16 print_r($_SESSION["msgStatus1"]);
17 }
18
19 public function cetakUsers($berdasarkan)
20 {
21 $query = "SELECT DISTINCT $berdasarkan FROM users";
22 $stmt = $this->db->query($query);
23 return $stmt;
24 }
25
26 public function viewcetakPengguna($berdasarkanPengguna)
27 {
28 if ($berdasarkanPengguna == 'semua pengguna') {
29 $query = "SELECT * FROM users where status='0' or status='2'";
30 $stmt = $this->db->query($query);
31 return $stmt;
32 } else {
33 $query = "SELECT * FROM users where level=?";
34 $stmt = $this->db->prepare($query);
35 $stmt->execute([$berdasarkanPengguna]);
36 return $stmt;
37 }
38 }
39
40 public function show()
41 {
42 $query = "SELECT * FROM users where status=0 or status=2";
43 $stmt = $this->db->query($query);
44 return $stmt;
45 }
46
47 public function showJurusan()
48 {
49 $query = "SELECT * FROM users";
50 $stmt = $this->db->query($query);
51 return $stmt;
52 }
53
54 public function showProfile($id)
55 {
56 $query = "SELECT * FROM users WHERE id=?";
57 $stmt = $this->db->prepare($query);
58 $stmt->execute([$id]);
59 return $stmt->fetch();
60 }
61
62 public function detail()
63 {
64 // ambil data user detail ke modal
65 if (isset($_POST["id_data"])) {
66 $id_data = $_POST["id_data"];
67 }
68 $query = "SELECT * FROM users WHERE id = ?";
69 $result = $this->db->prepare($query);
70 $result->bindParam(1, $id_data);
71 $result->execute();
72 return $result->fetch();
73 }
74
75
76 public function updateProfile($editName, $editEmail, $editPhone, $editId, $editLevel)
77 {
78 if (!empty($editLevel)) {
79 $query = "UPDATE users SET name=?, email=?, phone=?,level=? WHERE id=?";
80 $stmt = $this->db->prepare($query);
81 $stmt->execute([$editName, $editEmail, $editPhone, $editLevel, $editId]);
82 } else {
83 $query = "UPDATE users SET name=?, email=?, phone=? WHERE id=?";
84 $stmt = $this->db->prepare($query);
85 $stmt->execute([$editName, $editEmail, $editPhone, $editId]);
86 }
87 }
88
89 public function ubahpass($pass, $repass, $id, $token)
90 {
91 if (empty($token)) {
92 if ($pass != $repass) {
93 return $_SESSION["msgPass"] = "Password anda tidak sama";
94 } else {
95 $sql = "UPDATE users set password=? WHERE id=?";
96 $stmt = $this->db->prepare($sql);
97 $stmt->execute([$pass, $id]);
98 return $_SESSION["msgPasss"] = "Password berhasil diubah";
99 exit();
100 }
101 } else if (!empty($token)) {
102 if ($pass != $repass) {
103 return $_SESSION["msglupaPass1"] = "Password anda tidak sama";
104 } else {
105 $query = "UPDATE users SET password=?,status=? WHERE token=?";
106 $stmt = $this->db->prepare($query);
107 $stmt->execute([$pass, '0', $token]);
108 $_SESSION["msglupaPass2"] = "Berhasil ganti password, sekarang anda bisa login";
109 }
110 }
111 }
112
113 public function updateAccount($token)
114 {
115 $query = "UPDATE users SET status=? WHERE token=?";
116 $stmt = $this->db->prepare($query);
117 $stmt->execute(['0', $token]);
118 $_SESSION["msgVer"] = "Akun anda sudah diverifikasi, sekarang anda bisa login";
119 }
120
121 public function deleteAccount($delete)
122 {
123 $query = "DELETE FROM users WHERE id=?";
124 $stmt = $this->db->prepare($query);
125 $stmt->execute([$delete]);
126 }
127
128 public function logout($id)
129 {
130 header("location:masuk");
131 $query = "UPDATE users SET status=? WHERE id=?";
132 $stmt = $this->db->prepare($query);
133 $stmt->execute(['0', $id]);
134 // $_SESSION["msgStatus1"] = 'Anda Berhasil Logout';
135 session_unset();
136 exit();
137 }
138
139 public function lupaPassword($email, $response, $token)
140 {
141 if ($response->success) {
142 $query = "SELECT * FROM users where email=?";
143 $stmt = $this->db->prepare($query);
144 $stmt->execute([$email]);
145 $cek = $stmt->fetchColumn();
146 if ($cek > 0) {
147 header('location:lupa_password');
148 $sqlcek = "UPDATE users set status=?,token=? WHERE email=?";
149 $stmtcek = $this->db->prepare($sqlcek);
150 $stmtcek->execute(['0', $token, $email]);
151 $this->linklupaPassword($email, $token);
152 $_SESSION["msgStatus2"] = "Berhasil mengirim link lupa password ke email";
153 print_r($_SESSION["msgStatus2"]);
154 exit();
155 } else {
156 $_SESSION["msgStatus1"] = "Email tidak ditemukan";
157 }
158 } else {
159 $_SESSION["msgStatus1"] = "Harap lengkapi captcha";
160 }
161 }
162
163 public function linklupaPassword($email, $token)
164 {
165 $mail = new PHPMailer(true);
166
167 try {
168 $this->email = $email;
169 $this->token = $token;
170 //Server settings
171 $mail->SMTPDebug = SMTP::DEBUG_SERVER;
172 $mail->isSMTP();
173 $mail->Host = 'smtp.gmail.com';
174 $mail->SMTPAuth = true;
175 $mail->Username = 'nikennatasya29@gmail.com';
176 $mail->Password = 'Desember01';
177 $mail->SMTPSecure = 'tls';
178 $mail->Port = 587;
179
180 //Recipients
181 $mail->setFrom('rakensu@gmail.com', 'Account Lupa Password');
182 $mail->addAddress($email);
183
184 // Content
185 $mail->isHTML(true);
186 $mail->Subject = 'Lupa Password';
187 $msg = "Klik link dibawah untuk mengganti password.<br><a href='http://localhost/app/perpustakaan/Vpass_baru&token=$token' style='background-color: #4CAF50;
188 border: none;
189 color: white;
190 padding: 10px 10px;
191 text-align: center;
192 text-decoration: none;
193 display: inline-block;
194 font-size: 10px;
195 margin: 10px 2px;
196 cursor: pointer;'>Verifikasi Disini</a>";
197 $mail->Body = $msg;
198 $mail->send();
199 echo 'Message has been sent';
200 } catch (Exception $e) {
201 echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
202 }
203 }
204
205
206 public function verAccount($email, $token)
207 {
208 require 'phpmailer/src/Exception.php';
209 require 'phpmailer/src/PHPMailer.php';
210 require 'phpmailer/src/SMTP.php';
211
212 $mail = new PHPMailer(true);
213
214 try {
215 $this->email = $email;
216 $this->token = $token;
217 //Server settings
218 $mail->SMTPDebug = SMTP::DEBUG_SERVER;
219 $mail->isSMTP();
220 $mail->Host = 'smtp.gmail.com';
221 $mail->SMTPAuth = true;
222 $mail->Username = 'Perpuspi100@gmail.com';
223 $mail->Password = 'Lol12345678';
224 $mail->SMTPSecure = 'tls';
225 $mail->Port = 587;
226
227 //Recipients
228 $mail->setFrom('rakensu@gmail.com', 'Account Registrasi');
229 $mail->addAddress($email);
230
231 // Content
232 $mail->isHTML(true);
233 $mail->Subject = 'Verifikasi Akun Pendaftaran';
234 $msg = "Klik link dibawah untuk verifikasi account anda.<br><a href='http://localhost/app/perpustakaan/Vdaftar&token=$token' style='background-color: #4CAF50;
235 border: none;
236 color: white;
237 padding: 10px 10px;
238 text-align: center;
239 text-decoration: none;
240 display: inline-block;
241 font-size: 10px;
242 margin: 10px 2px;
243 cursor: pointer;'>Verifikasi Disini</a>";
244 $mail->Body = $msg;
245 $mail->send();
246 echo 'Message has been sent';
247 } catch (Exception $e) {
248 echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
249 }
250 }
251
252
253 public function regisAdmin($nama, $level, $no_hp, $email, $password, $token, $status, $img)
254 {
255 if (empty($img)) {
256 $query = 'INSERT INTO users (name,level,phone,email,password,status,token) VALUES (?,?,?,?,?,?,?)';
257 $stmt = $this->db->prepare($query);
258 $stmt->execute([$nama, $level, $no_hp, $email, $password, $status, $token]);
259 } else {
260 $query = 'INSERT INTO users (name,level,phone,email,password,status,token,img) VALUES (?,?,?,?,?,?,?,?)';
261 $stmt = $this->db->prepare($query);
262 $stmt->execute([$nama, $level, $no_hp, $email, $password, $status, $token, $img]);
263 }
264 }
265
266 public function regis()
267 {
268 if (isset($_POST['register'])) {
269 $secret_key = "6LcprccUAAAAAGn59CFqkQrom5xbGausEnirfAG9";
270 $verify = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . $secret_key . '&response=' . $_POST['g-recaptcha-response']);
271 $response = json_decode($verify);
272
273 if ($response->success) {
274 $gbr = $_FILES['gbr']['name'];
275 $lokasi = $_FILES['gbr']['tmp_name'];
276 move_uploaded_file($lokasi, "assets/images/imgUsers/$gbr");
277 $nama = $_POST["nama"];
278 $noHp = $_POST["noHp"];
279 $email = $_POST["email"];
280 $password = md5($_POST["pword"]);
281 $level = "mahasiswa";
282 $status = "1";
283 // token md5
284 date_default_timezone_set('Asia/Jakarta');
285 $date = md5(date('d-m-Y H:i:s'));
286 $token = $date;
287 $query = 'INSERT INTO users (name,level,phone,email,password,status,token,img) VALUES (?,?,?,?,?,?,?,?)';
288 $stmt = $this->db->prepare($query);
289 $result = $stmt->execute([$nama, $level, $noHp, $email, $password, $status, $token, $gbr]);
290 if (!$result) {
291 header("location:daftar");
292 $_SESSION["msgFail"] = "Pendaftaran gagal dilakukan, coba lagi.";
293 print_r($_SESSION["msgFail"]);
294 exit();
295 } else {
296 header("location:daftar");
297 $_SESSION["msgSucc"] = "pendaftaran berhasil, verifikasi email agar bisa login";
298 $this->verAccount($email, $token);
299 print_r($_SESSION["msgSucc"]);
300 exit();
301 }
302 } else {
303 header("location:daftar");
304 $_SESSION["msgAlt"] = "Harap Validasi Captcha";
305 print_r($_SESSION["msgAlt"]);
306 exit();
307 }
308 }
309 }
310
311 public function login($email, $password)
312 {
313 $query = "SELECT * FROM users where email=? and password=?";
314 $stmt = $this->db->prepare($query);
315 $stmt->execute([$email, $password]);
316 $cek = $stmt->fetch();
317 if (isset($cek)) {
318 $_SESSION['email'] = $email;
319 $_SESSION['id'] = $cek['id'];
320 $_SESSION['level'] = $cek['level'];
321 if ($_SESSION['level'] == 'mahasiswa') {
322 if ($cek['status'] == '1') {
323 header("location:masuk");
324 $_SESSION["msgStatus1"] = "Akun anda belum diverifikasi, cek email anda ";
325 print_r($_SESSION["msgStatus1"]);
326 exit();
327 } else if ($cek['status'] == '2') {
328 header("location:masuk");
329 $_SESSION["msgStatus1"] = "Anda Sudah melakukan login ";
330 print_r($_SESSION["msgStatus1"]);
331 exit();
332 } else if ($cek['status'] == '0') {
333 header("location:profile");
334 $sql = "UPDATE users set status=? WHERE id=?";
335 $stmt = $this->db->prepare($sql);
336 $stmt->execute(['2', $cek['id']]);
337 $_SESSION['status'] = '2';
338 }
339 } else if ($_SESSION['level'] == 'admin') {
340 if ($cek['status'] == '1') {
341 header("location:masuk");
342 $_SESSION["msgStatus1"] = "Akun anda belum diverifikasi, cek email anda ";
343 print_r($_SESSION["msgStatus1"]);
344 exit();
345 } else if ($cek['status'] == '2') {
346 header("location:masuk");
347 $_SESSION["msgStatus1"] = "Anda Sudah melakukan login ";
348 print_r($_SESSION["msgStatus1"]);
349 exit();
350 } else if ($cek['status'] == '0') {
351 header("location:admin_profile");
352 $sql = "UPDATE users set status=? WHERE id=?";
353 $stmt = $this->db->prepare($sql);
354 $stmt->execute(['2', $cek['id']]);
355 $_SESSION['status'] = '2';
356 }
357 } else {
358 header("location:masuk");
359 $_SESSION["msgStatus1"] = "Coba lagi, password anda salah ";
360 print_r($_SESSION["msgStatus1"]);
361 exit();
362 }
363 }
364 }
365}