قابلیت بازیابی رمزعبور در php یک ضرورت برای سیستم لاگین سایت می باشد. بازیابی رمزعبور این قابلیت را به کاربران را میدهد که درصورت فراموشی رمز عبور ، پسورد اکانت را بروزرسانی کنند.
در این آموزش ، به شما مراحل ساخت سیستم بازیابی رمزعبور در php توسط ایمیل را نشان می دهیم.
لیست فایل هایی که در پروسه بازیابی رمزعبور در php استفاده شده را می بینید:
- User.php – مدیریت اتصال به دیتابیس
- userAccount.php – مدیریت فراموشی رمزعبور ، بازیابی رمزعبور و ارسال ایمیل
- index.php – نمایش فرم ورود کاربران + لینک فراموشی پسورد
- forgotPassword.php – نمایش فرم فراموشی رمز عبور
- resetPassword.php – نمایش فرم بازیابی رمزعبور
- style.css – استایل دهی به فرم ورود ، فراموشی و بازیابی رمز عبور
برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود
ساخت جدول مربوط به کاربران
برای ذخیره سازی اطلاعات کاربران ، شما باید از قبل یک جدول users در دیتابیس mysql داشته باشید. حالا یک ستون به اسم forgot_pass_identity به جدول users اضافه می کنیم.
1 |
ALTER TABLE `users` ADD `forgot_pass_identity` VARCHAR(32) NOT NULL AFTER `phone`; |
ساختار کلی جدول users به اینصورت خواهد بود :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `last_name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `phone` varchar(15) COLLATE utf8_unicode_ci NOT NULL, `forgot_pass_identity` varchar(32) COLLATE utf8_unicode_ci NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, `status` enum('1','0') COLLATE utf8_unicode_ci NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; |
کلاس User (user.php)
کلاس User تمام عملیات مربوط به دیتابیس mysql مثل get , insert , update اطلاعات کاربران را برعهده دارد . متد update() در این کلاس برای ساخت کد تشخیص هویت برای فراموشی رمزعبور استفاده می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
<?php /* * User Class * This class is used for database related (connect fetch, and insert) operations * @author Netparadis.com * @url http://www.Netparadis.com */ class User{ private $dbHost = "localhost"; private $dbUsername = "root"; private $dbPassword = ""; private $dbName = "Netparadis"; private $userTbl = "users"; public function __construct(){ if(!isset($this->db)){ // Connect to the database $conn = new mysqli($this->dbHost, $this->dbUsername, $this->dbPassword, $this->dbName); if($conn->connect_error){ die("Failed to connect with MySQL: " . $conn->connect_error); }else{ $this->db = $conn; } } } /* * Returns rows from the database based on the conditions * @param string name of the table * @param array select, where, order_by, limit and return_type conditions */ public function getRows($conditions = array()){ $sql = 'SELECT '; $sql .= array_key_exists("select",$conditions)?$conditions['select']:'*'; $sql .= ' FROM '.$this->userTbl; if(array_key_exists("where",$conditions)){ $sql .= ' WHERE '; $i = 0; foreach($conditions['where'] as $key => $value){ $pre = ($i > 0)?' AND ':''; $sql .= $pre.$key." = '".$value."'"; $i++; } } if(array_key_exists("order_by",$conditions)){ $sql .= ' ORDER BY '.$conditions['order_by']; } if(array_key_exists("start",$conditions) && array_key_exists("limit",$conditions)){ $sql .= ' LIMIT '.$conditions['start'].','.$conditions['limit']; }elseif(!array_key_exists("start",$conditions) && array_key_exists("limit",$conditions)){ $sql .= ' LIMIT '.$conditions['limit']; } $result = $this->db->query($sql); if(array_key_exists("return_type",$conditions) && $conditions['return_type'] != 'all'){ switch($conditions['return_type']){ case 'count': $data = $result->num_rows; break; case 'single': $data = $result->fetch_assoc(); break; default: $data = ''; } }else{ if($result->num_rows > 0){ while($row = $result->fetch_assoc()){ $data[] = $row; } } } return !empty($data)?$data:false; } /* * Insert data into the database * @param string name of the table * @param array the data for inserting into the table */ public function insert($data){ if(!empty($data) && is_array($data)){ $columns = ''; $values = ''; $i = 0; if(!array_key_exists('created',$data)){ $data['created'] = date("Y-m-d H:i:s"); } if(!array_key_exists('modified',$data)){ $data['modified'] = date("Y-m-d H:i:s"); } foreach($data as $key=>$val){ $pre = ($i > 0)?', ':''; $columns .= $pre.$key; $values .= $pre."'".$val."'"; $i++; } $query = "INSERT INTO ".$this->userTbl." (".$columns.") VALUES (".$values.")"; $insert = $this->db->query($query); return $insert?$this->db->insert_id:false; }else{ return false; } } /* * Update data into the database * @param string name of the table * @param array the data for inserting into the table */ public function update($data, $conditions){ if(!empty($data) && is_array($data) && !empty($conditions)){ //prepare columns and values sql $cols_vals = ''; $i = 0; if(!array_key_exists('modified',$data)){ $data['modified'] = date("Y-m-d H:i:s"); } foreach($data as $key=>$val){ $pre = ($i > 0)?', ':''; $cols_vals .= $pre.$key." = '".$val."'"; $i++; } //prepare where conditions $whereSql = ''; $ci = 0; foreach($conditions as $key => $value){ $pre = ($ci > 0)?' AND ':''; $whereSql .= $pre.$key." = '".$value."'"; $ci++; } //prepare sql query $query = "UPDATE ".$this->userTbl." SET ".$cols_vals." WHERE ".$whereSql; //update data $update = $this->db->query($query); return $update?true:false; }else{ return false; } } } |
برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود
userAccount.php
این فایل ، ثبت نام ، لاگین ، خروج (logout) ، درخواست فراموشی و بازیابی رمز عبور را برعهده دارد. همچنین قابلیت ارسال لینک بازیابی رمز عبور در php توسط ایمیل را دارد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
<?php if(isset($_POST['forgotSubmit'])){ //check whether email is empty if(!empty($_POST['email'])){ //check whether user exists in the database $prevCon['where'] = array('email'=>$_POST['email']); $prevCon['return_type'] = 'count'; $prevUser = $user->getRows($prevCon); if($prevUser > 0){ //generat unique string $uniqidStr = md5(uniqid(mt_rand()));; //update data with forgot pass code $conditions = array( 'email' => $_POST['email'] ); $data = array( 'forgot_pass_identity' => $uniqidStr ); $update = $user->update($data, $conditions); if($update){ $resetPassLink = 'http://Netparadis.com/resetPassword.php?fp_code='.$uniqidStr; //get user details $con['where'] = array('email'=>$_POST['email']); $con['return_type'] = 'single'; $userDetails = $user->getRows($con); //send reset password email $to = $userDetails['email']; $subject = "Password Update Request"; $mailContent = 'Dear '.$userDetails['first_name'].', <br/>Recently a request was submitted to reset a password for your account. If this was a mistake, just ignore this email and nothing will happen. <br/>To reset your password, visit the following link: <a href="'.$resetPassLink.'">'.$resetPassLink.'</a> <br/><br/>Regards, <br/>Netparadis'; //set content-type header for sending HTML email $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; //additional headers $headers .= 'From: Netparadis<sender@example.com>' . "\r\n"; //send email mail($to,$subject,$mailContent,$headers); $sessData['status']['type'] = 'success'; $sessData['status']['msg'] = 'Please check your e-mail, we have sent a password reset link to your registered email.'; }else{ $sessData['status']['type'] = 'error'; $sessData['status']['msg'] = 'Some problem occurred, please try again.'; } }else{ $sessData['status']['type'] = 'error'; $sessData['status']['msg'] = 'Given email is not associated with any account.'; } }else{ $sessData['status']['type'] = 'error'; $sessData['status']['msg'] = 'Enter email to create a new password for your account.'; } //store reset password status into the session $_SESSION['sessData'] = $sessData; //redirect to the forgot pasword page header("Location:forgotPassword.php"); }elseif(isset($_POST['resetSubmit'])){ $fp_code = ''; if(!empty($_POST['password']) && !empty($_POST['confirm_password']) && !empty($_POST['fp_code'])){ $fp_code = $_POST['fp_code']; //password and confirm password comparison if($_POST['password'] !== $_POST['confirm_password']){ $sessData['status']['type'] = 'error'; $sessData['status']['msg'] = 'Confirm password must match with the password.'; }else{ //check whether identity code exists in the database $prevCon['where'] = array('forgot_pass_identity' => $fp_code); $prevCon['return_type'] = 'single'; $prevUser = $user->getRows($prevCon); if(!empty($prevUser)){ //update data with new password $conditions = array( 'forgot_pass_identity' => $fp_code ); $data = array( 'password' => md5($_POST['password']) ); $update = $user->update($data, $conditions); if($update){ $sessData['status']['type'] = 'success'; $sessData['status']['msg'] = 'Your account password has been reset successfully. Please login with your new password.'; }else{ $sessData['status']['type'] = 'error'; $sessData['status']['msg'] = 'Some problem occurred, please try again.'; } }else{ $sessData['status']['type'] = 'error'; $sessData['status']['msg'] = 'You does not authorized to reset new password of this account.'; } } }else{ $sessData['status']['type'] = 'error'; $sessData['status']['msg'] = 'All fields are mandatory, please fill all the fields.'; } //store reset password status into the session $_SESSION['sessData'] = $sessData; $redirectURL = ($sessData['status']['type'] == 'success')?'index.php':'resetPassword.php?fp_code='.$fp_code; //redirect to the login/reset pasword page header("Location:".$redirectURL); } |
نکته : فراموش نکنید که محتویات ایمیل ، آدرس from و لینک وبسایت را در متغییر $resetPassLink
داخل پروژه خود تغییر بدید.
فرم لاگین همراه با لینک فراموشی رمزعبور (index.php)
1 2 3 4 5 6 7 8 9 10 |
<div class="container"> <form action="userAccount.php" method="post"> <input type="email" name="email" placeholder="EMAIL" required=""> <input type="password" name="password" placeholder="PASSWORD" required=""> <div class="send-button"> <input type="submit" name="loginSubmit" value="LOGIN"> </div> <a href="forgotPassword.php">Forgot password?</a> </form> </div> |
فرم فراموشی رمزعبور (forgotPassword.php)
یک فرم برای دریافت ایمیل از کاربر برای شناسایی اکانت کاربر ایجاد شده است .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php session_start(); $sessData = !empty($_SESSION['sessData'])?$_SESSION['sessData']:''; if(!empty($sessData['status']['msg'])){ $statusMsg = $sessData['status']['msg']; $statusMsgType = $sessData['status']['type']; unset($_SESSION['sessData']['status']); } ?> <h2>Enter the Email of Your Account to Reset New Password</h2> <?php echo !empty($statusMsg)?'<p class="'.$statusMsgType.'">'.$statusMsg.'</p>':''; ?> <div class="container"> <div class="regisFrm"> <form action="userAccount.php" method="post"> <input type="email" name="email" placeholder="EMAIL" required=""> <div class="send-button"> <input type="submit" name="forgotSubmit" value="CONTINUE"> </div> </form> </div> </div> |
فرم بازیابی رمزعبور (resetPassword.php)
این فرم زمانی که کاربر بر روی لینک بازیابی رمزعبور کلیک میکند ، نمایش داده می شود . فرم نمایشی برای تغییر رمزعبور که اطلاعات ورودی را به صفحه userAccount.php توسط درخواست resetSubmit ارسال میکند
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php session_start(); $sessData = !empty($_SESSION['sessData'])?$_SESSION['sessData']:''; if(!empty($sessData['status']['msg'])){ $statusMsg = $sessData['status']['msg']; $statusMsgType = $sessData['status']['type']; unset($_SESSION['sessData']['status']); } ?> <h2>Reset Your Account Password</h2> <?php echo !empty($statusMsg)?'<p class="'.$statusMsgType.'">'.$statusMsg.'</p>':''; ?> <div class="container"> <div class="regisFrm"> <form action="userAccount.php" method="post"> <input type="password" name="password" placeholder="PASSWORD" required=""> <input type="password" name="confirm_password" placeholder="CONFIRM PASSWORD" required=""> <div class="send-button"> <input type="hidden" name="fp_code" value="<?php echo $_REQUEST['fp_code']; ?>"/> <input type="submit" name="resetSubmit" value="RESET PASSWORD"> </div> </form> </div> </div> |
کد CSS (style.css)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
.container { width: 40%; margin: 0 auto; background-color: #f7f7f7; color: #757575; font-family: 'Raleway', sans-serif; text-align: left; padding: 30px; } h2 { font-size: 30px; font-weight: 600; margin-bottom: 10px; } .container p { font-size: 18px; font-weight: 500; margin-bottom: 20px; } .regisFrm input[type="text"], .regisFrm input[type="email"], .regisFrm input[type="password"] { width: 94.5%; padding: 10px; margin: 10px 0; outline: none; color: #000; font-weight: 500; font-family: 'Roboto', sans-serif; } .send-button { text-align: center; margin-top: 20px; } .send-button input[type="submit"] { padding: 10px 0; width: 60%; font-family: 'Roboto', sans-serif; font-size: 18px; font-weight: 500; border: none; outline: none; color: #FFF; background-color: #2196F3; cursor: pointer; } .send-button input[type="submit"]:hover { background-color: #055d54; } a.logout{float: right;} p.success{color:#34A853;} p.error{color:#EA4335;} |
جمع بندی
امیدوارم آموزش “ساخت سیستم بازیابی رمزعبور در php” برای توسعه صفحه لاگین کاربران شما مفید بوده باشد. اگر از قبل صفحه لاگین را ساخته اید کافیست این کد ها را به پروژه خود در صورت عدم تداخل متغییر ها اضافه و به راحتی استفاده کنید.
برای دانلود سورس کد کامل این آموزش از باکس دانلود استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید
سلام روزتون بخیر در قسمت user.php در ابتدای اتصال به دیتابیس از متعیر this استفاده کردین و بعد از این خط دستور استفاده کردین. میشه بگین دقیقا این ۲ چه کاری انجام میدن و برای چی هستن؟ این علامت چیه؟dbHost, $this->dbUsername, $this->dbPassword, $this->dbName);
سلام. این کد بصورت oop یا شی گرایی نوشته شده.
زمانی که شما یک آبجکت از اون کلاس رو میساری اطلاعات دیتابیس رو بهش میدید و داخل متغیرهای کلاس ذخیره میشه و بعد هر متدی از کلاس برای مثلا دستورات sql اجرا می کنید با اون اطلاعات به دیتابیس متصل شده و دستور رو انجام میده
سلام خسته نباشید مرسی از سایت خوبتون. میشه لطفا جواب این سوال منو بدین؟ قسمت فراموشی رمز عبور وقتی ایمیل وارد میکنم که لینک بازیابی بفرسته چیزی نمیاد ارور هم نمیده میگه لینک ارسال شد ولی هیچی نمیاد. چرا اینجوری شده؟ باید چیکار کنم؟
سلام. ممنون
بخاطر smtp سرور هست اگر در لوکال تست می کنید احتمالا ارسال تمیشه و اگر در هاست واقعی تست می کنید احتمالا یا رفته در فولدر اسپم یا بعضی مواقع بخاطر هاست نامرغوب ارسال نمیشه
اخه به من تو قسمت ریست پسورد اررور fp_code میده. اف پی کد چه چیزی هست؟ بعد ببخشید چزا روی لوکال ارسال نمیشه؟؟
قسمت بازیابی رمز عبور من ارور میده
Undefined index:fp_code in c:wamp/resetpassword.php on line 28 call stack #time memory
Location function
برای چیه این اررور؟میشه لطفا جواب بدین؟
سلام ببخشید قسمت forgot password برای من کار نمیکنه. چیکار باید بکنم؟
سلام خسته نباشید. من تمامی قسمت های فایلو انجام دادم. قسمت بازیابی رمز عبور از همون لحظه ای که میخوام ایمیل رو وارد کنم ارور میده
Some problem occurred’ ple….
بنظر شما مشکل از کجاست؟؟ ایمیلی که میدم معتبره داخل دیتابیس هست و باهاش حساب دارم
ببخشید یه سوال دیگ داشتم. موقع لاگین شدن از لاین ۶۴ user.php اررور میگیره. این اررور چه زمانی رخ میده؟
ورژن php رو روی ۷٫۳ یا ۵٫۶ قرار بدید
سلام وقتتوم بخیر. مرسی از سایت خوبتون. من متوجه نشدم که قسمت متغیر update رو باید چیکار کنم. لینک netpparadis رو به چه لینکی تغییر بدم؟؟
سلام. ممنون.
به آدرس سایت خودتون یا جایی که اسکریپت رو دارید تغییر بدید
سلام، من در مورد کلاس های آموزش PHP سوال داشتم چجوری میشه ارتباط گرفت واسه پرسیدن سوال و ثبت نام
با سلام
خسته نباشی
کدهای فراموش رمزعبور و همچنین قابلیت ارسال کد تایید روی گوش همراه داشته باشد ورمزعبور روی گوش کاربر ارسال شود
سلام. ممنون.
این موارد باید طبق پروژه خود سفارشی و اضافه کنید و یک کد برای همه پروژه ها وجود ندارد باید الگو بگیریدو استفاده کنید
سلام
خسته نباشی
کدهای فراموش رمز عبوریک فرم برای دریافت کد ملی از کاربر برای شناسایی اکانت باشد
ممنون میشم کویری ساخت جداول رو دوباره بدهید.
سلام.
کویری ساخت جداول در اوایل پست بالا در بخش ساخت جدول مربوط به کاربران موجود است.
Some problem occurred, please try again.
با سلام
این ارور برای چی در قسمت register میاد👆👆👆
سلام.
مشکلی در اتصال به دیتابیس یا قرار دادن داده ها دخل دیتابیس (کویری update) هست که ممکنه جداول رو نساختید یا مورد مشابه پیش اومده
سلام این کد یک ایراد داره، ما زمانی کد بازیابی رمز عبور رو ساختیم و کاربر ازش استفاده کرد دیگه نباید اون کد توی دیتابیس باشه و باید حذف بشه اما این کار صورت نمیگیره، لطفا بگید چطور این کار رو انجام بدم، اگه میشه قطعه کدش رو بدید
سلام.
این یک مشکل در کد نیست فقط ما این قابلیت رو بهش اضافه نکردیم که بنابر نیاز خود می توانید داده را از دیتابیس حذف کنید
در فایل userAccount.php خط ۸۹ یک کویری sql برای DELETE کردن سطر مربوطه از دیتابیس اضافه کنید تا حذف بشه.
موفق باشید.
ببخشید دو تا سوال داشتم.مشکل قبلی حل شد.وقتی تو دو پروژه متفاوت کدای رجیستر و بازیابی رمز عبور رو اجرا میکنم درست کار میکنن.ولی وقتی ترکیبشون میکنم عمل ثبت نام درست انجام نمیشه.دلیلشم اون سطر forgot_pass_identity هست چون توی رجیستر نیازی بهش نیست.دقیقا نمیدونم چطور این مشکلو حل کنم ممنون میشم کمکم کنید.نمیدونم توضیحاتم کافی بود یا ن اگه متوجه نشدید بگید تا تو تلگرام عکس بفرستم واستون.
در کویری sql مربوط به ثبت نام که بصورت insert into هست اینجا forgot_pass_identity را مثلا مقدار ۰ یا هرچیزی یزارید یا اینکه داخل دیتابیس این ستون را گزینه null رو تیک بزنید و اعمال کنید تا مشکل حل بشه.
موفق باشید.
مرسی درست شد.مشکل دومم اینه من با wamp دارم رو سایت کار میکنم و host و domain ندارم هنوز
الان به جای ‘http://Netparadis.com/resetPassword.php?fp_code=’ چی بذارم؟
اگر روی لوکال هاست هست به جای http://Netparadis.com از http://localhost استفاده کنید.
این رو هم آخرش اضافه کنم یا نمیخواد؟ resetPassword.php?fp_code
خب طبیعتا باید اضافه بشه
سلام خسته نباشین.خط ۸ فایل user account ارور میده ارورش هم اینه ممنون میشم کمکم کنید
Fatal error: Uncaught Error: Call to a member function getRows() on null in E:\game\www\reg7\userAccount.php on line 8
سلام. ممنون. کویری شما مشکل دار هست احتمالا به خاطر اتصال دیتابس یا نبودن جداول است که برای همین این خطا مشاهده میشه. که در اینحا $user خالی یا کویریش به درستی اجرا نشده ینی کاربری تشخصی داده نشده
ممنون از پاسخگویی.روش کار میکنم ببینم چی میشه
سلام;
Please check your e-mail, we have sent a password reset link to your registered email.
پیام داده منتهی ایمیل نیومده. میخواستم بدونم از لوکال هاست هم ایمیل میاد یا باید به هاست اصلی وصل کنم؟
سلام. بعضی مواقع از لوکال هاست ارسال نمیشه یا بعد ارسال داخل فولدر اسپم قرار می گیره. در هاست واقعی این مشکل به ندرت اتفاق میوفته و معمولا ایمیل ها به درستی ارسال می شوند.
موفق باشید.
سلام
ممنون توی هاست درست شده.
یه قسمت فقط مورد داره صفحه forgotPassword.php ایمیل میزنم لینک تغییر پسورد ارسال میشه و سالمه و پسورد جدید هم توی تیبل ذخیره می کنه منتهی خود صفحه forgotPassword.php رفرش میشه و ارور ۴۰۴ میاره.
سلام. اگر دقت کنید در متن همین پست این مورد بصورت نکنه اومده
در فایل userAccount.php و خط ۲۳ باید آدرس دامنه خود را تغییر بدید
$resetPassLink = 'http://Netparadis.com/resetPassword.php?fp_code='.$uniqidStr;
به جای http://Netparadis.com باید آدرس دامنه به همراه فولدر اسکریپت را به درستی آدرس دهی کنید تا لینک معتبر به ایمیل ارسال بشه.
موفق باشید.
ممنون اون قسمت درسته اینجا رو ببینید:
http://hideveloper.ir/Dashboard/forgotPassword.php
ثبت نام کنید و بعد خارج بشین و همین صفحه بازیابی رو بزنین.
برای راحتی کار ایمیل که قبلا ثبت نام شده رو چک کنین
ممنون
مسله فقط کوچک و بزرگ بودن حروف (F) است که یا در سورس و یا خود فایل اسم فایل رو تغییر بدید
forgotPassword یا ForgotPassword
خیلی ممنون خود فایل کوچیک کردم ♥
باسلام و خسته نباشید ببخشید امکانش هست درمورد آموزش بالا بیشتر توضیح دهید یا حداقل یک فیلم آموزشی مرتبط باهاش به ما معرفی نمایید اخه یه خرده نامفهومه بعضی جاهاش و توابعش.ممنون
سلام. ممنونم . اگر با PHP مقدماتی و همچنین شی گرایی آشنا باشید با کمی مطالعه و تست کدها به هیچ وجهی مشکلی با توابع و نحوه کارکرد آنها نخواهید داشت و همانطور که گفته شد نیاز است که OOP را بلد باشید.
این سیستم بازیابی رمزعبور بر روی سیستم لاگین و ثبت نامی که در لینک زیر آموزش دادیم سوار است که در واقع کدها همان کد آموزش زیر است و فقط بخش کوچکی بهش اضافه شده.
https://netparadis.com/registration-and-login-system-php/
به هر حال اگر آموزش بالا رو مطالعه کنید مطمینا توابع جدیدی که به این آموزش اضافه شده است زیاد هم سخت و پیچیده نخواهد بود و به راحتی می تونید منطق کدها رو درک کنید.
امیدوارم با حوصله بیشتری آموزش را دنیال و کدها رو روی محیط تست اجرا و بررسی کنید تا نحوه پیاده سازی این سیستم رو یاد بگیرید.
موفق باشید.
سلام
وقتی forgot password را میزنم و ایمیل را مینویسم ایمیلی برایم ارسال نمیشود.
در قسمتی هم که اشاره کرده بودید لینک را تغییر دادم
سلام. به جای تابع mail میتونید از کتابخانه PHPMailer استفاده کنید.
https://netparadis.com/send-email-php/
همچنین اگر ایمیلی ارسال نشد ممکن است مشکل از میل سرور باشه که بهتره روی لوکال هاست تست نکنید و روی هاست هم تضمینی برای ایمیل های ارسال شده با تابع mail نیست.
موفق باشید.