آژانس هواپیماییexchanging

confirm mail

شروع موضوع توسط navid_gh ‏8 سپتامبر 2005 در انجمن PHP

  1. navid_gh

    navid_gh Registered User

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

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

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

    sama_sally Registered User

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

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,322
    محل سکونت:
    یه خورده اونورتر
    بسيار زيبا توضيح داديد.
    ..... اصلا جاي صحبتي نميمونه داش همين كه هس خوه! :blink:
     
  4. Shahed

    Shahed کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏30 ژوئن 2003
    نوشته ها:
    7,175
    تشکر شده:
    31
    محل سکونت:
    mt.cgi
  5. navid_gh

    navid_gh Registered User

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

    Moein Registered User

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

    hba کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏8 آگوست 2004
    نوشته ها:
    1,511
    تشکر شده:
    1
    محل سکونت:
    تهران-ونک-php-mysql
    خوب اين عدد رندم رو با چه دستوري مي شه ساخت من با دستور rand چیزی که می زنم خیلی قاطی نیست؟
     
  9. navid_gh

    navid_gh Registered User

    تاریخ عضویت:
    ‏6 آپریل 2005
    نوشته ها:
    133
    تشکر شده:
    0
    محل سکونت:
    Iran
    ممنون من میدونم با دیتابیس میشه
    من بزرگترین مشکلم اینه که با دیتا بیس زیاد نمیتونم کار کمنم :eek:
    نمیشه با خوده همون فایل باشه؟
    اگه میشه میشه کدش رو به میلم بفرستید
    ممنون میشم
    navid.ghahramani[at]gmail.com
     
  10. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,322
    محل سکونت:
    یه خورده اونورتر
    عرض کنم که برای این کار حداقل سه تا کد لازمه، یکی موقع رجیستر کردن که یک رندم کد میسازه و داخل دیتابیس قرار میده و یک فیلد رو صفر قرار میده یعنی کاربر دی اکتیوه و در آخر یک نامه میفرسته.
    در این کد دوفیلد 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='[email protected]';
    $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 روز کار کردم...
    با یک مقدار مرور کدها میبینید که کار بسیار ساده ای هست.

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

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
    می‌تونی رندم رو بین 1000000 تا مثلاً 10000000 بسازی یا از کد زیر برای رشته حروف و عدد استفاده کنی:

    PHP:
    $rand md5(uniqid(time()));
     
  12. navid_gh

    navid_gh Registered User

    تاریخ عضویت:
    ‏6 آپریل 2005
    نوشته ها:
    133
    تشکر شده:
    0
    محل سکونت:
    Iran

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

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,350
    تشکر شده:
    1,322
    محل سکونت:
    یه خورده اونورتر
    خواهش ميكنم قابل شمارو نداشت. :D :rolleyes:
     
  14. avajang.com .leftavajang.com.right