توضیح یک قطعه کد

این تاپیک 3 پاسخ و 2 مشارکت کننده دارد . آخرین آپدیت توسط :  حامد مودی ،‏ 2 سال و 8 ماه پیش .

این تاپیک تاکنون 636 بازدید داشته است .

نویسنده پست
چهار شنبه ، 2 آوریل 2014     10:55 ب.ظ #


Reza Majidi

Subscriber
4 پست1 تاپیک

قطعه کد زیر وظیفه تست این رو داره که آیا کاربر تمام اطلاعات خواسته شده رو برای ارسال وارد کرده یا نه و ...

ممنون میشم به صورت نسبتا ابتدایی برام توضیح بدین...
<?php
foreach ($_POST as $key => $value) {
$temp = is_array($value) ? $value : trim($value);
if (empty($temp) && in_array($key, $required)) {
$missing[] = $key;
} elseif (in_array($key, $expected)) {
${$key} = $temp;
}
}

2  تشکر
پنجشنبه ، 3 آوریل 2014     12:05 ق.ظ #


حامد مودی

Subscriber
VIP
147 پست40 تاپیک

خط دوم مخواد تک تک مقادیر آرایه سراسری POST رو بوسیله کلید و مقدارش مرور میکنه.
خط سوم یه متغیر موقتی ایجاد کرده و با دستور شرطی بهش گفته: اگه مقدار فعلی آرایه س همون آرایه رو داخل متغیر موقت یا temp قرار بده اگه غیر این بود بوسیله تابع trim کاراکترهای خالی رو از مقدار حذف کن و داخل temp قرار بده.

خط چهارم میگه اگه مقدار temp خالی بود و همین مقدار رو ما لازم داریم و واردکردنش الزامیه، کلیدش رو داخل یه آرایه تحت عنوان missing قرار بده(متغیر require که یه آرایه س، کلید هایی رو که وارد کردنش الزامیه رو داخل خودش جا داده پس میشه از اینجا تشخیص داد که اگه این کلید از آرایه، که کاربر وارد کرده مقدارش خالی بود ولی وارد کردنش الزامیه کلیدو داخل missing ذخیره کنه)

خط ششم میگه اگه غیر از این بود کلید رو بررسی کن که آیا این کلید، کلید مورد انتظار ما هست یا نه(میتونه دلیل امنیتی داشته باشه که کاربر وقت ارسال فرم، فرم رو دستکاری نکرده باشه)

خط هفتم میاد متغیر موقت یا temp مارو داخل یه متغیر همنام کلیدش قرار میده.

سعی کردم کامل باشه

3  تشکر
پنجشنبه ، 3 آوریل 2014     1:10 ب.ظ #


Reza Majidi

Subscriber
4 پست1 تاپیک

خیلی ممنونم
تو خط 3 مگه $value آرایست؟ $_POST آرایست دیگه. فکر کنم تابع is_array() اینجوریه.
تو خط 3 چرا تست می کنیم و یه سری trim نمی کنیم؟ دلیل امنیتی داره یا صرفه جویی تو اجرای کد؟

0  تشکر
پنجشنبه ، 3 آوریل 2014     3:27 ب.ظ #


حامد مودی

Subscriber
VIP
147 پست40 تاپیک

فکر کنم چون متغیر اضافی تولید نکنیم . به هرحال هر متغیر یه مقدار از حافظه رو اشغال میکنه دیگه

1  تشکر
پست 1 تا 4 (از مجموع 4 پست)

برای پاسخ دادن به این تاپیک باید وارد سایت شوید .