PDA

View Full Version : سوال: تعریف یه آرایه بصورت سراسری



idocsidocs
سه شنبه 22 شهریور 1390, 20:28 عصر
چطور می تونم یه آرایه سراسری ایجاد کنم تا بتونم بجای آرایه های post و get ازشون استفاده کنم؟

idocsidocs
چهارشنبه 23 شهریور 1390, 15:51 عصر
دوستان کسی نظری نداره؟

MSN_Issue
چهارشنبه 23 شهریور 1390, 19:43 عصر
تنها راهی که به نظر میرسه استفاده از آرایه های $_SESSION و $_COOKIE هست که فکر نمیکنم معقول باشه !!!
حالا چرا نمیخوای از POST یا GET استفاده کنی ؟!

idocsidocs
چهارشنبه 23 شهریور 1390, 20:35 عصر
حالا چرا نمیخوای از POST یا GET استفاده کنی ؟!
امکان داره که موقع کار با فرمها سرور به آرایه POST نیاز داشته باشه، در این صورت ممکنه سیستم به هم بریزه.

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

از اونجاییکه توی mvc فایلها رو توی هم اینکلود می کنم، باید از یه آرایه سراسری غیر از آرایههای خود سور استفاده کنم. راه حلی دارید؟

binyaft
چهارشنبه 23 شهریور 1390, 22:52 عصر
امکان داره که موقع کار با فرمها سرور به آرایه POST نیاز داشته باشه، در این صورت ممکنه سیستم به هم بریزه.
چطور ؟

با foreach بخون بریز تو یه آبجکت .

idocsidocs
چهارشنبه 23 شهریور 1390, 23:39 عصر
چطور ؟

با foreach بخون بریز تو یه آبجکت .
شما بعضی وقتها متوجه منظور نمی شید.

مطلبی که می گید درسته، اما من نمی خوام روی آرایه پست کاری انجام بدم. می خوام آرایه پست فقط برای کاری که طراحی شده (ارسال فرم) بکار بره و برای انجام عملیات روی فیلدهای فرم، می خوام از یه آرایه دیگه استفاده کنم.

برای این کار چه راه حلی هست؟

Mr.Moghadam
پنج شنبه 24 شهریور 1390, 01:59 صبح
امکان داره که موقع کار با فرمها سرور به آرایه POST نیاز داشته باشه، در این صورت ممکنه سیستم به هم بریزه.

کی چنین چیزی گفته؟


بهتره به محض دریافت آرایه، این آرایه سراسری رو توی یه آرایه دیگه قرار بدیم تا توی کار سرور اخلال ایجاد نشه.
چرا اخلال ایجاد بشه؟


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



برای کار با آرایه هایPOST , GET در MVC معمولا میان یه کلاس میسازن برای ایمن کردن این آرایه ها. مثلا در فریم ورک Codeigniter یه کلاس هست به نام Input که POST , GET , COOKIE و ... رو برای استفاده ایمن میکنه . ولی چیزی که شما میگید رو تا حالا ندیدم

binyaft
پنج شنبه 24 شهریور 1390, 10:09 صبح
شما بعضی وقتها متوجه منظور نمی شید.

مطلبی که می گید درسته، اما من نمی خوام روی آرایه پست کاری انجام بدم. می خوام آرایه پست فقط برای کاری که طراحی شده (ارسال فرم) بکار بره و برای انجام عملیات روی فیلدهای فرم، می خوام از یه آرایه دیگه استفاده کنم.

برای این کار چه راه حلی هست؟

چه کاریه آخه ؟

idocsidocs
پنج شنبه 24 شهریور 1390, 10:33 صبح
چه کاریه آخه ؟

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

حالا اگه بخوایم روی مقادیر این دوتا آرایه عملیاتی مثل ضرب یا تقسیم انجام بدیم، بهتره که مقادیر این آرایه روی توی یه آرایه دیگه قرار بدیم و روی آرایه جدید کار کنیم.

منطقی بنظر نمی یاد که برای انجام عملیات ضرب یا تقسیم، آرایه پست رو به حلقه foreach بفرستیم، بهتره که از یه آرایه دیگه استفاده بشه. نظرتون چیه؟


برای کار با آرایه هایPOST , GET در MVC معمولا میان یه کلاس میسازن برای ایمن کردن این آرایه ها. مثلا در فریم ورک Codeigniter یه کلاس هست به نام Input که POST , GET , COOKIE و ... رو برای استفاده ایمن میکنه . ولی چیزی که شما میگید رو تا حالا ندیدم
منظور من کلی تر بود و فقط مربوط به ایجاد امنیت نمی شه.

binyaft
پنج شنبه 24 شهریور 1390, 12:45 عصر
این دوتا آرایه برای انتقال مقادیر بین صفحات بکار می رن، وقتی مقادیر مورد نظرمون رو انتقال دادید (مثلا یه فرم رو ارسال کردیم) به صورت منطقی دیگه کار این دوتا آرایه به پایان رسیده.

حالا اگه بخوایم روی مقادیر این دوتا آرایه عملیاتی مثل ضرب یا تقسیم انجام بدیم، بهتره که مقادیر این آرایه روی توی یه آرایه دیگه قرار بدیم و روی آرایه جدید کار کنیم.

منطقی بنظر نمی یاد که برای انجام عملیات ضرب یا تقسیم، آرایه پست رو به حلقه foreach بفرستیم، بهتره که از یه آرایه دیگه استفاده بشه. نظرتون چیه؟


منظور من کلی تر بود و فقط مربوط به ایجاد امنیت نمی شه.

خب ما دو تا روش ارسال داریم POST,GET
تو PHP ام که برای هر کدوم یه ارایه هست !
برای انجام عملیات هم که مقدار مورد نظر از ارایه GET,POST رو میریزی تو یه متغیر و ...
چه خوبی ای داره اینی که شما میگی ؟

idocsidocs
پنج شنبه 24 شهریور 1390, 13:26 عصر
خب ما دو تا روش ارسال داریم POST,GET
تو PHP ام که برای هر کدوم یه ارایه هست !
برای انجام عملیات هم که مقدار مورد نظر از ارایه GET,POST رو میریزی تو یه متغیر و ...
چه خوبی ای داره اینی که شما میگی ؟ آرایه پست و گت فقط برای انتقال اطلاعات هستن، نباید برای کارهای دیگه از این آرایه ها استفاده کرد.

ایا همشه برای انجام عملیات روی مقادیر فرمها، از همین ارایه پست استفاده می کنید؟ مثلا اگه بخواید مقادیر فرم رو با استفاده از حلقه foreach در عدد 10 ضرب کنید به چه شکل این کار رو می کنید؟

نظر سایر دوستان چیه؟

binyaft
پنج شنبه 24 شهریور 1390, 13:57 عصر
آرایه پست و گت فقط برای انتقال اطلاعات هستن، نباید برای کارهای دیگه از این آرایه ها استفاده کرد.
چه کارهایی مثلا ؟
من تو پروژه هام همه Query String ها رو اول از یک فیلتر رد میکنم .
در مورد ضرب کردن عدد با array_map میشه دیگه .

array_map('func_name',$_POST['form_data']);

idocsidocs
پنج شنبه 24 شهریور 1390, 15:20 عصر
چه کارهایی مثلا ؟
من تو پروژه هام همه Query String ها رو اول از یک فیلتر رد میکنم .
در مورد ضرب کردن عدد با array_map میشه دیگه .
توی کد زیر شما اومدید و ارایه پست رو گذاشتید توی array_map

array_map('func_name',$_POST['form_data']);
بجای این کار بهتره که از کد زیر استفاده کرد.


$post=$_POST;
array_map('func_name',$post['form_data']);
اینجوری همون نتیجه حاصل می شه اما ارایه پست هم آزاد می مونه.
اما مشکل اینه که نمی شه توی بقیه صفحات به ارایه $post دسترسی داشت.

binyaft
پنج شنبه 24 شهریور 1390, 16:12 عصر
خب منم که اول جیغ زدم بریزید تو یه متغیر دیگه .
بعدشممممم ، شما یه فایل تنظیمات داری که تو کل پروژه اینکلود میشه دیگه ؟ تو اون این کارها رو بکن .

پ.ن :
:(((((((((((((

idocsidocs
پنج شنبه 24 شهریور 1390, 17:10 عصر
خب منم که اول جیغ زدم بریزید تو یه متغیر دیگه .
بعدشممممم ، شما یه فایل تنظیمات داری که تو کل پروژه اینکلود میشه دیگه ؟ تو اون این کارها رو بکن .

پ.ن :
:(((((((((((((
منظورتون اینه که کد زیر رو توی این فایل قرار بدم؟


$post=$_POST;
اینطوری که نمی شه، چون سراسری نیست و توی بقیه کلاسها شناسایی نمی شه.

چیکار باید کرد؟

binyaft
پنج شنبه 24 شهریور 1390, 17:27 عصر
ای آقا !
global کنید تو فانکشن ها
یا تو __construct کلاس اصلی تعریفش کنید .

idocsidocs
پنج شنبه 24 شهریور 1390, 19:44 عصر
ای آقا !
global کنید تو فانکشن ها
یا تو __construct کلاس اصلی تعریفش کنید .
یعنی توی همه توابع باید این ارایه روی گلوبال کنم؟

binyaft
جمعه 25 شهریور 1390, 11:55 صبح
اگر تو construct اجرا نکنی و نریزیش تو یه آبجکت ، راه دیگه ای به نظرم نمیرسه.

idocsidocs
جمعه 25 شهریور 1390, 12:11 عصر
اگر تو construct اجرا نکنی و نریزیش تو یه آبجکت ، راه دیگه ای به نظرم نمیرسه.

توی سازنده نمی شه از کلاسهای دیگه یه شی ساخت، امکانش هست یه کد کامل قرار بدید تا ببینم چطور می شه این کارو کرد؟

binyaft
جمعه 25 شهریور 1390, 12:25 عصر
یک کلاس اصلی داری دیگه ؟



Class Core{

function __Construct(){

$this->_POST=$this->Clean_QS($_POST);

}


}