بنام مالک یوم الدین
سلام, آیا عاشق جملات فاز سنگین هستین؟ پس همراه بنده باشین تا فاز سنگین رو بهتون نشون بدم![]()
سطح آموزش : سخته!
پیش نیاز : 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!";
}


Murteza rahmani