تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ Hassan
سوال در مورد BASE_PATH
محسن موحد حل شده توسط محسن موحد

با سلام -- میخواستم بدونم چرا برای BASE_PATH  همانند BASE_URL  از همون آدرس استفاده نشد (اینجا روی ویندوز هست - روی هاست آدرس به چه صورت استفاده میشه ؟ )-- و از آدرسی که توی ویندوز هست استفاده شده ؟

 با تشکر

با سلام

اینکه فایل‌های php ما از طریق مرورگر قابل دسترسی باشند یک مشکل امنیتی بزرگه که می‌تونه به راحتی کدهای مارو لو بده به خاطر همینه که ما از URL برای فراخوانی فایل هامون استفاده نکردیم، البته اینو هم بگم که بازهم فایل‌ها قابل دسترس خواهند بود با ترفندهایی که یکیش رو استاد آوند گفتند میشه جلوشو گرفت.

برای اینکه روی هاست فایل‌ها را مسیردهی کنیم باید root پروژه خودمونو تو هاست پیدا کنیم، برای مثال در سی پنل public_html/your_domain است که پوشه public_html و درون آن نام دامنه ما که پروژه ما درون آن قرار گرفته است ریشه پروژه ما است.

امیر صالحی ۰۶ اردیبهشت ۱۳۹۹، ۱۸:۵۹

سلام.

BASE_URL همونطور که مشخصه یک url با پروتوکول http هست و مربوط به مرورگر کاربر هست که آدرسی رو بخونه. مثه فایل‌های js و css که مرورگر کاربر باید اون آدرسو بخونه تا style و js روی مرورگر کاربر لود شن.

ولی داخل فایل‌های PHP برای اینکلود کردن فایل‌های دیگر، از مسیر دقیق یا نسبی درون هارد سرور استفاده میشه!

کاربردشون با هم متفاوته. یکی مربوط به سمت client هست و دیگری مربوط به سمت server

 

برای بدست اوردن path ثابت‌های جادویی __DIR__ و __FILE__ وجود داره.

* ثابت __DIR__ مسیر دایرکتوری فایلی که داخلش هستیو برمیگردونه.

* ثابت __FILE__ مسیر دایرکتوری  + نام فایلی که داخلش هستیو برمیگردونه.

 

ثابت __DIR__ معادل دستور زیر هست:

dirname(__FILE__);

 

برای نمایش خروجی و تفاوتشون، حالا همین دستوراتو داخل پروژه ی ۷todo در مسیر ۷todo/bootstrap/constants.php چاپ میکنم:

<?php
echo __DIR__; 
//C:\wamp64\www\7todo\bootstrap
echo "<br/>";
echo dirname(__FILE__);
// C:\wamp64\www\7todo\bootstrap
echo "<br/>";
echo __FILE__;
// C:\wamp64\www\7todo\bootstrap\constants.php
echo "<br/>";

خب با توجه به __DIR__ که به دایرکتوری bootstrap اشاره میکنه، اگر یک دایرکتوری به عقب برگردیم به ROOT پروژه میرسیم. این دو تا دستورو با هم مقایسه کنید:

<?php
echo dirname(__FILE__);
// C:\wamp64\www\7todo\bootstrap
echo "<br/>";
echo dirname(dirname(__FILE__));
// C:\wamp64\www\7todo

 

بنابراین دراین پروژه BASE_PATH به این شکل در میاد:

define('BASE_PATH', dirname(dirname(__FILE__)) . '/');

 

بهترین پاسخ
محسن موحد ۰۶ اردیبهشت ۱۳۹۹، ۲۰:۱۴