سلام دوستان
من سایتم رو طراحی کردم وقتی کاربر ی رکورد حذف میکنه یا مقاله منتشر میکنه میخام ی پیغام بیاد که مقاله منتشر یا حذف شد
من اینکارو انجام میدم ولی با زدن f5 یا رفرش هی اون پیغام مجدد میاد ، یا اگه اطلاعات بخاد ارسال کنه مجدد پشت سر هم تو دیتابیس ذخیره میشه، برا جلوگیری از اینکار اومدم کاربر رو انتقال دادم به صفحه دیگ با header ولی با header دیگ نمیتونم پیام ارسال کنم چون منتقل میشه
، دیدم نمیشه ی راه دیگ هم رفتم بهش مقدار دادم و با متد get بهش پیغام دادم ولی بازم با رفرش هی اون پیغام ب کاربر نشون میده
راه دیگ چیه؟ میشه راهنمایی بکنید من دقیقا باید چیکار بکنم که کاربر با رفروش صفحه دیگ اون پیغام نوتیف رو نبینه؟
حتی من شرط گذاشتم ک فیلد خالی بود اجرا نشه ولی با رفرش متاسفانه میشه یا f5
@zahramalekipor
می تونید با این روش اقدام کنید که بعد از ثبت در دیتابیس کاربر رو به همون شکلی که برای بار اول به صفحه هدایت کرده بودید ارجاع بدید مثل یک روت ساده. یعنی روت اولیه بدون مقادیر بازگشتی ولی با فلش مسیج قطعا باید در مورد شرط ها هم ریفکتور لازم رو انجام بدید.
همچنین در مورد کار با سشن و هدر معمولا به خاطر استفاده در فایل های کانفیگ و فانکشنز بروز تداخل و مشکل طبیعیه می تونید از روش زیر هم برای ارجاع دادن کاربر به صفحه مد نظر در سمت سرور اقدام کنید.
echo '<script>location="file.php";</script>';
در مورد شرط سشن هم که توی نمونه آموزشی هست، مشخصه همون ابتدای صفحه بررسی می کنید اگر سشن مسیج ست شده بود اون رو توی یک متغیر جدید می ریزید و سشن مربوطه حذف می کنید بعد پیام رو که توی متغیر جدید قرار داده بودید اکو می کنید.
<?php
session_start();
if(isset($_SESSION['flash_message'])) {
$message = $_SESSION['flash_message'];
unset($_SESSION['flash_message']);
echo $message;
}
@zahramalekipor
شرمنده افراد زیادی اسم منو میارن ولی من متاسفانه فرانت اند هستم و از بک اند سرم نمیشه چیزی 😐💔
سلام
تا کدتون رو نبینم نمیتونم راهنمایی تون کنم ...
و لطفا مشکلتون و کاری که میخواهید انجام دهید را کمی شفاف تر بیان کنید
@gomnam
شما فرض کنید یک فرم دارم و با زدن دکمه submit اطلاعات ارسال میشه، خب وقتی ارسال بشه و دوباره صفحه رو رفرش کنم اطلاعات مجدد تو دیتابیس ثبت میشه ، برا جلوگیریش باید کاربر رو هدایت کنم ب صفحه دیگ با header ولی من نمیخام اینطوری بشه چرا؟ چون یک پیغام مث همین راکت بهش بدم مثلا پست حذف شد یا اگ کامنت ارسال کرد ی گوشه ی اعلان بیاد کامنت ثبت شد، در حالی که وقتی من header میکنم کاربر رو که با رفرش مجدد اطلاعات ثبت نشه دیگ اون پیغام نوتیف هم نمیره براش متاسفانه چون هدایت میشه
ایا روش دیگه ای داره بشه اینکارو کرد نوتیف براش بره ؟
سلام وقت بخیر ،
من از این روش استفاده میکردم !
ابتدا یک متغیر اول صفحه ای که باید فرم رو پر کنن تعریف میکردم
$veryfy = null;
و کد پایین رو قرار میدادم بعد از تگ بسته فرم
<?php if (!is_null($veryfy)) echo $veryfy; ?>
و دقیقا جاهایی که مطمعن بودم عمیات اپدیت یا حذف و ... انجام شده کد پایین رو مینوشتم و بعد از 2 ثانیه صفحه رو رفرش میکردم
$veryfy = ' <input type="hidden" value="ویرایش با موفقیت ثبت شد." id="position-bottom-right">';
header("refresh:2;url=../layouts/all-blog.php");
@zahramalekipor
با js بزن
درخواست ثبت رو بفرست رو api بعد اگر ریسپانس درست بود پیامو نشون بده بعد ده ثانیه ریدایرکت کنه صفحه article
سلام @zahramalekipor
می تونید برای پیام سشن ست کنید بعد از نمایش سشن مربوطه رو حذف کنید تا تکرار نشه در واقع به شکل فلش مسیج ارسال کنید.
نمونه کد
سلام و درود من در پروژه ها دو روش زیر رو استفاده میکنم هر کدوم رو که خواستین میتونین استفاده کنین :
1- از طریق متد get هنگامه که میخواید کاربر رو ریدایرکت کنین و ارور به اون نمایش بدین یک متغیری به نامه error رو مقدار رهی کنین و مثلال برابر یک بزارین بعدش در php چک کنین اگر این متغیر ست بود بیاد و پیام مربئطه به اون کده ارور رو نمایش بده مثلا :
https://example.com/login.php?error=1
2-روش دیگه وبهتر استفاده از سشن هستش که همونطور که اقای حکمتی گفتن میتونی سشن رو به صورت فلش ست کنی و بعد از نمایش پیام به کاربر اون رو پاک کنی تا بار های بعد نشون داده نشه
@hekmati
جناب حکمتی بعد اینکه از این مورد استفاده کردم از hrader برای انتقال کاربر میتونم استفاده کنم یا خیر؟
چون اگ استفاده نکنم از header با زدن رفرش باز مجدد مرورگر اعمال ویرایش رو انجام میده
فلش رو اوکی کردم ، دیدم بدون هدر کار میکنه ولی بازم مشکل قبل داره با رفرش پیغام مرورگر میاد چون اطلاعات مجدد تو دیتابیس اپدیت میشه و پیغام نوتیف نشون میده ، هدر هم گذاشتم فلش دیگ کار نکرد
ممنون میشم بگید این شرط سشن کجا قرار بدم یا من اشتبا انجام میدم
سلام بهترین راه این هست که session ها رو به صورت flash ( یکبار مصرف ) ارسال کنید. توضیحات بیشتر
@zahramalekipor
می تونید با این روش اقدام کنید که بعد از ثبت در دیتابیس کاربر رو به همون شکلی که برای بار اول به صفحه هدایت کرده بودید ارجاع بدید مثل یک روت ساده. یعنی روت اولیه بدون مقادیر بازگشتی ولی با فلش مسیج قطعا باید در مورد شرط ها هم ریفکتور لازم رو انجام بدید.
همچنین در مورد کار با سشن و هدر معمولا به خاطر استفاده در فایل های کانفیگ و فانکشنز بروز تداخل و مشکل طبیعیه می تونید از روش زیر هم برای ارجاع دادن کاربر به صفحه مد نظر در سمت سرور اقدام کنید.
echo '<script>location="file.php";</script>';
در مورد شرط سشن هم که توی نمونه آموزشی هست، مشخصه همون ابتدای صفحه بررسی می کنید اگر سشن مسیج ست شده بود اون رو توی یک متغیر جدید می ریزید و سشن مربوطه حذف می کنید بعد پیام رو که توی متغیر جدید قرار داده بودید اکو می کنید.
<?php
session_start();
if(isset($_SESSION['flash_message'])) {
$message = $_SESSION['flash_message'];
unset($_SESSION['flash_message']);
echo $message;
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟