برگزیده های پرشین تولز

confirm mail

navid_gh

Registered User
تاریخ عضویت
6 آپریل 2005
نوشته‌ها
133
لایک‌ها
0
سن
34
محل سکونت
Iran
اگه میشه به من بگید چطوری میشه یه confirm mail بسازم
کثل بعضی از این سایتا
من برای ارتباط با ما میخوام

خودم اونو ساختم ولی برای این موضوع موندم

ممنون میشم اگه جواب ببدید :)
 

sama_sally

Registered User
تاریخ عضویت
5 آپریل 2005
نوشته‌ها
2,598
لایک‌ها
1
سن
35
محل سکونت
Essen, Deutschland
اول يه ايميل محتوي يه لينك بفرست
توي اون لينك يه آي دي قرار بده
وقتي روش كليك شد و رفت تو صفحه خودت اونجا بررسي كن ببين اين آي دي وجود داره يا نه
اگه داشت بگو ايول! اگه هم نداشت بگو خاك تو سرتون! :blink:
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
به نقل از sama_sally :
اول يه ايميل محتوي يه لينك بفرست
توي اون لينك يه آي دي قرار بده
وقتي روش كليك شد و رفت تو صفحه خودت اونجا بررسي كن ببين اين آي دي وجود داره يا نه
اگه داشت بگو ايول! اگه هم نداشت بگو خاك تو سرتون! :blink:
بسيار زيبا توضيح داديد.
..... اصلا جاي صحبتي نميمونه داش همين كه هس خوه! :blink:
 

navid_gh

Registered User
تاریخ عضویت
6 آپریل 2005
نوشته‌ها
133
لایک‌ها
0
سن
34
محل سکونت
Iran
خیلی ممنون از جوابتون میخواستم بدونم می تونید کد فقط همین بخش کار رو بزارید کل کد سندر رو نمی خوام :blush:
(چه پر توقع) :blink:
بازم ممنون میشم :lol:
 

Moein

Registered User
تاریخ عضویت
2 مارس 2004
نوشته‌ها
1,150
لایک‌ها
64
محل سکونت
تهران - شهرک غرب
می‌تونی موقع ثبت یوزر یه ستون بسازی و توش یه رشته حروف یا عدد رندم بزاری و هر کس به لینک مثلاً :
http://www.yoursite.com/verify.php?confirm=vx4g26h7yksd2 رفت اگه همچین کدی تو دیتابیس بود ان رو آپدیت کنی مثلاً این در این ستون به جای کد بنویسی verified که متوجه بشی آدرس ایمیلش درسته و کسی هم نمی‌تونه این کد رو حدس بزنه.
کافی این لینک رو براش ایمیل کنی.
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
خوب اين عدد رندم رو با چه دستوري مي شه ساخت من با دستور rand چیزی که می زنم خیلی قاطی نیست؟
 

navid_gh

Registered User
تاریخ عضویت
6 آپریل 2005
نوشته‌ها
133
لایک‌ها
0
سن
34
محل سکونت
Iran
به نقل از moein :
می‌تونی موقع ثبت یوزر یه ستون بسازی و توش یه رشته حروف یا عدد رندم بزاری و هر کس به لینک مثلاً :
http://www.yoursite.com/verify.php?confirm=vx4g26h7yksd2 رفت اگه همچین کدی تو دیتابیس بود ان رو آپدیت کنی مثلاً این در این ستون به جای کد بنویسی verified که متوجه بشی آدرس ایمیلش درسته و کسی هم نمی‌تونه این کد رو حدس بزنه.
کافی این لینک رو براش ایمیل کنی.

ممنون من میدونم با دیتابیس میشه
من بزرگترین مشکلم اینه که با دیتا بیس زیاد نمیتونم کار کمنم :eek:
نمیشه با خوده همون فایل باشه؟
اگه میشه میشه کدش رو به میلم بفرستید
ممنون میشم
navid.ghahramani[at]gmail.com
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
عرض کنم که برای این کار حداقل سه تا کد لازمه، یکی موقع رجیستر کردن که یک رندم کد میسازه و داخل دیتابیس قرار میده و یک فیلد رو صفر قرار میده یعنی کاربر دی اکتیوه و در آخر یک نامه میفرسته.
در این کد دوفیلد vid و status استفاده شدند. که vid varchar(32) هست و status int هستش.

کد register.php
PHP:
<?php


function send_mail($to, $subject, $msgid, $optmsg, $name) {

$mail_enabled=1;
$baseurl='http://localhost/';
$adminemail='admin@localhost';
$dbname='database_name';
$dbhost='localhost';
$dbun='root';
$dbpass='sa';
$sitetitle='Website Name';
$sitehome='http://localhost/';

switch ($msgid) {
case 1:
$message = '
<html>
<head>
<title>'.$subject.'</title>
</head>
<body>
Dear <b>'.$name.',</b>
<br>
<br>
<p>Thank you for registration.</p>
<p>To Activate your account, please follow this activation link: 
<a href="'.$baseurl.'/activate.php?id='.$optmsg.'">
'.$baseurl.'/activate.php?id='.$optmsg.'</a></p>
<br><br><br><code>
IMPORTANT: THIS EMAIL CONTAIN PERSONAL INFORMATION.<br>
1.FOR MORE SAFETY PLEASE PRINT OUT EMAIL AND THEN<br>
&nbsp;&nbsp;REMOVE IT FROM YOUR MAILBOX.<br>
2.IF YOU ARE NOT OWNER, PLEASE REPORT IT TO US.<br>
</code>
<br>
Best Regards,
<br>
<b>'.$sitetitle.'</b>&nbsp;Support Team<br>
<a href="'.$sitehome.'">Visit Our Website</a>
</body>
</html>
';
break;

};

/* To send HTML mail, you can set the Content-type header. */
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* additional headers */
$headers .= "From: ".$adminemail."\r\n";

/* and now mail it */
if ($mail_enabled==1) {
	error_reporting(0);
	mail($to, $subject, $message, $headers) or die('Error sending email.');
	error_reporting(E_ALL);
};

$dbhost="localhost"
$dbun="root"
$dbpass="sa"

mysql_connect($dbhost,$dbun,$dbpass) or die("Can not connect to database.");
mysql_select_db($dbname) or die("Can not use database.");


$vid=md5(uniqid(rand(), true));
$sql="insert into members (username, password, name, email, company, description, vid, status) values ('$username', '$password', '$name', '$email', '$company', '$description', '$vid', 0);";

if (mysql_query($sql)) {
mysql_close();
send_mail($email,'Account Activation',1,$vid, $name);
header('Location: ./confirm_register.php?un='.urlencode($username));
} else 
	$error=$error | 0x2;
mysql_close();
};

};

?>
<h1>Registration</h1>
TODO Registration Form Here
البته من کل کد رجیستر رو نیاوردم. شما باید وقتی اطلاعات ثبت نام درست بود، دستور insert رو صدابزنید.
خوب! حالا ما یک ای میل فرستاده شده با یک لینک به صفحه ای به نام activate.php داریم.
در انتها کاربر به صفحه confirm_register.php ریدایرکت میشه و در اونجا بهش گوشزد میشه که ایمیلهاش رو چک کنه و اکنتش رو اکتیو کنه.

کد confirm_register.php
PHP:
<?php
//include('./common/db_tool.php');
//include('./header.php');
$username=$_GET['un'];
?>
<h1>Congratulation!</h1>
Now, you are a member of our website.<br>
Your username is: <?php echo $username; ?>
<br><br>To complete your registration:<br>
Please check your mailbox and follow activation link we sent for you, to active your account. Then 
<a href="login.php">click here</a> to login.
<?php
//include('./footer.php');
?>

کد activate.php
PHP:
<?php
$dbhost="localhost"
$dbun="root"
$dbpass="sa"

mysql_connect($dbhost,$dbun,$dbpass) or die("Can not connect to database.");
mysql_select_db($dbname) or die("Can not use database.");

$error=0;
$vid=$_GET['id'];
if (strlen($vid)<>32) die("Invalid id!");
dbc_connect();
$res=mysql_query("update members set status=1 where vid='$vid' and status=0;");
if (mysql_affected_rows()<>1) $error=1;

mysql_close();

if ($error==1)
{
?>
<h1>Invalid ID!</h1>
Verification ID has expired. <a href="register.php">Register</a> again.
<?php
}
else {
?>
<h1>Activation Completed!</h1>
Your account activated. You can <a href="login.php">Login</a> to access to your account area.
<?php
}
?>
اگر کاربری لینک درون ای میل رو دنبال کنه، این صفحه صدا زده میشه و status مساوی 1 میشه. از این به بعد در موقع لاگین شدن دوستان میتونند این فیلد رو تست کنند و فقط به کاربرای اکتیو اجازه ورود بدند.

این هم اسکریپت تیبل members
کد:
CREATE TABLE `members` (
  `id` int auto_increment,
  `name` varchar(20),
  `email` varchar(20),
  `description` varchar(255),
  `status` int,
  `username` varchar(20),
  `password` varchar(20),
  `company` varchar(20),
  `vid` varchar(32),
  PRIMARY KEY  (`id`)
)


البته گفتم من این کدها رو از کد صفحه اصلی کات کردم. شما شاید یکسری متغییر رو لازم باشه اد یا ریموو کنید. من خودم روی اسکریپت اصلی که یک سیستم کامل لاگین هست بیشتر از 20 روز کار کردم...
با یک مقدار مرور کدها میبینید که کار بسیار ساده ای هست.

موفق باشید :) (این هم جایزم به نوید، خودش میدونه... ;) )
 

Moein

Registered User
تاریخ عضویت
2 مارس 2004
نوشته‌ها
1,150
لایک‌ها
64
محل سکونت
تهران - شهرک غرب
به نقل از hba :
خوب اين عدد رندم رو با چه دستوري مي شه ساخت من با دستور rand چیزی که می زنم خیلی قاطی نیست؟
می‌تونی رندم رو بین 1000000 تا مثلاً 10000000 بسازی یا از کد زیر برای رشته حروف و عدد استفاده کنی:

PHP:
$rand = md5(uniqid(time()));
 

navid_gh

Registered User
تاریخ عضویت
6 آپریل 2005
نوشته‌ها
133
لایک‌ها
0
سن
34
محل سکونت
Iran
به نقل از balabala :
با یک مقدار مرور کدها میبینید که کار بسیار ساده ای هست.

موفق باشید :) (این هم جایزم به نوید، خودش میدونه... ;) )


واقعا ازت ممنونم لطف بزرگی کردی
:blush:
ممنـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــون :wacko: :blink: :heart:
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
به نقل از navid_gh :
واقعا ازت ممنونم لطف بزرگی کردی
:blush:
ممنـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــون :wacko: :blink: :heart:
خواهش ميكنم قابل شمارو نداشت. :D :rolleyes:
 
بالا