الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في تابع بعيد المسار الكامل للموقع.

بدأه mazenwrq في 10 يوليو 2013 · 2 رد · 377 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم
لقد قمت ابنشاء تابع بداخل كلاس عمله ارجاع المسار الكامل للموقع في حال كان الموقع على المخدم المحلي (في حالة التطوير) او على الاستضافة (عند نشر الموقع) وهاذا هو الكود:
 

public function baseURL() {
	$url = $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);
	$url = rtrim($url, '/\\');
	return $url;
}

وقمت باستعماله في عدة مواقع كالتابع التالي لحذف لكنه لا يعمل الملفات:

public function deleteFile($path, $file){
	$theFile = $this->baseURL().'/'.$path.'/'.$file;
	if(is_file($theFile)){
		echo 'yes';
	}
}

لكن عند عذفه يعمل الكود بشكل صحيح كتالي:

public function deleteFile($path, $file){
	echo $theFile = $path.'/'.$file;
	if(is_file($theFile)){
		echo 'yes';
	}
		
}

فما السبب.

#2

السلام عليكم

 

- السبب هو أن مسار الملف على الخادم يختلف عن رابط الملف (الرابط الذي يظهر في المتصفح) , يمكنك مراجعة موضوع الثوابت السحرية فسيفيدك في هذه النقطة .

 

لاحظ الكود التالي يقوم بإنشاء ملف الـ config.php تلقائياً وبه ثابت به رابط التطبيق وهو SCRIPTURL وثابت به مسار التطبيق SCRIPTPATH كالتالي:

<?php
$url = 'http://localhost/';
if (isset($_SERVER['HTTP_HOST']))
{
    if(isset($_SERVER['HTTPS']) and strtolower($_SERVER['HTTPS']) == 'off')
    {
        $url = 'http://';
    }
    else
    {
        $url = 'https://';
    }
    $url .= $_SERVER['HTTP_HOST'];
    $url .= str_replace(basename($_SERVER['SCRIPT_NAME']),'',$_SERVER['SCRIPT_NAME']);
} 
$path = __DIR__ .'\\\\'; 
$data =  
"<?php
const SCRIPTURL = '$url';
const SCRIPTPATH = '$path';
?>
"; 
file_put_contents('config.php',$data); 
?>

- يتم تنفيذ هذا الملف في المجلد الأساسي للتطبيق الخاص بك ومن ثم تضمين ملف config.php الناتج لإستخدامه .

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#3
ahmedsaoud31 كتب:

السلام عليكم

 

- السبب هو أن مسار الملف على الخادم يختلف عن رابط الملف (الرابط الذي يظهر في المتصفح) , يمكنك مراجعة موضوع الثوابت السحرية فسيفيدك في هذه النقطة .

 

لاحظ الكود التالي يقوم بإنشاء ملف الـ config.php تلقائياً وبه ثابت به رابط التطبيق وهو SCRIPTURL وثابت به مسار التطبيق SCRIPTPATH كالتالي:

<?php
$url = 'http://localhost/';
if (isset($_SERVER['HTTP_HOST']))
{
    if(isset($_SERVER['HTTPS']) and strtolower($_SERVER['HTTPS']) == 'off')
    {
        $url = 'http://';
    }
    else
    {
        $url = 'https://';
    }
    $url .= $_SERVER['HTTP_HOST'];
    $url .= str_replace(basename($_SERVER['SCRIPT_NAME']),'',$_SERVER['SCRIPT_NAME']);
} 
$path = __DIR__ .'\\\\'; 
$data =  
"<?php
const SCRIPTURL = '$url';
const SCRIPTPATH = '$path';
?>
"; 
file_put_contents('config.php',$data); 
?>

- يتم تنفيذ هذا الملف في المجلد الأساسي للتطبيق الخاص بك ومن ثم تضمين ملف config.php الناتج لإستخدامه .

شكراً لردك لكن المشكلة انني لدي ملف config , لذالك ساعتمد على الثوابت السحرية على ما اعتقد. هل من طرق اخري؟

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…