آیا توی سرور www به $_SERVER[HTTP_HOST] اضافه می شه؟

phpweb

Active Member
من روی لوکال که تست می کنم متغیرهای زیر www اضافه نمی کنن، آیا این متغیرها توی سرور www رو اضافه می کنن یا نه؟

PHP:
$_SERVER[HTTP_HOST]

$_SERVER[SERVER_NAME]

این دو متغیر بغیر از تفاوت در اضافه کردن http:// به آدرس سایت چه تفاوت دیگه ای با هم دارن؟
 

Domanjiri

Well-Known Member
سلام

HTTP_HOST مقدارش از HEADER درخواستی که از طرف کاربر میاد، مشخص میشه ولی SERVER_NAME مقداری هست که توی کانفیگ سرور تعریف شده.

اینکه کدوم یکیشون اولش همیشه www هست، هیچ کلیتی نداره و نمیشه گفت که این اینطور هست (یا نیست!)

پیشنهاد میکنم که از SERVER_NAME استفاده کنید، چون مواردی که تنظیمات سرور انجام نشده و .. خیلی محدود و نادر هست.

اگر هم می خواین که www همیشه باشه(یا برعکس) از HTTP_HOST + مقداری کدنویسی توی htaccess استفاده کنید یا اینکه درخواست بدین توی سرور، SERVER_NAME رو مطابق میل شما تغییر بدن (همون اولی بهتره!)

موفق باشید
 
آخرین ویرایش:

phpweb

Active Member
سلام

http_host مقدارش از header درخواستی که از طرف کاربر میاد، مشخص میشه ولی server_name مقداری هست که توی کانفیگ سرور تعریف شده.

اینکه کدوم یکیشون اولش همیشه www هست، هیچ کلیتی نداره و نمیشه گفت که این اینطور هست (یا نیست!)

پیشنهاد میکنم که از server_name استفاده کنید، چون مواردی که تنظیمات سرور انجام نشده و .. خیلی محدود و نادر هست.

اگر هم می خواین که www همیشه باشه(یا برعکس) از http_host + مقداری کدنویسی توی htaccess استفاده کنید یا اینکه درخواست بدین توی سرور، server_name رو مطابق میل شما تغییر بدن (همون اولی بهتره!)

موفق باشید
من بعضی از تنظیمات سایتم بر اساس این دوتا متغیر هستن. البته بیشتر از server_name استفاده می کنم. بنظرتون بهتر نیست که http_hostرو حذف کنم و بر اساس server_name کار کنم؟

نمی شه که به هدرهای کاربر اعتماد کردبه راحتی می شه تغییرشون داد.

البته الان خودم www به server_name اضافه کردم ولی برای http_host مطمئن نیستم که باید چیکار کنم.
 
آخرین ویرایش:

Domanjiri

Well-Known Member
گفتم خدمتتون که بهتره از SERVER_NAME استفاده کنید، البته به این راحتی هم که شما می گین کاربر نمی تونه header رو تغییر بده و همچنان به سایت شما برسه!!

همون از SERVER_NAME استفاده کنید.

پیروز باشید
 

phpweb

Active Member
گفتم خدمتتون که بهتره از server_name استفاده کنید، البته به این راحتی هم که شما می گین کاربر نمی تونه header رو تغییر بده و همچنان به سایت شما برسه!!

همون از server_name استفاده کنید.

پیروز باشید
با استفاده از آی پی سرور به سایت دسترسی پیدا می کنن، کاربر می تونه آی پی رو نگه داره و http_host رو عوض کنه.این مطلب درسته؟
 

phpweb

Active Member
خب اگه با آی پی وارد سایت بشه، مقدار server[http_host]l_$ برابر همون آی پی هست، که هیچ ایرادی هم نداره و خطری هم کسی و تهدید نمی کنه(!)
http://www.w3.org/protocols/rfc2616/rfc2616-sec14.html#sec14.23

موفق باشید
منظورم این نبود.
منظورم این بود که کاربر می تونه با استفاده از برنامه های موجود با استفاده از آی پی وارد سایت من بشه ولی مقدار http_host رو تغییر بده.

با توجه به اینکه من برای ارسال ایمیل توی برنامه هام از http_host استفاده می کنم، ممکنه آدرس فرستنده ایمیهایی که ارسال می کنم تغییر کنه. بنظرتون چکارباید کرد؟
 

Domanjiri

Well-Known Member
والا من در زمینه ی امنیت، اطلاعات عمیقی ندارم(!). ولی بعید میدونم کاری که شما میگین ممکن باشه..

یه سرچی بکنید توی روش های حمله به وبسایت ها، اگه چیزی پیدا کردین ، ممنون میشم ما رو هم مطلع و آگاه کنید.

موفق باشید
 

Cyletech

Member
متغیر SERVER_NAME یا HTTP_HOST هر دو اگر در لوکال باشن چون www نداره و مربوط به وب نمیشه پس www اول خروجیشو وجود نداره ولی در سرور هر دو www دارن. احتمالاً فراموش کردید. www مختص صفحات وب هست فقط ! لوکال (آفلاین) مربوط به سیستم عامل میشه.
 

phpweb

Active Member
متغیر SERVER_NAME یا HTTP_HOST هر دو اگر در لوکال باشن چون www نداره و مربوط به وب نمیشه پس www اول خروجیشو وجود نداره ولی در سرور هر دو www دارن. احتمالاً فراموش کردید. www مختص صفحات وب هست فقط ! لوکال (آفلاین) مربوط به سیستم عامل میشه.
خب خیلی از سایتها هم با www باز می شن و هم بدون www، چرا این اتفاق میافته؟
 

Cyletech

Member
خب خیلی از سایتها هم با www باز می شن و هم بدون www، چرا این اتفاق میافته؟
چون وارد کردن www الزامی نیست. مثل این می مونه که شما هم میتونی بنویسی false و هم FALSE . ولی کدوم صحیح تره؟ قاعده برنامه نویسی داریم که میگن FALSE درسته چون یک کانستنت هست.
 

phpweb

Active Member
چون وارد کردن www الزامی نیست. مثل این می مونه که شما هم میتونی بنویسی false و هم FALSE . ولی کدوم صحیح تره؟ قاعده برنامه نویسی داریم که میگن FALSE درسته چون یک کانستنت هست.
متغیر SERVER_NAME یا HTTP_HOST هر دو اگر در لوکال باشن چون www نداره و مربوط به وب نمیشه پس www اول خروجیشو وجود نداره ولی در سرور هر دو www دارن. احتمالاً فراموش کردید. www مختص صفحات وب هست فقط ! لوکال (آفلاین) مربوط به سیستم عامل میشه.
توی مطلب بالا گفتید که توی سرور www هست ولی الان می گید دلخواهیه.

آخرش کدوم یکی درسته؟
 

Cyletech

Member
توی مطلب بالا گفتید که توی سرور www هست ولی الان می گید دلخواهیه.

آخرش کدوم یکی درسته؟
اون دو تا ربطی به هم ندارن. شما فرمودید روی لوکال و سرور آیا www به ما میده متغیر SERVER_NAME و HTTP_HOST یا نه. من گفتم رو لوکال نه ولی رو سرور آره. به این دلیل که سرور تحت وب هست ولی لوکال تحت سیستم عامل.
بعد فرمودید چرا بعضی از سایت ها با www باز میشن و بعضی ها هم نه و بعضی ها هم با هردو. خب این رو میشه با apache محدود کرد. چه با www و چه بدون www در آدرس بار بخوایم آدرس یک وبسایت رو وارد کنیم ، باز هر دو متغیر ذکر شده به ما با www نشان میدن. یه نگاهی هم به توصیه های گوگل بندازید. مورد با www و بدون www یکی از مسائل مهم مربوط به بهینه سازی میشه.
یه امتحان کوچیک هم روی لوکال کنید. شما localhost رو با www باز کنید. میبینید که خطا دریافت می کنید چون همچین دامنه ای وجود نداره. پس وارد کردن www برای وبسایت ها هست نه لوکال هاست.
در کل سیستم کار این دو متغیر اینطوریه که قبل از نمایش خروجی به بررسی می کنن که هدری که ارسال میشه از طرف سرور هست یا نه هاست مجازی یا همون لوکال هاست.
 
آخرین ویرایش:

phpweb

Active Member
اون دو تا ربطی به هم ندارن. شما فرمودید روی لوکال و سرور آیا www به ما میده متغیر server_name و http_host یا نه. من گفتم رو لوکال نه ولی رو سرور آره. به این دلیل که سرور تحت وب هست ولی لوکال تحت سیستم عامل.
بعد فرمودید چرا بعضی از سایت ها با www باز میشن و بعضی ها هم نه و بعضی ها هم با هردو. خب این رو میشه با apache محدود کرد. چه با www و چه بدون www در آدرس بار بخوایم آدرس یک وبسایت رو وارد کنیم ، باز هر دو متغیر ذکر شده به ما با www نشان میدن. یه نگاهی هم به توصیه های گوگل بندازید. مورد با www و بدون www یکی از مسائل مهم مربوط به بهینه سازی میشه.
یه امتحان کوچیک هم روی لوکال کنید. شما localhost رو با www باز کنید. میبینید که خطا دریافت می کنید چون همچین دامنه ای وجود نداره. پس وارد کردن www برای وبسایت ها هست نه لوکال هاست.
در کل سیستم کار این دو متغیر اینطوریه که قبل از نمایش خروجی به بررسی می کنن که هدری که ارسال میشه از طرف سرور هست یا نه هاست مجازی یا همون لوکال هاست.
شما در مورد این مطلب اطلاعی ندارید؟
کاربر می تونه با استفاده از برنامه های موجود با استفاده از آی پی وارد سایت من بشه ولی مقدار http_host رو تغییر بده.

با توجه به اینکه من برای ارسال ایمیل توی برنامه هام از http_host استفاده می کنم، ممکنه آدرس فرستنده ایمیهایی که ارسال می کنم تغییر کنه. بنظرتون چکارباید کرد؟
 

Cyletech

Member
شما در مورد این مطلب اطلاعی ندارید؟
سرور مقادیر http_host و server_name رو ارسال می کنه. فکر نکنم کاربر حتی خود شما که دسترسی به پنل مدیریت دارید بتونید همچین کاری کنید. اما مطمئن نیستم در مورد اینی که گفتم. بنظر خودم که اینطوریه.
 

phpweb

Active Member
سرور مقادیر http_host و server_name رو ارسال می کنه. فکر نکنم کاربر حتی خود شما که دسترسی به پنل مدیریت دارید بتونید همچین کاری کنید. اما مطمئن نیستم در مورد اینی که گفتم. بنظر خودم که اینطوریه.
به گفته دوست عزیزمون Domanjiri توجه کنید:
HTTP_HOST مقدارش از HEADER درخواستی که از طرف کاربر میاد، مشخص میشه ولی SERVER_NAME مقداری هست که توی کانفیگ سرور تعریف شده.

کدوم مطلب در مورد http_host درسته، مطلب شما یا مطلب ایشون؟
 

Domanjiri

Well-Known Member
درود بر شما

به لینک زیر مراجعه کنید:

HTTP_SERVER_VARS

من توضیحاتی که لازمه رو اینجا قرار دادم:

در مورد SERVER_NAME
The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host
.
و در مورد HTTP_HOST
Contents of the Host: header from the current request, if there is one.​

موفق باشین
 

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

بالا