💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ هادی جیبر
تفاوت در استفاده دو مدل متفاوت از $_POST
جامعه پی اچ پی ایجاد شده در ۲۱ مهر ۱۴۰۳

سلام وقت بخیر

می خوام بدونم تفاوت این کد:

    $params = $_POST;
    if($action == 'register'){
        if(empty($params['name']) || empty($params['phone']) || empty($params['email'])){
            echo 'Please Enter valid Data.';
            die();
        }
    } 

با کد زیر چیست؟

if($action == 'register'){
        if(empty($_POST['name']) || empty($_post['phone']) || empty($_post['email'])){
            echo 'Please Enter valid Data.';
            die();
        }

سلام،

تفاوتی از لحاظ نتیجه ندارند.

فقط میشه گفت کد با متغیری که در نظر گرفته شده کمی ساده‌تر شده.

محسن موحد ۲۱ مهر ۱۴۰۳، ۱۶:۴۵

سلام مجدد

تفاوت داره، وقتی از متغیر استفاده نمی‌کنم با ارسال اطلاعات فرم صفحه رفرش میشه و عملا دیتای فرم رو ارسال نمی‌کنه و چون چیزی ارسال نشده (فیلدهای فرم خالی هستند) پیغام خطا رو چاپ می‌کنه.

هادی جیبر ۲۲ مهر ۱۴۰۳، ۰۵:۱۵

سلام،

این موردی که گفتید به این تکه کدی که گذاشتید ارتباطی نداره.
چون وقتی از متغیر استفاده میکنید، عملاً مقدار متغیر params از $_POST تامین میشود.

در رفرش صفحه مقادیر مجدد ارسال میشن و در این آرایه سوپرگلوبال وجود دارند.

 

شما کدتون رو کامل بذارید تا فرم رو هم ببینم و همچنین در شرط دوم مقادیر $_POST در empty($_post['phone']) || empty($_post['email']) رو با حروف بزرگ بنویسید.

محسن موحد ۲۳ مهر ۱۴۰۳، ۱۱:۴۲

سلام، وقت بخیر. 

مقادیر داخل آرایه گلوبال POST وجود داره به نظرم نیازی نیست که داخل متغیر قرار بدید، از داخل همین آرایه مقادیر ارسالی رو دریافت کنید. دو تکه کد هم تفاوتی با هم ندارن، جز تو شرط کد دوم که POST رو با حروف کوچک نوشتید.

 مشکل از بخش دیگه ای هست که داده ارسال نمیشه یا خالی ارسال میشه. حتما متد ارسال درخواست رو هم چک کنید که POST باشه. 

همونطور که جناب موحد گفتن اگه کدتون رو کامل قرار بدین و فرم بررسی بشه، بهتر میشه مشکل رو پیدا کرد.

برای اعتبارسنجی داده‌ها هم سعی کنید از دو تابع filter_var و filter_input استفاده کنید.

مصطفی زارعی ۲۴ مهر ۱۴۰۳، ۰۷:۰۶