همانطور که در قسمت قبل دیدید، برای ارسال ایمیل به کاربر و دریافت جواب از او ما به برنامه ngrok نیاز داریم که توضیح مفصلی در مورد آن ارائه کردیم؛ ضمنا با همدیگر یک ایمیل از لوکال هاست به ایمیل کاربر فرستادیم.
در این قسمت، لینک فعال سازی موجود در ایمیل کاربر خواهیم پرداخت و برای شما مشخص خواهیم کرد که هنگامی که کاربر بر روی لینک فرستاده شده (این لینک در ایمیل فرستاده شده از لوکال هاست به کاربر موجود است) کلیک می کند باید چه اتفاقی بیفتد (در حین این مبحث فایل emailconfirm.php را با همدیگر خواهیم ساخت).
من ابتدا فایل emailconfirm.php را در اختیار شما قرار می دهم و بعد از آن خط به خط آن را توضیح می دهم و در انتهای کار با همدیگر یکبار روند کاری که باید انجام دهیم را به شما نشان می دهم.
ابتدا باید فایل emailconfirm.php را بسازیم برای انجام اینکار به آدرس C:\wamp\www\ecommerce بروید و فایل را ایجاد نمایید. به تصویر زیر نگاه کنید.
حالا نوبت به آن رسیده است که کدهای زیر را در آن قرار دهید. برای انجام اینکار ابتدا فایل emailconfirm.php را با استفاده از Notepad++ باز کنید. و سپس کدهای زیر را در آن قرار دهید.
<!-- start of Header --> <?php include('includes/Header.php'); ?> <!-- end of Header --> <!-- start of content --> <div id="templatemo_content"> <!-- start of left ocntent --> <div id="templatemo_content_left"> <div class="cleaner_with_height"> </div> <?php if(isset($_GET["customer_ip"])){ $con=mysqli_connect("localhost","root","","ecommerce"); if(mysqli_connect_errno()) { echo "ارتباط با پایگاه داده برقرار نیست . شماره خطا :".mysqli_connect_errno(); } $ip=$_GET["customer_ip"]; $code=$_GET["code"]; $query="SELECT * FROM customers WHERE customer_ip LIKE '%{$ip}%'"; $result=mysqli_query($con,$query); while ($row = mysqli_fetch_array($result)) { $confirm_code=$row['confirm_code']; $c_name = $row['customer_name']; $c_lastname = $row['customer_lastname']; $c_email = $row['customer_email']; } if( $confirm_code == $code){ mysqli_query($con,"update customers set confirmed='1' "); mysqli_query($con,"update customers set confirm_code='0' "); echo "<script>alert(' ایمیل آدرس شما تایید و ثبت نام شما تکمیل شد. ')</script>"; $sel_cart = "select * from cart where ip_add='$ip'"; $run_cart = mysqli_query($con,$sel_cart); $check_cart = mysqli_num_rows($run_cart); if($check_cart == 0){ $_SESSION['customer_name'] = $c_name; $_SESSION['customer_lastname'] = $c_lastname; $_SESSION['customer_email'] = $c_email; echo "<script>window.open('customer/my_account.php','_self')</script>"; }else{ $_SESSION['customer_name'] = $c_name; $_SESSION['customer_lastname'] = $c_lastname; $_SESSION['customer_email'] = $c_email; echo "<script>window.open('checkout.php','_self')</script>"; } }else{ echo "<script>alert('ایمیل با کد تایید مطابقت ندارد.')</script>"; echo "<script>window.open('customer_register.php','_self')</script>"; } }else{ echo "<p style='background: red; padding: 27px; font-size: 20px; border-radius: 15px;border: 5px dashed white;'> باید به ایمیلتان مراجعه کرده و لینک فرستاده شده را تایید نمایید!!!</p>"; } ?> <div class="cleaner_with_height"> </div> </div> <!-- end of left content --> <div class="cleaner"> </div> </div> <!-- end of content --> <!-- start of footer --> <?php include('includes/Footer.php'); ?> <!-- end of footer -->
همانطور که در کدهای بالا مشاهده می نمایید ابتدا باید بررسی کنیم که آیا در لینک بالای صفحه مقدار customer_ip داده شده است یا نه؟
if(isset($_GET["customer_ip"])){
اگر جواب خیر باشد، اینکار باعث می شود که کاربر بعد از اینکه بر روی دکمه "ایجاد نام کاربری" فشار داد، پیغام "باید به ایمیل تان مراجعه کرده و لینک فرستاده شده را تایید نمایید!!!" را مشاهده کند.
دقت کنید که اگر در لینک بالای صفحه، مقدار customer_ip تنظیم شده بود (جواب بله بود) if(isset($_GET["customer_ip"])){
یعنی اینکه کاربر به ایمیل خود مراجعه نموده و لینک فرستاده شده توسط سایت را تایید کرده است. حالا باید اقدامات زیر را انجام دهیم.
1- ابتدا به پایگاه داده متصل می شویم تا اطلاعات مورد نیاز را که در مراحل بعدی به آنها نیاز داریم را استخراج نماییم. کدهای زیر نمایانگر این مسئله هستند.
$con=mysqli_connect("localhost","root","","ecommerce"); if(mysqli_connect_errno()) { echo "ارتباط با پایگاه داده برقرار نیست . شماره خطا :".mysqli_connect_errno(); }
2- ip کاربر و همچنین کدی (code) که در لینک بالای صفحه قرار دارد را از لینک با استفاده از متغییر $_GET بیرون می کشیم.
$ip=$_GET["customer_ip"]; $code=$_GET["code"];
3- در ادامه با نوشتن یک دستور SQL با استفاده از ip کاربر که در مرحله قبل آن را به دست آورده بودیم، مقدار فیلد confirm_code را از دیتابیس بیرون می کشیم. ضمنا مقدار فیلدهای customer_name و customer_lastname و customer_email نیز اطلاعاتی هستند که در ادامه و در جلسات آتی به آنها نیاز خواهیم داشت بنابراین اکنون آنها را استخراج کرده ایم.
$query="SELECT * FROM customers WHERE customer_ip LIKE '%{$ip}%'"; $result=mysqli_query($con,$query); while ($row = mysqli_fetch_array($result)) { $confirm_code=$row['confirm_code']; $c_name = $row['customer_name']; $c_lastname = $row['customer_lastname']; $c_email = $row['customer_email']; }
4- در این مرحله کد موجود در لینک بالای صفحه را با کد موجود در دیتابیس مقایسه می کنیم؛ اگر یکی بودند، باید دو عمل update انجام دهیم و در حین آنها مقدار فیلد confirmed را از 0 به 1 تغییر دهیم (دقت نمایید در جلسه قبل به این فیلد مقدار 0 داده بودیم و در دیتابیس ذخیره کرده بودیم) و مقدار فیلد confirm_code را از عدد تصادفی به 0 تغییر می دهیم.
انجام این دو عمل update نشان می دهد که کاربر بر روی لینک تایید ثبت نام که برای ایمیل او ارسال شد است، فشار داده است (بنابراین ایمیل او تایید می شود).
دقت کنید بعد ها (در جلسات بعدی) در هنگام login کردن علاوه بر ایمیل و پسورد ما باید مقدار فیلد confirmed را نیز بررسی کنیم تا متوجه شویم که آیا کاربر ایمیل خود را تایید کرده است یا خیر.
بعد از انجام اقدامات بالا یک پیام تحت عنوان "آدرس ایمیل شما تایید و ثبت نام شما تکمیل شد" را به کاربر نشان خواهیم داد.
if( $confirm_code == $code){ mysqli_query($con,"update customers set confirmed='1' "); mysqli_query($con,"update customers set confirm_code='0' "); echo "<script>alert(' ایمیل آدرس شما تایید و ثبت نام شما تکمیل شد. ')</script>";
در ادامه باید خرید هایی را که مشتری انجام داده با استفاده از ip او از جدول داده ایی cart استخراج کنیم و چک کنیم ببینیم آیا مشتری خریدی انجام داده است یا خیر؟ اگر مشتری محصولی نخریده است if($check_cart == 0)
، او را به صفحه پروفایل اش (my_account.php) هدایت کنیم.
دقت کنید در جلسات آتی فایل my_account.php را با هم خواهیم ساخت. در غیر اینصورت (یعنی مشتری محصولی را خریداری کرده است) او را به صفحه پرداخت پول هدایت می کنیم (که توضیح این قسمت را نیز در جلسات آتی خواهم داد).
در ضمن اطلاعاتی مثل نام، فامیل و ایمیل مشتری را در متغییرهای SESSION قرار می دهیم که در ادامه با آنها کار خواهیم داشت (یکی از کاربردهای انجام اینکار این است که نشان می دهیم که اکنون کاربر علاوه بر اینکه ایمیل خود را تایید کرده و عملیات ورود را انجام داده است).
$sel_cart = "select * from cart where ip_add='$ip'"; $run_cart = mysqli_query($con,$sel_cart); $check_cart = mysqli_num_rows($run_cart); if($check_cart == 0){ $_SESSION['customer_name'] = $c_name; $_SESSION['customer_lastname'] = $c_lastname; $_SESSION['customer_email'] = $c_email; echo "<script>window.open('customer/my_account.php','_self')</script>"; }else{ $_SESSION['customer_name'] = $c_name; $_SESSION['customer_lastname'] = $c_lastname; $_SESSION['customer_email'] = $c_email; echo "<script>window.open('checkout.php','_self')</script>"; }
5- در ادامه نیز اگر کدی که در لینک قرار گرفته با کدی که در دیتابیس وجود دارد یکسان نباشد پیام "ایمیل با کد تایید مطابقت ندارد". به کاربر نشان داده شود و کاربر را در ادامه به صفحه ثبت نام هدایت کند.
}else{ echo "<script>alert('ایمیل با کد تایید مطابقت ندارد.')</script>"; echo "<script>window.open('customer_register.php','_self')</script>"; }
خب توضیحات خط به خط برنامه پایان یافت حالا بیایید با همدیگر ببینیم که در عمل باید چه کاری انجام شود.
1- قبل از همه چیز اینترنت خود را روشن کنید.
2- حالا WAMP را روشن کنید. به تصویر زیر نگاه کنید در این تصویر آیکن wamp سبز رنگ شده است.
3- حالا باید به سراغ برنامه ngrok بروید و آن را اجرا نمایید.
4 - حالا باید دستور ngrok http 80 را در خط فرمان وارد نمایید.
5-حالا برنامه ngrok به ما آدرس اینترنتی لوکال هاست را می دهد.
6 - باید آدرس اینترنتی را که برنامه ngrok در مرحله قبل به ما داده است را در متغییر message$
که به ایمیل کاربر قرار است بفرستیم (دقت کنید که متغییر message$ در فایل server.php قرار دارد) قرار دهیم.
7- حالا آدرس اینترنتی لوکال هاست را که برنامه ngrok به ما داده است، وارد مرورگر می کنیم؛ تا از درستی آدرس اینترنتی لوکال هاست آگاه شویم.
8- حالا آدرس صفحه ثبت نام که در زیر و در کادر قرمز رنگ قرار دارد را وارد می کنیم . دقت کنید آن قسمتی که زیر آن خط زرد رنگ کشیده شده است (/ecommerce/customer_register.php) را شما بعد از آدرس اینترنتی لوکال هاست خودتان باید قرار دهید.
9 - حالا باید صفحه شبیه به تصویر زیر برای شما نمایان شود کافی است که اطلاعات را به درستی وارد کرده و بر روی دکمه "ایجاد نام کاربری" فشار دهید.
10- بعد از زدن دکمه " ایجاد نام کاربری" می توانید تصویر زیر را مشاهده نمایید. این تصویر یک پیام است که کاربر را برای تایید لینک ثبت نام به سمت ایمیلش سوق می دهد.
11 - بعد از زدن دکمه ok در کادر مرحله قبل صفحه زیر نمایان می شود.
12 - بعد از انجام اقدامات بالا، حالا به phpmyadmin بروید و در پایگاه داده ecommerce بر روی جدول داده ایی customers کلیک کنید.
13- رکوردی به جدول داده ایی customers اضافه شده است. به فیلدهای confirmed و confirm_code دقت کنید. confirmed با مقدار صفر و confirm_code با عدد تصادفی که با تابع rand() ایجاد می شود پر شده اند.
14- حالا به آدرس ایمیلی که در هنگام ثبت نام وارد کرده بودید، بروید. یک پیام جدید دریافت کرده اید، پیامی که دریافت کرده اید باید چیزی شبیه به تصویر زیر باشد. دقت کنید که، ما آن عدد تصادفی را که در مرحله قبل در موردش توضیح دادم؛ در لینک تایید ثبت نام قرار داده ایم تا کاربر را به خوبی شناسایی کنیم. به کادر قرمز رنگ دقت کنید.
15 - حالا بر روی لینک داده شده کلیک کنید.
16 - حالا باید تصویری شبیه به تصویر زیر را مشاهده نمایید. این پیام در واقع پیام تایید ایمیل شما می باشد که نمایش داده شده است؛ حالا بر روی ok کلیک کنید.
17- چون من محصولی خریداری نکرده بودم مرا به برگه my_account.php هدایت کرد (دقت کنید که هنوز این برگه را نساخته ایم برای همین خطای Not Found داده است در قسمت های بعدی حتما آن را خواهیم ساخت).
اگر محصولی خریداری کرده بودم مرا به برگه payment.php هدایت می کرد (برای درک بهتر فایل checkout.php را مشاهده نمایید و کلمه payment را جستجو کنید ).
18- حالا اگر به phpmyadmin مراجعه کنید تغییرات در رکورد را خواهید دید. این تغییرات باعث خواهند شد که بفهمیم کاربر لینک تایید ایمیل را فشار داده است (طبق آنچه که من قبلا به شما عرض کردم).
خب دوستان عزیزم، به پایان این قسمت فوق العاده زیبا از سری آموزش های ساخت فروشگاه اینترنتی با php رسیدیم. در قسمت آینده به سراغ فایل payment.php (برگه پرداخت) خواهیم رفت. قسمت آینده نیز نکات مهمی دارد که انشاالله با هم دیگر آنها را مرور می کنیم. موفق باشید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.