مشکل ارسال ایمیل تنها با فعال سازی register_globals

MJ Rayaneh

Well-Known Member
با عرض سلام و آرزوی قبولی طاعات و عبادات!

از دوستان PHP کار یه سوال عجیب (!) دارم.
من از یک اسکریپت ارسال محتویات فرم به ایمیل در هاست قبلیم بدون مشکل استفاده میکردم.
ولی وقتی در هاست جدیدم آپلودش کردم با یه مشکل مواجه شدم و مشکل اینه که این اسکریپت ایمیل رو خالی میفرسته. یعنی فقط متن پیشفرض اسکریپت رو میفرسته و متغیرهایی که توسط کاربر در فرم وارد میشه رو ارسال نمیکنه.
با توجه به یه سری مسائل حدس زدم که احتمالا مشکل از خاموش بودن register_globals باشه و وقتی با ویرایش فایل httaccess فعالش کردم دیدم مشکل رفع شد و حدسم درست بود!
برای فعال سای هم از این کد استفاده کردم:
php_value safe_mode on
php_flag display_errors off
php_flag register_globals on

حالا سوالم اینه که
1) آیا راهی هست که با غیر فعال بودن register_globals ، اسکریپت کار خودش رو درست انجام بده؟
2) اگر register_globals فعال باشه چه مشکلات امنیتی بوجود میاد؟

** ضمنا وقتی register_globals خاموش باشه، متغیرهایی که در نوار آدرس درج شده، توسط دستور echo در صفحه نمایش داده نمیشه! مثلا اگر آدرس صفحه www.site.com/index.php?name=REZA باشه و در صفحه هم داشته باشیم <?php echo ("$name") ?> ، دستور echo کار نمیکنه و حتما باید register_globals فعال باشه تا این دستور کار کنه.

منتظر راهنمایی دوستان هستم.
با تشکر فراوان.
 
آخرین ویرایش:

ziXet

مدیر انجمن PHP/MYSQL
با عرض سلام و آرزوی قبولی طاعات و عبادات!

از دوستان PHP کار یه سوال عجیب (!) دارم.
من از یک اسکریپت ارسال محتویات فرم به ایمیل در هاست قبلیم بدون مشکل استفاده میکردم.
ولی وقتی در هاست جدیدم آپلودش کردم با یه مشکل مواجه شدم و مشکل اینه که این اسکریپت ایمیل رو خالی میفرسته. یعنی فقط متن پیشفرض اسکریپت رو میفرسته و متغیرهایی که توسط کاربر در فرم وارد میشه رو ارسال نمیکنه.
با توجه به یه سری مسائل حدس زدم که احتمالا مشکل از خاموش بودن register_globals باشه و وقتی با ویرایش فایل httaccess فعالش کردم دیدم مشکل رفع شد و حدسم درست بود!
برای فعال سای هم از این کد استفاده کردم:
php_value safe_mode on
php_flag display_errors off
php_flag register_globals on

حالا سوالم اینه که
1) آیا راهی هست که با غیر فعال بودن register_globals ، اسکریپت کار خودش رو درست انجام بده؟
2) اگر register_globals فعال باشه چه مشکلات امنیتی بوجود میاد؟

** ضمنا وقتی register_globals خاموش باشه، متغیرهایی که در نوار آدرس درج شده، توسط دستور echo در صفحه نمایش داده نمیشه! مثلا اگر آدرس صفحه www.site.com/index.php?name=REZA باشه و در صفحه هم داشته باشیم <?php echo ("$name") ?> ، دستور echo کار نمیکنه و حتما باید register_globals فعال باشه تا این دستور کار کنه.

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

این سوال خیلی هم عجیب نیست!

وقتی register_global روشن باشه تمامی متغیر هایی که از طریق پست یا گت ارسال میشن با استفاده از نام خود متغیر تو صفحه بعد قابل استفاده است مثل این : http://localhost/index.php?name=ali خب حالا تو صفحه ایندکس متغیر name$ به وجود میاد که مقدارش ali هست ولی اگه خاموش باشه این متغیر به این شکل به وجود نمیاد بلکه برای دسترسی به اون باید از GET['name]_$ استفاده کنی.

درباره امنیت هم من خیلی تجربه ندارم ولی فکر کنم چون اگه روشن باشه متغر به شکل معمولی تو برنامه به وجود میاد برنامه نوشتنش سخت میشه چون از اون نام ها دیگه نمیشه استفاده کرد یا حداقل در رابطه با اون متغیر ها احتیاط رو خیلی باید رعایت کرد!
و شاید هم بشه یجورایی از طریق url تو برنامه نفوز کرد.

موفق باشید
 

MJ Rayaneh

Well-Known Member
ممنونم ولی من با پی اچ پی زیاد آشنا نیستم و بخاطر این یه خرده برام عجیب بوده!
من یه سایت رو بطور دستی نوشتم و بخاطر include کردن منوها و ... از پی اچ پی استفاده کردم و همچنین موتور ارسال محتویات فرم به ایمیل به زبان پی اچ پی هست.
اگر رجیستر_گلوبالز رو فعال کنم، با این شراط میتونه مشکل امنیتی بوجود بیاره؟
همچنین من جواب سوال اصلی رو نگرفتم: آیا راهی هست که با خاموش بودن رجیستر_گلوبالز، موتور ارسال اطلاعات محتویات فرم رو به درستی به ایمیل ارسال کنه؟
 

ziXet

مدیر انجمن PHP/MYSQL
ممنونم ولی من با پی اچ پی زیاد آشنا نیستم و بخاطر این یه خرده برام عجیب بوده!
من یه سایت رو بطور دستی نوشتم و بخاطر include کردن منوها و ... از پی اچ پی استفاده کردم و همچنین موتور ارسال محتویات فرم به ایمیل به زبان پی اچ پی هست.
اگر رجیستر_گلوبالز رو فعال کنم، با این شراط میتونه مشکل امنیتی بوجود بیاره؟
همچنین من جواب سوال اصلی رو نگرفتم: آیا راهی هست که با خاموش بودن رجیستر_گلوبالز، موتور ارسال اطلاعات محتویات فرم رو به درستی به ایمیل ارسال کنه؟
معمولا سرورها الان برای حفظ امنیت خاموش میکنن .

جواب سوال اصلیتون رو دادم!
اگه خاموش بود برای متیغر ها باید از $_get یا $_post استفاده کنید
 

جدیدترین ارسال ها

بالا