PDA

View Full Version : سوال: چاپ عنوان سايت با php



ravand
چهارشنبه 09 آذر 1390, 10:31 صبح
سلام
اگه كد زير رو دقت كنيد در قسمت <title> من يه كد php قرار دادم .چون ميخواستم با كدهاي php عنواني رو كه براي قالب توي ديتابيس ذخيره كرده بودم اينجا چاپ كنم. يه بار يادمه اين كار رو كرده بودم ولي يادم نسيت چيكار كردم!
متشكرم.

<html>
<head>
<title>
<?php
include_once("onvan.php");
?>
</title>
</head>
<body>
matn
</body>
</html>


اينم بگم كه وقتي اين كد رو اجرا ميكنم متن عنوان به جاي قرار گرفتن در محلي كه بايد قرار بگيره در پايين اون قسمت و بالاي قالب چاپ ميشه.

colors
چهارشنبه 09 آذر 1390, 11:39 صبح
درود

بعد از اینکلود کردن فایلت کد زیررو تو تگ title قرار بده


<?php echo $title; ?>

تو اون فایلی که اینکلود میکنی مقدار رو از بانک بگیر و تو متغیر $title ذخیره کن

pejman_view
چهارشنبه 09 آذر 1390, 11:40 صبح
سلام

شما یه کار دیگه هم می توانید بکنید یک فایل برای هدر اچ تی ام ال خود بسازید به این روش:
onvan.php:


<html>
<head>
<title>
<?php
echo $title;
?>
</title>


سپس در فایل اصلی فرضاً index.php از کد زیر استفاده کنید:


<?php
$title = "عنوان سایت";
include_once('onvan.php');
?>


با آرزوی موفقیت

ravand
چهارشنبه 09 آذر 1390, 14:43 عصر
سلام

شما یه کار دیگه هم می توانید بکنید یک فایل برای هدر اچ تی ام ال خود بسازید به این روش:
onvan.php:


<html>
<head>
<title>
<?php
echo $title;
?>
</title>


سپس در فایل اصلی فرضاً index.php از کد زیر استفاده کنید:


<?php
$title = "عنوان سایت";
include_once('onvan.php');
?>


با آرزوی موفقیت


خيلي ببخشيد ولي كدي كه شما گذاشتيد بيشتر شبيه يه شوخي هست تا يه كدي كه بشه درست ازش استفاده كرد و كاربردي باشه.
ببينيد من include_once('onvan.php'); رو بي خودي نذاشتم كه بي خودي از اين صفحه به اون صفحه بپره.
اين كد حاوي متني هست كه از ديتابيس گرفته شده و قراره در قسمت <title> يا همون عنوان چاپ بشه.
در واقع اين اطلاعات از صفحه ي onvan.php كه متن داخل ديتابيس رو چاپ كرده براي عنوان قالب سايت
ارسال مي كنه.

pejman_view
چهارشنبه 09 آذر 1390, 16:24 عصر
سلام

منظورتون رو از شوخی متوجه نمی شم، اما فرض کنید برنامه ایی نوشتید که فردا یک برنامه نویس خواست برایش قالب جدیدی طراحی کند، با کاری که شما در نظر دارید بطور بسیار زیادی برنامه نویس را درگیر می کنید. حالا یک راه حل دیگه بهتون پیشنهاد می کنم:

یک تابع بسازید که تمام "متن داخل ديتابيس رو چاپ كرده یا خروجی بدهد."

title.function.php:



function title(){
//tamame code hato inja minevisi
echo $result;
}


onvan.php :


<html>
<head>
<title>
<?php
include_once('title.function.php');
$title();
?>
</title>


index.php :


<?phpinclude_once('onvan.php');?>

MMSHFE
چهارشنبه 09 آذر 1390, 16:43 عصر
معمولاً اسکریپتهایی که اینطور نوشته میشن، یک فایل config.php (حالا با هر اسم احتمالی دیگه) دارن که تنظیمات و توابع خوندن از دیتابیس و... رو توی اون میگذارن و امتیاز این فایل اینه که توی همه کدها ضمیمه همون ابتدای کار ضمیمه میشه. شما میتونید کدی شبیه به این رو توی اون فایل بگذارین:


mysql_conect('localhost', 'root', '') or die('Connection Error');
mysql_select_db('db') or die('Database does not exist');
$query = mysql_query('SELECT * FROM `config` WHERE (`name`=\'title\')');
if($query && mysql_num_rows($query) > 0) {
$title = mysql_fetch_assoc($query);
if(!defined('TITLE')) {
define('TITLE', $title['value']);
}
}

حالا کافیه توی تمام صفحات سایتتون، ابتدا (قبل از تگ html) فایل config.php رو با require_once یا هر روش دیگه، ضمیمه کنید. بعد، برای قسمت عنوان صفحه اینطور بنویسید:


<title><?php echo TITLE; ?></title>

البته من فرض رو بر این گذاشتم که شما یک جدول به نام config توی دیتابیس دارین و همه اطلاعات تنظیمات رو توی اون گذاشتین به این صورت که هر سطر این جدول، یک فیلد name داره و یک فیلد value که اولی مشخص کننده نوع تنظیمات هست (مثلاً title و url و...) و دومی مقدارش رو مشخص میکنه). حالا اگه طراحی شما اینطوری نیست، کد رو برحسب نیازتون تغییر بدین.
دقت کنید که استفاده از فایلهای کوچک و کوتاه برای موارد اینچنین و ضمیمه کردنهای متعدد، سرعت کار رو میاره پایین. وقتی فایل کلی برای تنظیمات داریم، بهتره همه موارد رو توی اون، تعیین کنیم. ضمناً در مواردی مشابه تنظیمات و... بهتره از ثابت‌ها به‌جای متغیرها استفاده کنیم چون در فضای حافظه صرفه‌جویی میشه.
موفق باشید.

ravand
چهارشنبه 09 آذر 1390, 17:03 عصر
من قبلا از تابع هم براي اين كار استفاده كردم و با include_once فرقي نداره و همون كار رو ميكنه. بازم چون شما گفتي امتحان كردم . ولي مشكل اينه كه اين توابع توي قسمت <title> كار نميكنن!

MMSHFE
چهارشنبه 09 آذر 1390, 18:10 عصر
میشه کد کامل رو بگذارین؟ من الآن امتحان کردم و کاملاً کار میکرد! البته روش خودم رو میگم (تعریف ثابت توی فایل تنظیمات) نه فراخوانی تابع. ضمناً اگه فایلی رو include میکنید، کد اون فایل رو هم بگذارین تا بررسی بشه.

ravand
چهارشنبه 09 آذر 1390, 19:24 عصر
سلام آقاي شهركي و دوستان.
اونقدر اين كد اعصابم رو بهم ريخت كه برداشتمش بدون تابع و include گذاشتمش بالاي همه ي كدهام. و بالاخره كار كرد.
ولي شما هر طوري كه صلاح ميدوني و بهتر هست تغييرش بديد.
متشكرم.

<?php

$servername="localhost";
$dbname="cms2";
$user="root";
$pass="";
$dblink=mysql_connect($servername,$user,$pass);
mysql_select_db($dbname,$dblink);
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM header LIMIT 1 ",$dblink);

while($record=mysql_fetch_assoc($dbresult))
{

$onvan="$record[onvan]";

}

mysql_close($dblink);

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>
<?php
echo "$onvan";
?>
</title>
</head>
<body>
matn
</body>
</html>

Unique
چهارشنبه 09 آذر 1390, 19:45 عصر
شما چه تابع استفاده کنی ، چه include کنی و چه همونجا echo کنی باید کار کنه ! من فکر کنم مشکل شما از جای دیگست اما من این رفتار های عجیب و غریب توی نمایش صفحه زمانی برام پیش میاد که فایلی که Include میکنم BOM داشته باشه ! فایلی که داشتی include میکردی را توی dreamweaver باز کن ببین BOM داره ! (از طریق Page Properties نگاه کن)

ravand
چهارشنبه 09 آذر 1390, 21:31 عصر
شما چه تابع استفاده کنی ، چه include کنی و چه همونجا echo کنی باید کار کنه ! من فکر کنم مشکل شما از جای دیگست اما من این رفتار های عجیب و غریب توی نمایش صفحه زمانی برام پیش میاد که فایلی که Include میکنم BOM داشته باشه ! فایلی که داشتی include میکردی را توی dreamweaver باز کن ببین BOM داره ! (از طریق Page Properties نگاه کن)


نه روي bom نيست ، من از برنامه notepad++ استفاده ميكنم. و روي utf-8 قرار دادمش.

MMSHFE
پنج شنبه 10 آذر 1390, 10:26 صبح
یک سؤال دارم: فایلی که include میکردین، شامل تگهای HTML و ساختار کامل HTML بود یا اینکه فقط تگ PHP داشت؟ منظورم تگهای html و title و head و... هست.

ravand
پنج شنبه 10 آذر 1390, 11:29 صبح
یک سؤال دارم: فایلی که include میکردین، شامل تگهای HTML و ساختار کامل HTML بود یا اینکه فقط تگ PHP داشت؟ منظورم تگهای html و title و head و... هست.

خيلي ممنون آقاي شهركي مشكل من همين بود . و با گفته ي شما من رفتم و كدهاي html قبل از كدهاي php رو پاك كردم. بعد از اون ديدم بازم يه مكعب كوچك كنار عنوان چاپ شد. امدم و در برنامه notepad ++ به منوي انكودينگ رفتم و گزينه ي bom رو انتخاب كردم و ذخيره كردم مشكل حل شد.
متشكرم ، تجربه ي خيلي خوبي بود. :تشویق::لبخند:

MMSHFE
پنج شنبه 10 آذر 1390, 16:09 عصر
خواهش میکنم. استفاده از دکمه تشکر کافی بود :چشمک:.

ravand
شنبه 12 آذر 1390, 12:11 عصر
اون مشكل قبليم حل شد ولي بازم يه مشكل جديد برام پيش امده. اينكه وقتي ميام كد زير رو كه براي قسمت <title> استفاده كرده بودم براي مثلاً هدر سايت هم استفاده ميكنم اين بار براي هدر چاپ نميشه و عنوان سايت رو براي اين قسمت چاپ نميكنه.


<?php
include_once('onvan.php');
?>
در واقع اگر بخوام يه صفحه اي رو دو بار در صفحه ي ديگر اينكلود بكنم شدني نيست. و فقط يه بار ميشه صفحه اي رو اينكلود كرد و چاپش كرد.

MMSHFE
شنبه 12 آذر 1390, 17:00 عصر
با سلام، لطفاً اگه میشه کمی بیشتر توضیح بدین. منظورتون از هدر سایت چیه؟ اگه منظور همون بخش عنوان سایت هست که لوگو و... رو نمایش میدین، بفرمایید از چه روشی استفاده کردین. برای مثال، از Frame استفاده کردین یا از CSS ؟ کد قسمت header رو هم بگذارین. همچنین کد فایل onvan.php رو تا بهتر بتونیم راهنمایی کنیم. موفق باشید.

ravand
شنبه 12 آذر 1390, 17:38 عصر
من قبلاً كدهاي قسمت onvan.php رو گذاشته بودم
اين كدهاي قسمت onvan.php هست.

<?php
$servername="localhost";
$dbname="cms2";
$user="root";
$pass="";
$dblink=mysql_connect($servername,$user,$pass);
mysql_select_db($dbname,$dblink);
mysql_query("SET CHARACTER SET utf8",$dblink);
$dbresult=mysql_query("SELECT * FROM header LIMIT 1 ",$dblink);

while($record=mysql_fetch_assoc($dbresult))
{
echo ($record['onvan']);
}

mysql_close($dblink);

?>




,و اين هم كدهاي خود قالب كه من فقط كدهاي قسمت هدر سايت يا عنوان سايت رو گذاشتم تا ساده و قابل فهم باشه براتون:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>
<?php
include_once('onvan.php');
?>
</title>
<style type="text/css">
#header{
border:3px solid #29C60A;
background-color:#CC99FF;
width:565px;
height:60px;
margin-top:5px;
padding-top:18px;
text-align:center;
direction:rtl;
color:blue;
font-family:tahoma;
font-size:8pt;
line-height: 1em;

}



<div id="header">

<?php
include_once('onvan.php');
echo '<br>';
include_once('tozihat.php');
?>

</div>

</body>
</html>
حالا اگه دقت كنيد اين كد زير كه من براي بار دوم در قسمت هدر يا عنوان سايت استفاده كردم كار نميكنه و فقط بار اول كه در قسمت <title></title> استفاده كردم كار ميكنه :

include_once('onvan.php');

MMSHFE
شنبه 12 آذر 1390, 17:56 عصر
با سلام، اگه اجازه بدین، باز جواب سؤالتون رو با یک سؤال کوتاه بدم: اون پسوند once_ آخر تابع include معناش چیه؟

ravand
شنبه 12 آذر 1390, 18:05 عصر
خيلي ممنون داداش از سوالتون . :لبخند: حق با شماست . من از include استفاده كردم و مشكلم حل شد. همه ي اين مشكلاتي كه سرم مياد از بي دقتي هست
فقط يه سوال ديگه . من شنيدم اين تابع امنيتش كم هست ! درسته؟
آيا راهي هست كه مشكل امنيتيش رو حل كرد؟

MMSHFE
شنبه 12 آذر 1390, 18:15 عصر
راستش امنیتش که نمیشه بگیم ذاتاً کمه و بستگی به نوع استفاده از اون داره. برای مثال، اگه بیاین و نام فایلی که باید ضمیمه بشه رو از کاربر یا از URL با متد GET بگیرین، ممکنه صدمات جدی پیش بیاد. مورد دیگه، اینه که اگه تابع include به هر دلیل نتونه فایل مربوطه رو ضمیمه کنه (مثلاً مسیر رو اشتباه نوشته باشیم و...)، یک E_WARNING تولید میکنه و بقیه اسکریپت اجرا میشه. حالا اگه فایلی که میخواین ضمیمه کنین خیلی مهمه (مثل تنظیمات دیتابیس و... که بدون اون، کلاً اجرای اسکریپت با مشکل مواجه میشه) بهتره از require استفاده کنید تا درصورت عدم امکان ضمیمه کردن، E_ERROR تولید بشه و بقیه اسکریپت اجرا نشه. اما درمورد امکانات جانبی مثل اسکریپت وضعیت آب و هوا و... که خیلی ضروری نیستن، بهتره از همین include استفاده کنید تا اگه به هر دلیل نتونه فایلشون رو ضمیمه کنه، بقیه سایتتون بالا بیاد. موفق باشید.