فریم ورک لاراول (Laravel) یکی از قوی ترین فریم ورک های زبان PHP می باشد. اگر با این فریم ورک کار می کنید حتما با دستور زیر آشنا هستید:
php artisan make:auth
با اجرا شدن دستور بالایی در خط فرمان و یا ترمینال لینوکس، لاراول به سادگی بخش های ثبت نام، ورود و فراموشی رمز عبور را برای شما ایجاد میکند و شما فقط با کمی تغییرات در بخش های Model، Controller و View اقدام به استفاده از آنها خواهید کرد. اما در مورد بخش فراموشی رمز عبور کمی قضیه فرق می کند.
اولین کاری که برای تنظیم فراموشی رمز عبور در Laravel باید انجام دهید تنظیمات بخش ایمیل این فریم ورک می باشد. ابتدا در پنل هاست خود یک ایمیل بسازید. مثلا اگر از Cpanel استفاده میکنید وارد پنل سی پنل شده و در بخش email یک ایمیل بسازید. به طور مثال:
info@yourdomain.com
username: info@yourdomain.com
password: YOURPASSWORD
تنظیم .env برای ارسال ایمیل در Laravel
بعد از این مرحله وارد ریشه فریم ورک لارول شده و فایل .env را در یک ادیتور باز کنید. و تنظیمات ایمیل و تنظیمات اولیه سایت را به شرح ذیل وارد کنید:
APP_NAME=MyWebsiteTitle APP_ENV=local APP_KEY=base64:*************= APP_DEBUG=true APP_URL=http://www.yourdomain.com . . . . MAIL_DRIVER=smtp MAIL_HOST=mail.yourdomain.com MAIL_PORT=587 MAIL_USERNAME=ifo@yourdomain.com MAIL_PASSWORD=YOURPASSWORD MAIL_ENCRYPTION=null
بخش های MAIL_HOST و MAIL_PORT را می توانید در بخش مدیریت ایمیل هاست مشاهده کنید و یا اگر نیافتید با پشتیبانی هاست خود تماس بگیرید. در واقع لاراول از طریق smtp اقدام به ارسال ایمیل می کند که بهتر از فانکشن ایمیل خود PHP می باشد.
بعد از این مرحله باید فایل config/mail.php را نیز تنظیم کنید. البته در این فایل علاوه بر نام کاربردی و رمز عبور اطلاعات زیر را نیز باید پر کنید:
'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'ifo@yourdomain.com'), 'name' => env('MAIL_FROM_NAME', 'yourdomain.com'), ],
در این مرحله یک تست انجام دهید. مشاهده می کنید که ایمیل فراموشی رمز عبور را با موفقیت دریافت می کنید. اما مشکل اینجاست که این ایمیل به زبان انگلیسی می باشد. فایل مربوط به این ایمیل در پوشه vendor موجود می باشد، ولی دستکاری فایل های داخل vendor کار درستی نیست. در ادامه روش درست ترجمه این ایمیل را توضیح می دهم.
ترجمه ایمیل فراموشی رمز عبور در لاراول Laravel
ابتدا دستور زیر را در خط فرمان وارد کنید:
php artisan make:notification MailResetPasswordToken
با اجرای این دستور فایل MailResetPasswordToken.php در مسیر App\Notifications ایجاد می شود. این فایل را بازکنید و تنظیمات خطوط 12، 19، 21 و 44 را انجام دهید.
namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Notifications\Notification; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Messages\MailMessage; class MailResetPasswordToken extends Notification { use Queueable; public $token; /** * Create a new notification instance. * * @return void */ public function __construct($token) { $this->token = $token; } /** * Get the notification's delivery channels. * * @param mixed $notifiable * @return array */ public function via($notifiable) { return ['mail']; } /** * Get the mail representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\MailMessage */ public function toMail($notifiable) { return (new MailMessage) ->subject("Reset your password") ->line("Hey, did you forget your password? Click the button to reset it.") ->action('Reset Password', url('password/reset', $this->token)) ->line('Thankyou for being a friend'); } }
از خط 44 به بعد در کدهای بالا می توانید پیغام ارسال شده در ایمیل را به طور دلخواه ترجمه کنید. قدم بعد اضافه کردن کد زیر به فایل user.php در بخش model می باشد.
/** * Send a password reset email to the user */ public function sendPasswordResetNotification($token) { $this->notify(new MailResetPasswordToken($token)); }
البته کد زیر را هم به بخش بالایی فایل user.php اضافه کنید:
use App\Notifications\MailResetPasswordToken;
حالا در این مرحله می توانید یک بار دیگر تست کنید. مشاهده می کنید ایمیل به شکل ترجمه شده ارسال شده است. فقط در بخش فوتر ایمیل یک پیغام جداگانه انگلیسی نیز وجود دارد. برای ترجمه آن نیز به این شکل اقدام می کنید که دستور زیر را ابتدا در خط فرمان وارد کنید:
php artisan vendor:publish
بعد از اجرای این دستور شماره 9 را وارد کرده و اینتر بزنید. یعنی به عبارتی laravel-notifications را انتخاب می کنید. بعد از اجرا شدن این دستور وارد مسیر زیر شده و فایل موجود را نیز ترجمه کنید.
/resources/views/vendor/notifications
ممنون برای ریست پسورد با اس ام اس چه کار باید کرد؟
خوب اولین کاری که باید بکنید اینه که یه پنل sms بخرید که قابلیت ارسال پیامک با url و یا soap را داشته باشه. و کافیه لینک تغییر رمز عبور که به ایمیل شخص ارسال میشه را به گوشی کاربر پیامک کنید. البته خوب در هنگام ثبت نام باید شماره موبایل کاربر را اول گرفته باشید. در کل یکم laravel و php میخواد
باعرض سلام و خسته نباشید من از این روشی که شما برای فارسی سازی پیام ریست پسورد توضیح دادید استفاده کردم . منتهی بعد از فارسی سازی وقتی روی لینک ریست پسورد کلیک میکردم به صفحه index سایت میرفت و به لینک مخصوص ریست پسورد نمیرفت امکانش هست من راهنمایی کنید؟!؟!؟
سلام
روی هاست آپلود کردین؟ و یا روی لوکال هستین؟ از بخش env تنظیمات ایمیل را تنظیم کردین؟ به غیر از ریدایرکت به صفحه اول، ارور دیگه ای نمیده؟
سلام بله روی هاست آپلود کردم از بخش env هم تنظیمات ایمیل انجام دادم منتهی فکر میکنم مشکل در قسمتی هست که ما متغیر token را شخصی سازی میکنیم چون وقتی پیام به زبان انگلیسی ارسال میکنم بدون مشکل ارسال میشه اما وقتی متغیر token خودمون استفاده میکنیم لینک تغییر پیدا میکنه و به صفحه index سایت تغییر پیدا میکنه
token را از کدام بخش شخصی سازی میکنید؟ و چه لزومی برای تغییر token لاراول دارد؟
با اجرای این دستور فایل MailResetPasswordToken.php در مسیر App\Notifications ایجاد می شود. این فایل را بازکنید و تنظیمات خطوط ۱۲، ۱۹، ۲۱ را انجام دهید.
طبق فرموده شما بنده عمل کردم و متوجه شدم که نتیجه ای که لازم دارم توسط خط های 12 , 19 , 21 تغییر پیدا میکنه یعنی لینک را تغییر میدهد
من با همین راهکار سر یکی از پروژه ها ایمیل را ترجمه کردن و به خوبی هم جواب داد. تعجب میکنم چرا برای شما درست کار نمیکنه.
نمیدونم
بازم ممنون بابت زمانی که برای بنده گذاشتید
خواهش میکنم. بازم اگر مشکل حل نشد دسترسی به هاستتون را بدین تا روی پروژه بررسی کنم.
سلام ی سوال من تمام مراحل رو رفتم حالا لینکش میشه؟یعنی برای فراموشی رمز چه لینکی باید بدیم
سلام
شما عملا بهش لینک نمیدین. خودش لینک تغییر رمز عبور را به کاربر ارسال میکنه. شما با این تنظیمات فقط ایمیل ارسالی را ترجمه می کنید.
سلام بسیار عالی و قابل فهم اگر میشه آموزش ریست پسورد با شماره تلفن هم بگید عالی میشه ممنونم 🙏❤🧡
سلام،
متاسفانه رمز عبور ورود به پنل مدیریت سایت مون رو فراموش کردیم و گزینه بازیابی رمز عبور نیز فعال نمی باشد. همچنین با توجه به عدم دسترسی به طراح قبلی سایت نیاز داریم که رمز عبور از طریق دایرکت ادمین ریست و یا تغییر یابد. آیا این امکان وجود دارد؟
سلام بله امکانش هست. از طریق کنترل پنل هاست وارد phpmyadmin بشین. تیبل users را بررسی کنید. رمز عبور را به صورت hash شده میبینید. باید یک رمز عبور hash شده جایگزین آن کنید. برای این هم یک لاراول روی لوکال نصب کنید و با استفاده از Hash::make(‘yourpassword’) پسورد جدید را به صورت hash شده دریافت کنید. و در نهایت جدول users را ویرایش و پسورد را عوض کنید.
سلام ممنون از آموزش خوبتون فقط بخش های MAIL_HOST و MAIL_PORT در سی پنل رو از کدوم قسمت پیدا کنیم ؟؟ ممنون میشم اگه جواب بدین مرسی
خواهشن اگه بلدین بگین کارم لنگه همینه….مرسی
سلام
بهترین کار اینه با پشتیبانی هاست تماس بگیرید و این اطلاعات را از آنها بخواهید. مثلا پورت ممکنه 25 و ایمیل هاست هم mail.domain.com باشه.
من سرور خام گرفتم و شرکت میگه که به اونا ربطی نداره و در جریان نیستن …پروژه م رو سروره و از سی پنل استفاده میکنم شما نمیدونید از کدوم قسمت باید پیدا کنم ؟؟مرسی
اگر سی پنل دارید از قسمت File Manager فایل های آپلود شده قابل مشاهده است
با سلام ببخشید استفاده از ایمیل هاست ارور Connection to tcp://mail.dgkardito.ir:465 Timed Out
را به من نشان می دهد