بنام مالک یوم الدین
سلام, آیا عاشق جملات فاز سنگین هستین؟ پس همراه بنده باشین تا فاز سنگین رو بهتون نشون بدم
سطح آموزش : سخته!
پیش نیاز : html / php / mysql
قراره توی این مقاله یاد بگیریم چه جوری کاربر بعد از ثبت نام از طریق فرم , ایمیل دریافت کنه که توش لینک فعالسازی باشه.
مواد لازم:
- یک عدد فایل index.html
- یک عدد فایل signup.php
- یک عدد فایل signupok.php
- یک عدد دیتابیس mysql
- کلاس های آماده PHPMailer : دانلـــود ( برای اینکه بتونیم ایمیل بفرستیم )
- IDE به مقدار لازم ( این دیگه چیه؟ منظورم محیط توسعه هس . ای بابا ! نرم افزاری که توش کد میزنین!)
سناریو ( عاشق این کلمه های قلمبه سلمبه ام! درست نوشتم؟)
یه دیتابیس داریم و یه جدول داخلش که توش اطلاعات ثبت نام یوزر ها توش ذخیره میشه. خب یه صفحه داریم به نام index.html که کاربرا میان توش یه فرم رو پر و روی دکمه Sign Up کلیک می کنن . درادامه اطلاعات به signup.php ارسال میشن و در اینجا یه کد فعال سازی میسازیم و همراه اطلاعات در دیتابیس ذخیره میشه و ایمیلی به کاربر مبنی بر فعالسازی اکانت ارسال میشه. حالا کاربر میره ایمیل رو چک میکنه و روی لینک فعال سازی کلیک میکنه و توی signupok.php کد فعالسازی چک میشه که کاربرمون وجود داره یا نه بعدش اکانتش رو فعال می کنیم.
ساخت دیتابیس
قبل از کد نویسی باید دیتابیس و جدول های موردنظرمون رو بسازیم. خب phpmyadmin رو توی مرورگر باز می کنیم یه دیتابیس با نام test می سازیم و داخل این دیتابیس یه جدول بنام weblog_user با فیلد های زیر میسازیم
id | INT / AUTO_INCREMENT / Primary Key |
username | (VARCHAR(15 |
(VARCHAR(50 | |
code | (VARCHAR(10 |
sign_key | (1)TINYINT |
حالا که دیتابیس و جدول رو ساختیم میتونیم شروع کنیم.( فکر کنم بیش از اندازه خلاصه و مفید گفتم!)
طراحی فرم ثبت نام : index.php
درابتدا با html یک فرم طراحی می کنیم که توش 2 تا فیلد داره : نام کاربری - ایمیل + یک دکمه ثبت نام. (انصافا کدوم سایت با 2 تا فیلد ثبت نام میکنه؟ نه انصافا!) و میریزمشون توی index.html.
ها این html که وگفتی یعنی چه؟
html زبان صفحات وب هست. روی یه جایی از همین صفحه راست کلیک کنین و گزینه view page source رو بزنین, میبینید که یه سری کد عجق وجقی بهتون نمایش میده . اونایی که بین <> قرار دارن اصطلاحا تگ های html هستند. برای اطلاع بیشتر برین تو لینک
اینم ساختار index.html :
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>ثبت نام</title> </head> <body> <form name="signup" method="post" action="signup.php"> <b>User Name: </b> <input type="text" name="username"> <br> <b>E-Mail: </b> <input type="text" name="email"> <br> <input type="submit" value="SignUp"> </form> </body> </html>
require_once("class.phpmailer.php"); require_once("class.smtp.php");
function generateRandomString($length = 10) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; }
$user = $_POST['username']; $email = $_POST['email'];
$servername = "localhost"; $username = "root"; $password = ""; $database = "test";
$connection = new mysqli($servername, $username, $password, $database);
$code = generateRandomString();
$sql = "INSERT INTO weblog_user (id, username, email, code) VALUES (NULL, '$user', '$email', '$code')";
$connection->query($sql);
$mail = new PHPMailer();
$mail->setFrom("info@ucgain.blog.ir");
$mail->AddAddress($email);
$mail->Subject = "SignUp!";
$link = '<a href ="http://localhost/forweblog/signupok.php?a='.$code.'">Click Here!</a>';
$mail->Body = "Hello ".$user."<br>"."Activision Link :".$link;
$mail->IsSMTP(); $mail->SMTPAuth = true; $mail->IsHTML(true);
$mail->Host = "smtp.gmail.com";
$mail->Username = "mygmail@gmail.com"; $mail->Password = "Passwordmygmail";
$mail->SMTPSecure = "ssl"; $mail->Port = 465;
if($mail->Send()){ echo "Check Mail!"; }else{ echo "Sign Fail!"; }
$code = $_REQUEST['a'];
$servername = "localhost"; $username = "root"; $password = ""; $database = "test"; $connection = new mysqli($servername, $username, $password, $database);
$sql = "SELECT * FROM weblog_user WHERE code = '$code'";
$result = $connection->query($sql);
$record = array(); while($row = $result->fetch_assoc()){ $record = $row; }
if(is_null($record)){ echo "no sign"; } else{ $sql2 = "UPDATE webog_user SET sign_check = true WHERE code = '$code'"; $connection->query($sql2); echo "Activision OK!"; }