🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ علی صالحی
()self::clear
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۲۷ دی ۱۴۰۰

سلام وقت بخیر.برای من پیغام به درستی نمایش میده اما صفحه رو که رفرش میکنم ابتدا این پیغام وجود داره و انگار clear نمیشه .

فایل flash.class.php


class FlashMessage
{
    const SUCCESS = 1 ;
    const ERROR = 2 ;
    public static function add($message, $type = self::SUCCESS)
    {
    
    $_SESSION['upp_messages'] = [
        'message' => $message,
        'type' => $type
    ];
    
    }
    public static function show()
    {
      if(isset($_SESSION['upp_messages'])){
          
        $message = $_SESSION['upp_messages'];
       
        if($message['type'] == self::SUCCESS){
            echo '

'. $message['message'] .'

'
;         }else{             echo '

'. $message['message'] .'

'
;         }         self::clear();       }     }     public static function get(){         $message_in_html = '';         if(isset($_SESSION['upp_messages'])){             $message = $_SESSION['upp_messages'];                       if($message['type'] == self::SUCCESS){                 $message_in_html = '

'. $message['message'] .'

'
;             }else{                 $message_in_html = '

'. $message['message'] .'

'
;                             }             self::clear();           }           return $message_in_html;     }     public static function clear()     {         $_SESSION['upp_message'] = null ;     } }

فایل ProfileHandler.php


include "Handler.php";
include_once UPP_DIR.'view.class.php';
include UPP_DIR.'panel/flash.class.php';
class ProfileHandler extends Handler
{
    public function __construct()
    {
        parent::__construct();
        add_action('wp_update_username',[$this,'get_update_username']);
    }
    public function index()
    {
        $currentUser = $this->current_user;
       if(isset($_POST['savedata'])){
        do_action('wp_update_username');
        
       }
       $message = FlashMessage::get();
        $params = [
            'current_user' => $currentUser,
            'message' => $message
        ];
     
        View::load('panel/profile/index.php',$params);
    }
    public function get_update_username()
    {
        $user_data_for_update = [
            'ID'           => $this->current_user->ID,
            'display_name' => apply_filters('pre_user_display_name',$_POST['userFullName'])
        ];
        if(!empty($_POST['userPass'])){
            $user_data_for_update['user_pass'] = apply_filters('pre_user_pass',$_POST['userPass']);
        }
        $update_result = wp_update_user($user_data_for_update);
       if(!is_wp_error($update_result)){
        
        FlashMessage::add('اطلاعات با موفقیت بروزرسانی شد');
        
       }
        
    
    }   
    }

سلام.

متد clear انجام میشه ولی زمانی که رفرش میکنید صفحه رو مقادیر $_POST در صفحه وجود داره و با رفرش شما عملا دوباره submit میکنید صفحه رو که مجدد داده‌ها ست میشن. برای اینکه ازین مورد جلوگیری کنید بعد اینکه submit انجام شد یعنی داخل if بیاید و با تابع header ریدایرکت کنید به همین صفحه یعنی با کد صفحه رو رفرش کنید.

محسن موحد ۲۸ دی ۱۴۰۰، ۰۵:۲۷

من قبل از اینکه دکمه ثبت رو بزنم این پیغام رو دارم.میخوام بعد از اینکه دکمه ثبت رو زدم این پیغام بیاد

علی صالحی ۲۹ دی ۱۴۰۰، ۰۰:۵۲

قبل اینکه برای اولین بار دکمه ی ثبتو میزنید که داده ای وجود نداره. درسته؟ (برای اینکه نتیجه ی درست بگیرید میتونید فایل‌های سشن داخل دایرکتوری tmp رو دستی delete کنید. tmp داخل پوشه wamp یا xampp ای که نصب کردید هست.)

وقتی که اولین بار فرمو سابمیت میکنید، پیام‌ها درست نمایش داده میشه. درست؟

حالا اگه داخل یک تب جدید مرورگر، آدرس همین صفحه رو تایپ و باز کنی، دوباره پیام هارو نشون میده؟؟


این کارو هم میتونید کنید دستورات flash message و متغیر params رو در داخل if بذارید تا چک کنه اگر savedata بود ... و سمت ویو هم چک کنید اگر params وجود داشت (isset) پیام هارو نمایش بده.

محسن موحد ۲۹ دی ۱۴۰۰، ۱۰:۱۹