ghanbarloo
سه شنبه 03 مرداد 1391, 12:49 عصر
سلام به دوستان
من یه خبر نامه دارم که مشکلاتی داره که دوستان فرمودند اینجا مطرح کنم .
من می خواهم افرادی که ایمیلشونو وارد میکنن یه لینک تایید به ایمیلشون ارسال بشه
که این انجام میشه
و یه لینکی تو ایمیل باشه که وقتی کلیک کردن ایمیلشون تایید بشه .
حالا ایمیل می ره
اما وقتی رو لینک داخل ایمیل کلیک میشه تو دیتابیسه اکتیو نمیشه
فایل فرم صفحه اولیه برای دریافت ایمیل از کاربر
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Join to Us...</title>
</head>
<body>
<p style="text-align: right;"><strong>* توجه: پر کردن فیلدهای به رنگ <span style="color: #f00;">قرمز</span> الزامی و پر کردن سایر فیلدها اختیاری می باشد.</strong></p>
<div style="text-align: justify;"><form style="font-family: Tahoma; font-size: 12px;" dir="rtl" action="send.php" method="post">
<table width="100%" border="0" cellspacing="5" cellpadding="5">
<tbody>
<tr>
<td colspan="3"><strong>اطلاعات هویتی:</strong></td>
</tr>
<tr>
<td colspan="3"><strong>الف - حقیقی</strong></td>
</tr>
<tr>
<td style="color: #c00;" width="27%">نام</td>
<td colspan="2"><input type="text" name="Name" /></td>
</tr>
<tr>
<td style="color: #c00;">ایمیل</td>
<td colspan="2"><input type="text" name="Email" /></td>
</tr>
<tr>
<td colspan="2" align="middle"><input type="reset" value="پاک کردن" /></td>
<td width="65%"><input style="text-align: center;" onMouseOver="if(name.value=='' || first.value==''||kod.value==''||mobile.value=='' ||sabet.value=='' ||email.value==''||user.value==''||pass.value==''| |r_pass.value=='') alert(' لطفا رکورد های ستاره دار را پر نمایید. '); " type="submit" value="ارسال" /></td>
</tr>
</tbody>
</table>
</form></div>
<p style="text-align: justify;"> </p>
</body>
</html>
فایل دوم برای send.php
<?php
include("config.php");
//Check The Form is Submitted!?2- چک کنيم ببينيم که کاربر از طريق فرم وارد اين صفحه شده يا نه همين طوري آدرس زده و اومده تو ...
if(!isset($_POST['Name']))
exit();
$Name = $_POST['Name'];
$Email = $_POST['Email'];
//Trim the Strings...4- براي اين که فضاهاي خالي (Space) که کاربر در ابتدا و انتها وارد کرده از بين برود از تابع trim استفاده مي کنيم.
$Name = trim($Name);
$Email = trim($Email);
//Check Empty Email Addr...5- بررسي مي کنيم که کاربر حتما ايميل را وارد کرده باشد (چون در اين برنامه نام مهم نيست اون رو چک نمي کنيم)
if(empty($Email))
die("Please Enter your Email Address!");
//Set The special HTML Characters 2 HTML Codes 6- جايگزيني کاراکتر هاي خاص HTML با مقدار نمايشي آن (اين کار براي اينه که کاربر نتونه کد HTMl و يا JavaScript به برنامه ما تزريق کنه)
$Name = htmlspecialchars($Name);
//Remove Slashes...از داخل نام کاربر کاراکتر ' را حذف ميکنيم که توي کار با ديتابيس دچار مشکل نشويم...
$Name = str_replace("'", "", $Name);
//Convert Email Address to Lower Case حروف آدرس ايميل را به حروف کوچک تبديل ميکنيم تا همه جا يکدست باشه...
$Email = strtolower($Email);
//Check For Valid Email Address Expression9- بررسي ميکنيم که آدرس ايميل کاربر از نظر عبارتي درست هست يا نه ... (بعدا يه جلسه مفصل در موردش توضيح مي دم)
if(!preg_match("/^[\.A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{2,4}$/", $Email))
die("Invalid Email Address!");
/*Check Exist...10 - بررسي مي کنيم که ايميلي که کاربر وارد کرده قبلا در ديتابيس ذخيره شده يا نه ...
$Sql = "SELECT COUNT(*) FROM `user`
WHERE `email` = '$Email'";
//Connect to database...
connect();
$Result = mysql_query($Sql) or die(mysql_error() . "<br>SQL: " . $Sql);
if(mysql_result($Result, 0) > 0 )
die("This Email Address already Exist!");
*/
//Create A Random Security Code...11- يه کد امنيتي توليد مي کنيم تا کاربر بوسيله اون بتونه عضويت خودش رو فعال کنه
$RandomNum = rand(0, 9999);
$SecCode = md5($RandomNum);
//Calculate The Today Date...تاريخ امروز
$Today = date("Ymd");
$sql="INSERT INTO user (name,email,active,join_date,sec_code)
VALUES
( '$Name','$Email', '0', '$Today', '$SecCode')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "با تشکر از شما ";
mysql_close($con);
//<!-- Start of Mail Body
$MailBody = '
Salam dooste aziz,
Az in ke dar khbar nameye ma ozv shodehid kheyli mamnoonim.
lotfan baraye faal shodan acount khod bar rooye link zir click nemayeed
http://www.yazahra135.ir/Active.php?Email='. $Email .'&SecCode='. $SecCode .'
Ba tashakor,
Movafagh bashid.';
// End of Mail Body-->
mail($Email , "Active your acount", $MailBody);
?>
فایل Active.php برای اکتیو کردن
<?
//Active.php
include("config.php");
//Check The Link is Correct
if(!isset($_GET['Email']) && !isset($_GET['SecCode']))
exit();
//Set The variables...
$Email = $_GET['Email'];
$SecCode = $_GET['SecCode'];
//Update The Acount ...
$Sql = "UPDATE user
SET
active = '1'
WHERE
email = '$Email'
";
//Connect to database...
connect();
//Execute The SQL...
$Result = mysql_query($Sql) or die(mysql_error() . "<br>SQL: " . $Sql);
//Check Affected Rows...
if(mysql_affected_rows() == 1)
die("Your acount successfully activated!");
else
die("No acounts activated!");
?>
البته من در آدرس زیر این فرم رو گذاشتم
http://www.yazahra135.ir/
من یه خبر نامه دارم که مشکلاتی داره که دوستان فرمودند اینجا مطرح کنم .
من می خواهم افرادی که ایمیلشونو وارد میکنن یه لینک تایید به ایمیلشون ارسال بشه
که این انجام میشه
و یه لینکی تو ایمیل باشه که وقتی کلیک کردن ایمیلشون تایید بشه .
حالا ایمیل می ره
اما وقتی رو لینک داخل ایمیل کلیک میشه تو دیتابیسه اکتیو نمیشه
فایل فرم صفحه اولیه برای دریافت ایمیل از کاربر
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Join to Us...</title>
</head>
<body>
<p style="text-align: right;"><strong>* توجه: پر کردن فیلدهای به رنگ <span style="color: #f00;">قرمز</span> الزامی و پر کردن سایر فیلدها اختیاری می باشد.</strong></p>
<div style="text-align: justify;"><form style="font-family: Tahoma; font-size: 12px;" dir="rtl" action="send.php" method="post">
<table width="100%" border="0" cellspacing="5" cellpadding="5">
<tbody>
<tr>
<td colspan="3"><strong>اطلاعات هویتی:</strong></td>
</tr>
<tr>
<td colspan="3"><strong>الف - حقیقی</strong></td>
</tr>
<tr>
<td style="color: #c00;" width="27%">نام</td>
<td colspan="2"><input type="text" name="Name" /></td>
</tr>
<tr>
<td style="color: #c00;">ایمیل</td>
<td colspan="2"><input type="text" name="Email" /></td>
</tr>
<tr>
<td colspan="2" align="middle"><input type="reset" value="پاک کردن" /></td>
<td width="65%"><input style="text-align: center;" onMouseOver="if(name.value=='' || first.value==''||kod.value==''||mobile.value=='' ||sabet.value=='' ||email.value==''||user.value==''||pass.value==''| |r_pass.value=='') alert(' لطفا رکورد های ستاره دار را پر نمایید. '); " type="submit" value="ارسال" /></td>
</tr>
</tbody>
</table>
</form></div>
<p style="text-align: justify;"> </p>
</body>
</html>
فایل دوم برای send.php
<?php
include("config.php");
//Check The Form is Submitted!?2- چک کنيم ببينيم که کاربر از طريق فرم وارد اين صفحه شده يا نه همين طوري آدرس زده و اومده تو ...
if(!isset($_POST['Name']))
exit();
$Name = $_POST['Name'];
$Email = $_POST['Email'];
//Trim the Strings...4- براي اين که فضاهاي خالي (Space) که کاربر در ابتدا و انتها وارد کرده از بين برود از تابع trim استفاده مي کنيم.
$Name = trim($Name);
$Email = trim($Email);
//Check Empty Email Addr...5- بررسي مي کنيم که کاربر حتما ايميل را وارد کرده باشد (چون در اين برنامه نام مهم نيست اون رو چک نمي کنيم)
if(empty($Email))
die("Please Enter your Email Address!");
//Set The special HTML Characters 2 HTML Codes 6- جايگزيني کاراکتر هاي خاص HTML با مقدار نمايشي آن (اين کار براي اينه که کاربر نتونه کد HTMl و يا JavaScript به برنامه ما تزريق کنه)
$Name = htmlspecialchars($Name);
//Remove Slashes...از داخل نام کاربر کاراکتر ' را حذف ميکنيم که توي کار با ديتابيس دچار مشکل نشويم...
$Name = str_replace("'", "", $Name);
//Convert Email Address to Lower Case حروف آدرس ايميل را به حروف کوچک تبديل ميکنيم تا همه جا يکدست باشه...
$Email = strtolower($Email);
//Check For Valid Email Address Expression9- بررسي ميکنيم که آدرس ايميل کاربر از نظر عبارتي درست هست يا نه ... (بعدا يه جلسه مفصل در موردش توضيح مي دم)
if(!preg_match("/^[\.A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{2,4}$/", $Email))
die("Invalid Email Address!");
/*Check Exist...10 - بررسي مي کنيم که ايميلي که کاربر وارد کرده قبلا در ديتابيس ذخيره شده يا نه ...
$Sql = "SELECT COUNT(*) FROM `user`
WHERE `email` = '$Email'";
//Connect to database...
connect();
$Result = mysql_query($Sql) or die(mysql_error() . "<br>SQL: " . $Sql);
if(mysql_result($Result, 0) > 0 )
die("This Email Address already Exist!");
*/
//Create A Random Security Code...11- يه کد امنيتي توليد مي کنيم تا کاربر بوسيله اون بتونه عضويت خودش رو فعال کنه
$RandomNum = rand(0, 9999);
$SecCode = md5($RandomNum);
//Calculate The Today Date...تاريخ امروز
$Today = date("Ymd");
$sql="INSERT INTO user (name,email,active,join_date,sec_code)
VALUES
( '$Name','$Email', '0', '$Today', '$SecCode')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "با تشکر از شما ";
mysql_close($con);
//<!-- Start of Mail Body
$MailBody = '
Salam dooste aziz,
Az in ke dar khbar nameye ma ozv shodehid kheyli mamnoonim.
lotfan baraye faal shodan acount khod bar rooye link zir click nemayeed
http://www.yazahra135.ir/Active.php?Email='. $Email .'&SecCode='. $SecCode .'
Ba tashakor,
Movafagh bashid.';
// End of Mail Body-->
mail($Email , "Active your acount", $MailBody);
?>
فایل Active.php برای اکتیو کردن
<?
//Active.php
include("config.php");
//Check The Link is Correct
if(!isset($_GET['Email']) && !isset($_GET['SecCode']))
exit();
//Set The variables...
$Email = $_GET['Email'];
$SecCode = $_GET['SecCode'];
//Update The Acount ...
$Sql = "UPDATE user
SET
active = '1'
WHERE
email = '$Email'
";
//Connect to database...
connect();
//Execute The SQL...
$Result = mysql_query($Sql) or die(mysql_error() . "<br>SQL: " . $Sql);
//Check Affected Rows...
if(mysql_affected_rows() == 1)
die("Your acount successfully activated!");
else
die("No acounts activated!");
?>
البته من در آدرس زیر این فرم رو گذاشتم
http://www.yazahra135.ir/