PDA

View Full Version : سوال: ادرس دهی به اطلاعات خوانده شده از دیتا بیس



arashaliz
یک شنبه 23 بهمن 1390, 14:18 عصر
با سلام
وقتی اطلاعات رواز دیتابیس می خونیم اگه از طریق mode rewrite به صورت چند فولدر تو درتو بخونبم ادرس عکسها بهم می خوره. در واقع می خواهم بدونم که چه طور میشود اطلاعات را از داخل دیتا بیس فراخوانی کرد وادرس فیزیکی عکسها بهم نخوره مثل ورد پرس
امیدوارم منظورمو رسونده باشم
پیشاپیش ممنون

MMSHFE
یک شنبه 23 بهمن 1390, 16:34 عصر
توی صفحه index.php این کد رو بنویسید:


define('URL', 'http://www.mysite.com');
define('ROOT', dirname(__FILE__));

و به جای mysite.com آدرس سایت خودتون رو بگذارین. حالا هرموقع توی کدها نیاز به آدرس فیزیکی داشتین (زمانی که کاربر نخواد آدرس واقعی رو ببینه)، از ثابت ROOT و استفاده کنید و برای نمایش به کاربر هم از ثابت URL برای اشاره به آدرس اصلی سایت استفاده کنید. مثال:


require_once ROOT.'/config.php';
echo '<img src="'.URL.'/logo.gif"/>';

نکته مهمی که وجود داره اینه که هیچ وقت توی آدرسهایی که قراره کاربر ببینه، از ROOT استفاده نکنید چون با یک View Source ساده، مسیر نگهداری فایلهای شما روی سرور لو میره و این موضوع، غنیمت بزرگی برای یک هکر باتجربه محسوب میشه.
موفق باشید.

arashaliz
یک شنبه 23 بهمن 1390, 18:37 عصر
خیلی خیلی ممنون این دقیقا همون چیزیه که می خواهم
در مورد فایل css کار کرد ولی فایل کانفیگ یا php هارو نمیشه include کرد
یک سوال ام داشتم این برام اظلاعات ثابت جواب میده ولی برای وقتی که اطلاعات رو از دیتا بیس می خونیم چه کاری میشه انجام داد ؟

plague
یک شنبه 23 بهمن 1390, 18:39 عصر
از تگ base هم میتونی استفاده کنی

http://www.w3schools.com/tags/tag_base.asp

arashaliz
یک شنبه 23 بهمن 1390, 18:55 عصر
ممنون اگر ممکنه یک مثال بزنید

MMSHFE
یک شنبه 23 بهمن 1390, 19:29 عصر
فایل index.php توی یک پوشه قرار داره یا مستقیماً توی root سایتتون هست؟ اگه توی یک پوشه هست، این کد رو بکار ببرین:


define('URL', 'http://www.mysite.com');
define('ROOT', dirname(dirname(__FILE__)));

کلاً هرچی بیشتر داخل پوشه باشه، به همون تعداد dirname بگذارین تا به پوشه والد اشاره بشه. موفق باشید.

arashaliz
یک شنبه 23 بهمن 1390, 19:36 عصر
فایلی که می خواهم توش کانفیگ رو اینکلودکنم توی فلدر های مختلف قرار داره فایل کانفیگ هم توی فلدر include/config.php قرار داره

MMSHFE
یک شنبه 23 بهمن 1390, 19:40 عصر
کدی که گفتم رو تست کنید ببینید درست میشه یا نه؟

arashaliz
یک شنبه 23 بهمن 1390, 19:47 عصر
دارم تست میکنم ولی نشد

MMSHFE
یک شنبه 23 بهمن 1390, 19:50 عصر
ببینید، فرض کنید اگه پوشه اصلی سایت شما توی www/mysite باشه و فایل index.php توی پوشه www/mysite/public قرار گرفته باشه و فایل config.php توی پوشه www/mysite/include باشه، این کد توی index.php باید کار کنه:


define('ROOT', dirname(dirname(__FILE__)));
require_once ROOT.'/include/config.php';

موفق باشید.

arashaliz
یک شنبه 23 بهمن 1390, 19:51 عصر
ششششششششششششششد ممنون واقعا

arashaliz
یک شنبه 23 بهمن 1390, 19:53 عصر
حالا یک مطلبی میمونه این هایی که مسیرشو عوض کردیم اطلاعات ثابت هستند در مورد اطلاعاتی که از طریق دیتابیس فرا خوانی میشه چه طور باید عمل کرد؟

MMSHFE
یک شنبه 23 بهمن 1390, 21:07 عصر
توی دیتابیس مسیر رو ذخیره نکنید. مثلاً برای تصاویر، فقط اسم فایل رو ذخیره کنید و یک قاعده کلی توی سایتتون بگذارین که همه تصاویر توی پوشه خاصی باشن. یا اینکه مسیر نسبی رو ذخیره کنید (نسبت به پوشه اصلی سایت) و بعد از خوندن، با استفاده از ROOT یا URL مسیر مطلق رو بدست بیارین مثلاً اگه توی دیتابیس داریم images/logo.gif/ موقع نمایش بصورت زیر نشون بدین:

echo <img src="'.URL.$row['image'].'"/>';
موفق باشید.

arashaliz
دوشنبه 24 بهمن 1390, 01:07 صبح
منظ.ورم این نبود که عکس توی دیتابیس ذخیره شه از طریق ckeditor اطلاعات رو توی دیتابیس ذخیره میکنم مثلا مسیر عکس رو ولی موقع فراخوانی نمیتونم که این قطعه کد رو اول هر عکس قرار بدم....
مشکل اصلیم اینجاست

MMSHFE
دوشنبه 24 بهمن 1390, 12:11 عصر
خوب میتونید بعد از خوندن، با preg_replace اونها رو جایگزین کنید. لطفاً یک نمونه از اونچه که توی دیتابیس ذخیره میشه بگذارین تا Pattern مناسب رو برای جایگزینی براتون بنویسم. موفق باشید.

arashaliz
دوشنبه 24 بهمن 1390, 13:13 عصر
این چیزیه که توی دیتا بیس ام ذخیره میشه

<h2 style="text-align: right;">
&nbsp;</h2>
<h2 style="text-align: right;">
<span style="color: rgb(178, 34, 34);">نمونه شماره 4</span></h2>
<p>
&nbsp;</p>
<p style="text-align: center;">
<img alt="" src="pic/4.jpg" style="width: 500px; height: 373px;" /></p>


بازهم ممنون

MMSHFE
دوشنبه 24 بهمن 1390, 18:06 عصر
این کد رو ببینید:


<?php
define('URL', 'http://www.mysite.com');
$str = <<<EOT
<h2 style="text-align: right;">
&nbsp;</h2>
<h2 style="text-align: right;">
<span style="color: rgb(178, 34, 34);">نمونه شماره 4</span></h2>
<p>
&nbsp;</p>
<p style="text-align: center;">
<img alt="" src="pic/4.jpg" style="width: 500px; height: 373px;" /></p>
EOT;
$str = preg_replace('#src=\"([^"]*)\"#i', 'src="'.URL.'/$1'.'"', $str);
echo nl2br(htmlentities($str));
/*
Output :
<h2 style="text-align: right;">
&nbsp;</h2>
<h2 style="text-align: right;">
<span style="color: rgb(178, 34, 34);">نمونه شماره 4</span></h2>
<p>
&nbsp;</p>
<p style="text-align: center;">
<img alt="" src="http://www.mysite.com/pic/4.jpg" style="width: 500px; height: 373px;" /></p>
*/
?>

arashaliz
دوشنبه 24 بهمن 1390, 20:17 عصر
مسیر روت روعوض کردم به این شکل درست شد
<?php
define('URL', 'http://www.xxx.com');
define('ROOT', '/home/xxx/public_html/');


require_once ROOT.'/x.php';
echo '<img src="'.URL.'/logo.gif"/>';


?>

ولی نمیدونم این کار درسته یا نه اصلا
و این که از نظر امنیت مشکلی نداره؟!

پیشاپیش ممنون از راهنماییتون

arashaliz
دوشنبه 24 بهمن 1390, 20:58 عصر
ساعت 6 صبح تقریباهمه چیز درست شده فقط این مونده
این رو include میکنه


define('ROOT', '/home/site/public_html/');
define('INCLUDE', '/home/site/public_html/include');
require_once ROOT.'/x.php';

ولی این پایینیارو include نمیکنه!!!


require_once INCLUDE.'/config.php';
require_once INCLUDE.'/func.php';

که واقعا نمیدونم چرا کارنمیکنه...

ممنون بابت راهنمایی های دوستانتون

MMSHFE
سه شنبه 25 بهمن 1390, 07:24 صبح
این کار میکنه؟


require_once ROOT.'/include/config.php';
require_once ROOT.'/include/func.php';

arashaliz
سه شنبه 25 بهمن 1390, 14:57 عصر
این جوری کار نمیکنه


define('INCLUDE', '/home/site/public_html/include');
require_once INCLUDE.'/config.php';
require_once INCLUDE.'/func.php';

ولی این جوری کار میکنه


define('ROOT', '/home/site/public_html/');
require_once ROOT.'/include/config.php';
require_once ROOT.'/include/func.php';

نمیشه برای هر فولدر base dir تعریف کرد ؟
کلا این روش روش امنیه؟

MMSHFE
سه شنبه 25 بهمن 1390, 16:00 عصر
در روش اول چه خطایی دریافت میکنید؟ ضمناً حدس میزنم مشکل بخاطر کلمه INCLUDE باشه. یک کلمه دیگه رو امتحان کنید. مثلاً INCFOLDER و... چون با دستور include تضاد داره. دقت کنید که PHP برای توابع خودش به حروف بزرگ و کوچک حساس نیست!
کلاً بهتره یک ریشه برای سایت تعریف کنید و بقیه رو برحسب اون تعریف کنید.

arashaliz
سه شنبه 25 بهمن 1390, 18:58 عصر
دقیقا همین کارو کردم و کاملا همونی شد که می خواستم ولی الان یک مشکل دیگه پیش امد
این که فرض کنید یک سری پوشه های تو در تو باmode rewrite ایجاد میکنیم به صورت داینامیک حالا اشکالی که پیش میاد اینه که اگه منو رو بایک فایل include کنیم مسیر لینک ها در هر پوشه عوض میشه راه کار این چیه که لینک ها در پوشه های مختلف درست باشند؟

site.com/xx
site.com/xx/yy
site.com/yy/tt/hh

MMSHFE
سه شنبه 25 بهمن 1390, 19:07 عصر
میشه دقیقتر توضیح بدین؟

arashaliz
چهارشنبه 26 بهمن 1390, 14:10 عصر
<div class="menu" >
<ul id="naven">
<li><a href="home.html">HOME</a></li>
<li><a href="about.html">ABOUT</a></li>
<li><a href="services.html">SERVICES</a></li>
<li><a href="blog.html">BLOG</a></li>
<li><a href="links.html">LINKS</a></li>
<li><a href="contact.html">CONTACT</a></li>
</ul>
</div>
این خروجی منو سایت منه لینک ها فقط داخل همون پوشه که فایل ها هستند کار میکنن مثلا site.com/about.html حالا اگر ما از داخل یک پوشه دیگه مثلا site.com/about/about.html روی این لینک کلبک کنیم نتیجه اررور 404 ولی توی پرتالهایی مثل wordpress رو هر لینکی کلیک کنیم همه چیز درسته در حالی که در پوه های مختلف قرار دارند

MMSHFE
چهارشنبه 26 بهمن 1390, 16:14 عصر
خوب دوست عزیز برای منوها هم لینکها رو بطور کامل بسازین:


<?php
if(!defined('URL')) {
define('URL', 'http://www.site.com');
}
?>
<div class="menu" >
<ul id="naven">
<li><a href="<?php echo URL; ?>/home.html">HOME</a></li>
<li><a href="<?php echo URL; ?>/about.html">ABOUT</a></li>
<li><a href="<?php echo URL; ?>/services.html">SERVICES</a></li>
<li><a href="<?php echo URL; ?>/blog.html">BLOG</a></li>
<li><a href="<?php echo URL; ?>/links.html">LINKS</a></li>
<li><a href="<?php echo URL; ?>/contact.html">CONTACT</a></li>
</ul>
</div>
موفق باشید.