دوستان میخوام بعد از این که یک اتفاق در برنامه من افتاد ، کاربر به صفحه دیگری ریدایرکت بشه و یک پیغام موفقیت آمیز (alert) به کاربر نمایش داده بشه.
به نظرتون استفاده از چه روشی استاندارد تر هست؟
با کوکی ها ، سشن ها ، و آدرس GET میشه این کار رو انجام داد.
سلام دوست عزیز
@arminamirinasab
برای اینکار باید از event - listener استفاده کنید
و در شروع میتونید از سرویس pusher استفاده کنید
سلام
@arminamirinasab
معمولا برای چنین کاری از cookie استفاده نمیشه و به نظرم منطقی هم نیست.
در مورد session و GET هم اگر هدفتون این هست که صرفا یه پیغام موفقیت نمایش داده بشه میتونید هم از session استفاده کنید و هم با استفاده از GET اینکار رو میتونید انجام بدید. در غیر اینصورت اگر همزمان یا بعد از پیغام مورد نظر ، تغییراتی در داده ها یا عملیاتی قراره انجام بشه حتما از session باید استفاده کنید.
سلام، در لاراول این مورد با سشن ها هندل میشه و لاراول مورد مناسبی هست برای الگوبرداری.. من پیشنهاد می کنم که از سشن ها استفاده کنید البته در لاراول پیغام ها یک بار مصرف هستند و به محض اینکه یکبار نشان داده شدند destroy میشن.
عملیات خیلی رایجی هست و تا جایی که بنده میدونم رایج ترین روشش هم ذخیره این اطلاعات در Session کاربر هست. یعنی:
هر وقت اون اتفاقی که مدنظرتون هست افتاد، یک داده ای همراه با پیام مورد نظرتون داخل session کاربر ذخیره میکنید. (میدونید که داده ها در session از جنس key-value هستند)
و بعد کاربر رو به صفحه مورد نظر ریدایرکت میکنید.
حالا در **** بعدی باید کدی در صفحه تون داشته باشید که با هر بار اجرا شدن اون صفحه چک کنه آیا فلان key مورد نظر در session کاربر وجود داره یا نه و اگر وجود داشت یک عملیاتی رو انجام بدید. مثلا از دستور alert() جاوااسککریپت استفاده کنید. یا یک پیغامی بالای صفحه به نمایش در بیاد و یا در قالب یک popup یا modal مثل sweetalert باشه.
نکته مهم و آخر هم اینکه طبیعتا نمی خواید این اتفاق تا ابد تکرار بشه. پس لازم هست بعد از اینکه مقدار رو از session خوندید و کارهای لازم رو انجام دادید، اون داده رو از session کاربر حذف کنید.
در فریم ورک لاراول هم این قضیه خیلی تمیز در قالب flash data پیاده سازی شده:
https://laravel.com/docs/8.x/session#flash-data
سلام @arminamirinasab
بهترین روش از نظر من استفاده از $_GET هستش. توی صفحه مقصد یه شرط تعریف کنید و از طریق اون پیام مورد نظرتونو نمایش بدید.
پیشنهاد من واسه پیغام استفاده از https://sweetalert2.github.io/ هستش. کارای زیر انجام بدید.
ابتدا sweetalert2 توی پروژه فراخونی کنید.
فانکشن زیر تعریف کنید تا بتونید همه جا ازش استفاده کنید.
function alert($alertMessage,$alertType){
echo "<script>
const Toast = Swal.mixin({
toast: true,
position: 'bottom-end',
showConfirmButton: false,
timer: 3200,
timerProgressBar: true,
didOpen: (toast) => {
toast.addEventListener('mouseenter', Swal.stopTimer);
toast.addEventListener('mouseleave', Swal.resumeTimer);
}
});
Toast.fire({";
echo "icon:'" . $alertType . "'";
echo ",title:'" . $alertMessage . "'";
echo "});
</script>"
;
;}
زمانی که میخواید ریدایرکت کنید از کد زیر استفاده کنید.
header('Location: index.php?login=success');
و جایی که میخواید پیام نمایش بدید از کد زیر استفاده کنید.
if(@$_GET['login'] == "success"){
alert("شما با موفقیت وارد حساب کاربری خود شدید.", "success");
};
با تابع alertبه راحتی میتونید پیام هارو نمایش بدید. ورودی اول متن پیامتون هستش و ورودی دوم هم آیکن و یا نوع پیام که میتونید واسه اون از تصویر زیر کمک بگیرید.
امیدوارم براتون مفید باشه باز اگه سوالی بود بپرسید خوشحال میشم بتونم کمک کنم. :)
@golshahimohammadreza @hamedkh72 @Aranabdi @endworld @mhyeganeh
ممنون از پاسخ هاتون در رابطه با دستور GET یک موردی که وجود داره اینه که دیگه نمیشه دستور GET رو حذف کرد و این همین شکل تکرار میشه.
فکر می کنم سشن راه حل بهتری باشه.
راستی Post چطور به یک صفحه که هدایت می کنیم ازش استفاده کنم البته فقط باید از طریق فرم ارسال بشه.ولی فکر نکنم شدنی باشه شما هم نظرتون رو درباره روش POST بگید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟