PDA

View Full Version : سوال: نحوه فراخوانی فایل config در پروژه



molana_rumy
شنبه 28 تیر 1393, 21:50 عصر
سلام خدمت دوستان

من یه فایل config.php دارم که اطلاعات دیتابیس رو به صورت $var="value" در اون قرار دادم و همچنین یک فایل function.php که توابع اتصال به دیتابیس و ... در داخلش هست و این متغیر ها رو بصورت $link=mysql_connect($host,$user,$pass) فراخوانی میکنه و در آخر فایل index.php که فایل های config و function در اون include شده.

مشکل اینه که چون config رو فقط در index فراخوانی کردم، وقتی در توابع function متغیرهای موجود در فایل config رو استفاده میکنم با خطا مواجه میشم.

با include کردن config در تک تک توابع فایل function ، مشکل حل میشه ولی اولا منطقی نیست و ثانیا من میخوام فقط در index فایل ها رو include کنم.

البته این شکل تعریف متغیر و فراخوانی اگه مشکلی در امنیت داره هم ممنون میشم ذکر بشه که بهترش چیه.

با تشکر

prans.info
شنبه 28 تیر 1393, 21:58 عصر
از function_exists استفاده کنید تا از تکرار مجدد جلوگیری بشه

if (!function_exists('esme_tabe')) { include ('config.php');}

مهرداد سیف زاده
شنبه 28 تیر 1393, 22:22 عصر
شما نباید فایل کانفیگ رو در سراسر پروژه و در تمام فایل ها فراخوانی کنید بلکه باید در جاهای اصلی مثل دیتابیس و یا کلاسهایی که نیاز به کانفیگ استاتیک دارن فراخوانی بشه.
بعد هم برای ساخت فایل کانفیگ بصورت زیر عمل کنید
1- فایل config.php


<?php


//database connect
define('DB_NAME', 'mydb');
define('DB_HOST','localhost');
define('DB_USER', 'root');
define('DB_PASS', 'password');


// global site url
define('SITE_URL', 'http://mysite.com/');




2- حالا در فایل database.php شما فایل کانفیگ رو صدا میزنید و بهش مقدار میدید


<?php
// read config from file
include 'config.php';


// Create connection
$con = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);


// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: ".mysqli_connect_error();
}

php_programmer021
یک شنبه 29 تیر 1393, 10:00 صبح
سلام
از نظر امنیتی بهتر است از روشی که آقای مهرداد66 گفتند استفاده کنید یعنی از define .
برای استفاده از اون هم می تونید از
require_once 'config.php'; استفاده کنید.
حالا اینکه هر جایی این رو استفاده کنی مشکل امنیتی بوجود میاد یا نه فکر کنم امکانش باشه.
نیاز به بررسی بیشتر داره.

molana_rumy
سه شنبه 31 تیر 1393, 15:39 عصر
ممنون دوستان تا حد زیادی متوجه موضوع شدم و توی اتصال به دیتابیس مشکل حل شد. فقط همین مشکل رو با جداول دارم.

فرض کنیم در فایل function توابعی داشته باشیم که بارها جداول مختلف این دیتابیس (MYSQL) رو SELECT میکنن و نام جداول رو هم مثل نام دیتابیس و ... در فایل config تعیین میکنیم (تا در صورت نیاز به تغییر نام جداول ، یکبار نام رو تغییر بدیم و همه توابع با جداول جدید کار کنن).

در این حالت چطور باید نام جداول رو در فایل config قرار داد و در فایل function فراخوانی کرد؟ (غیر از اینکه در هر تابع فایل کانفیگ رو include کنیم)

با تشکر

molana_rumy
دوشنبه 06 مرداد 1393, 09:14 صبح
دوستان کسی نیست این مورد آخر رو یه توضیحی بده؟