PDA

View Full Version : سوال: تابع include



ameri110
چهارشنبه 24 خرداد 1391, 22:24 عصر
سلام
من پیج 1 رو داخل پیج 2 include کردم و پیج 1 داخل پیج 2 نشون داده میشه
اما من می خواهم فقط متغیر های پیج 1 وارد پیچ 2 بشن
ممنون میشم راهنمایی کنید :X

MMSHFE
چهارشنبه 24 خرداد 1391, 23:56 عصر
توی فایل 1 چیزی رو echo نکنید.

ameri110
پنج شنبه 25 خرداد 1391, 10:28 صبح
توی پیج 1 هیچ echoـی وجود نداره و در پیچ 2 پیچ 1 نشون داده میشه
و سورس صفحه هم خالیه!!

MMSHFE
پنج شنبه 25 خرداد 1391, 10:29 صبح
خوب توی صفحه 2، صفحه 1 رو نشون ندین (فقط include کنید). اگه توی صفحه 1 فقط یکسری متغیر و تابع و... تعریف کرده باشین، با include کردن میتونید از اون متغیرها و توابع و... استفاده کنید. نیازی به echoکردنشون نیست.
موفق باشید.

ameri110
پنج شنبه 25 خرداد 1391, 10:37 صبح
خوب من هم نمیخواهم صفحه 1 رو نمایش بدم
ولی نمایش داده میشه

MMSHFE
پنج شنبه 25 خرداد 1391, 10:41 صبح
کد فایلهای 1 و 2 رو بگذارین ببینیم جریان چیه.

ameri110
پنج شنبه 25 خرداد 1391, 10:50 صبح
send.php پیج 1


<?php
//-----+++++===== CONFIGS =====+++++-----\\
$password=''; // account password
$pre='amd'; // username's prefix
$file = 'AccInfo.ini';
//------------------------------------------------------\\
//-----+++++===== GET USERS DATA =====+++++-----\\
// Open the file to get existing content
$current = file_get_contents($file);
$user = explode('[', $current);
/////////////get users count = $users_count\\\\\\\\\\\\\\
$user1_count = explode('UserCount=',$user[1]);
$user2_count = explode('AuthModel=',$user1_count[1]);
$users_count = substr($user2_count[0],0,-2);
///////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

for ($i = 1; $i <= $users_count; $i++) {
$username2 = explode('UserName=', $user[$i+1]);
$username = explode('Password=', $username2[1]);
$usernames[$i] = substr($username[0],0,-2);
}

for ($i = 1; $i <= $users_count; $i++) {
$Enable2 = explode('Enable=', $user[$i+1]);
$Enable = explode('BelongsGroup=', $Enable2[1]);
$Enable[$i] = substr($Enable[0],0,-2);
}

for ($i = 1; $i <= $users_count; $i++) {
$EnableUserPassword2 = explode('EnableUserPassword=', $user[$i+1]);
$EnableUserPassword = explode('EnableIPAddress=', $EnableUserPassword2[1]);
$EnableUserPassword[$i] = substr($EnableUserPassword[0],0,-2);
}

for ($i = 1; $i <= $users_count; $i++) {
$MaxConn2 = explode('MaxConn=', $user[$i+1]);
$MaxConn = explode('BandWidth=', $MaxConn2[1]);
$MaxConn[$i] = substr($MaxConn[0],0,-2);
}

for ($i = 1; $i <= $users_count; $i++) {
$BandWidth2 = explode('BandWidth=', $user[$i+1]);
$BandWidth = explode('BandWidth2=', $BandWidth2[1]);
$BandWidth[$i] = substr($BandWidth[0],0,-2);
}

for ($i = 1; $i <= $users_count; $i++) {
$AutoDisable2 = explode('AutoDisable=', $user[$i+1]);
$AutoDisable = explode('DisableDateTime=', $AutoDisable2[1]);
$AutoDisable[$i] = substr($AutoDisable[0],0,-2);
}

for ($i = 1; $i <= $users_count; $i++) {
$DisableDateTime2 = explode('DisableDateTime=', $user[$i+1]);
$DisableDateTime = explode('EnableLeftTime=', $DisableDateTime2[1]);
$DisableDateTime[$i] = substr($DisableDateTime[0],0,-2);
list($DisableDate[$i], $DisableTime[$i]) = explode(' ', $DisableDateTime[$i]);
}


//-------------------------------------------------------------------\\
//-----+++++===== GET DATA =====+++++-----\\
if (isset($_POST["add"])) {$in_add = $_POST["add"];}
if (isset($_POST["username"])) {$in_username = $pre.'_'.$_POST["username"];}
if (isset($_POST["enable"])) {$in_enable = $_POST["enable"];}
if (isset($_POST["usepassword"])) {$in_usepassword = $_POST["usepassword"];}
if (isset($_POST["password"])) {$in_password = $_POST["password"];}
if (isset($_POST["connection"])) {$in_connection = $_POST["connection"];}
if (isset($_POST["bandwidth"])) {$in_bandwidth = $_POST["bandwidth"];}
if (isset($_POST["autodisable"])) {$in_autodisable = $_POST["autodisable"];}
if (isset($_POST["disabledate"])) {$in_disabledate = $_POST["disabledate"];}
if (isset($_POST["disabletime"])) {$in_disabletime = $_POST["disabletime"];}
//------------------------------------------------------\\
//-----+++++===== SEND DATA =====+++++-----\\
//create array of data to be posted
if (isset($in_add)) {$post_data['add'] = $in_add;}
if (isset($in_username)) {$post_data['username'] = $in_username;}
if (isset($in_enable)) {$post_data['enable'] = $in_enable;}
if (isset($in_usepassword)) {$post_data['usepassword'] = $in_usepassword;}
if (isset($in_password)) {$post_data['password'] = $in_password;}
if (isset($in_connection)) {$post_data['connection'] = $in_connection;}
if (isset($in_bandwidth)) {$post_data['bandwidth'] = $in_bandwidth;}
if (isset($in_autodisable)) {$post_data['autodisable'] = $in_autodisable;}
if (isset($in_disabledate)) {$post_data['disabledate'] = $in_disabledate;}
if (isset($in_disabletime)) {$post_data['disabletime'] = $in_disabletime;}

if (!isset($post_data)) { exit(); }

//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
$post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);
//create cURL connection
$curl_connection =
curl_init('http://admin:110@127.0.0.1:88/account');
//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
//perform our request
$result = curl_exec($curl_connection);
//show information regarding the request
/*
print_r(curl_getinfo($curl_connection));
echo curl_errno($curl_connection) . '-=-' .
curl_error($curl_connection);
//close the connection
echo '-=-';
echo $post_string;
curl_close($curl_connection);
//header ('Location: http://127.0.0.1/ccprs/web/form.php');
*/
?>


form.php پیچ 2


<?php
include('send.php');
echo '
<html>
<body bgcolor="cyan">
<table border=1>
<tr>
<td align="center"></td>
<td align="center">Username</td>
<td align="center">Enabled</td>
<td align="center">Password</td>
<td align="center">Connections</td>
<td align="center">Bandwidth</td>
<td align="center">Auto disable at</td>
</tr>
<form name="form" method="post" action="send.php">
<tr align="center">
<td nowrap width="0">
<input type="submit" name="add" value="Add" class="button">
</td>
<td nowrap width="0">
<input type="text" name="username" size="12" value="" class="editbox">
</td>
<td nowrap width="0" align="center">
<input type="checkbox" name="enable" value="1" checked>
</td>
<td nowrap width="0" align="center">
<input type="checkbox" name="usepassword" value="1">
<input type="text" name="password" size="8" value="" class="editbox">
</td>
<td nowrap width="0">
<input type="text" name="connection" size="4" value="-1" class="editbox">
</td>
<td nowrap width="0">
<input type="text" name="bandwidth" size="4" value="-1" class="editbox">
</td>
<td nowrap width="0">
<input type="checkbox" name="autodisable" value="1">
<input type="text" name="disabledate" size="10" value="YYYY-MM-DD" class="editbox">
<input type="text" name="disabletime" size="8" value="HH:MM:SS" class="editbox">
</td>
</tr>
</form>
';

for ($i = 1; $i <= $users_count; $i++) {
echo '
<form name="form" method="post" action="account">
<input type=hidden name="userid" value="'.$usernames[3].'">
<tr align="center">
<td nowrap width="0">
<input type="submit" name="edit" value="Edit" class="button">
<input type="submit" name="delete" value="Delete" class="button">
</td>
<td nowrap width="0">
<input type="text" name="username" size="12" value="'.$usernames[3].'" class="editbox">
</td>
<td nowrap width="0" align="center">
<input type="checkbox" name="enable" value="'.$Enable[3].'" checked>
</td>
<td nowrap width="0" align="center">
<input type="checkbox" name="usepassword" value="'.$EnableUserPassword[3].'" >
<input type="text" name="password" size="8" value="" class="editbox">
</td>
<td nowrap width="0">
<input type="text" name="connection" size="4" value="'.$MaxConn[3].'" class="editbox">
</td>
<td nowrap width="0">
<input type="text" name="bandwidth" size="4" value="'.$BandWidth[3].'" class="editbox">
</td>
<td nowrap width="0">
<input type="checkbox" name="autodisable" value="'.$AutoDisable[3].'" >
<input type="text" name="disabledate" size="10" value="'.$DisableDate[3].'" class="editbox">
<input type="text" name="disabletime" size="8" value="'.$DisableTime[3].'" class="editbox">
</td>
</tr>
</form>
';
}


echo '
</table>
</body>
</html>
';
?>

iner30
پنج شنبه 25 خرداد 1391, 10:57 صبح
در خط های 111و 112 و 115 و 116 عمل چاپ صورت میگیره

ameri110
پنج شنبه 25 خرداد 1391, 11:11 صبح
این خطوط که سما فرمودید به صورت توضیح هستن
و در صورت حذف نیز کد پیچ 1 نشان داده می شود

MMSHFE
پنج شنبه 25 خرداد 1391, 11:23 صبح
دوست گرامی، curl_exec خروجی رو نشون میده. باید قبلش ob_start و بعدش ob_end_clean رو صدا بزنید.
موفق باشید.

ameri110
پنج شنبه 25 خرداد 1391, 13:11 عصر
من به اینصورت نوشتم:
ob_start;
$result = curl_exec($curl_connection);
ob_end_clean;
درسته ؟
ولی نشد !!

MMSHFE
پنج شنبه 25 خرداد 1391, 13:25 عصر
ob_start();
$reuslt = curl_exec($curl_connection);
ob_end_clean();

اونایی که گفتم تابع هستن.

ameri110
پنج شنبه 25 خرداد 1391, 13:35 عصر
اما باز هم درست نشد

:ناراحت:
شما تو یاهو هستید ؟

هزاره سوم
شنبه 22 تیر 1392, 12:19 عصر
دوستان من صفحه اصلی سایتم رو درست کردم و میخواهم به یه پیج دیگه لینک بدم
مسلما باید صفحات دیگه سایت هم قالب مشابه با صفحه اول ساید داشته باشه
مثلا لوگو،رنگ و...
از تابع include استفاده کردم و توی یه پیج دیگه اون قابلیت ها رو آوردم
فقط نمدونم چجوری باید روش ویرایش کنم
مثلا توی فلان قسمت سایت،توی پیج دوم، میخوام فلان متن رو بنویسم
علاوه بر این یه سری از اطلاعات پیج اصلی رو میخوام و یه سری رو نمیخوام
میشه منو راهنمایی کنی

MMSHFE
شنبه 22 تیر 1392, 12:23 عصر
توی صفحه اصلی، بجای echo کردن، توی متغیر ذخیره کنید و توی صفحات دیگه، اون متغیرها رو برحسب نیاز تغییر بدین و بعد، echo کنید. البته راه مناسبتر، استفاده از Template Engine هست.

هزاره سوم
شنبه 22 تیر 1392, 12:26 عصر
توی صفحه اصلی، بجای echo کردن، توی متغیر ذخیره کنید و توی صفحات دیگه، اون متغیرها رو برحسب نیاز تغییر بدین و بعد، echo کنید. البته راه مناسبتر، استفاده از Template Engine هست.

نه
من واسه صفحه اصلی فقط کد html زدم برای طراحی ظاهرش
برای اینکه از همون قالب ظاهری استفاده کنم اومدم از php استفاده کردم
منظورم اینه که وقتی یه سایت رو درست میکنیم باید قالب ظاهریش توی همه پیج ها یکی باشه دیگه
برای این موضوع راهی جز include هست؟اصلا این راهه درستشه؟:متفکر:

MMSHFE
شنبه 22 تیر 1392, 12:30 عصر
نه این راه درست نیست (البته با کمی دردسر، میشه کارتون رو باهاش راه بندازین). راه مناسب استفاده از همون Template Engineها (معروفترینش Smarty) هست.

هزاره سوم
شنبه 22 تیر 1392, 13:05 عصر
میشه یه منبع خوب برای شناخت و طرز کار با Template Engineها معرفی کنید؟

MMSHFE
شنبه 22 تیر 1392, 13:19 عصر
خود سایت smarty.net منبع خوبیه.

هزاره سوم
یک شنبه 23 تیر 1392, 11:01 صبح
از دوستان با تجربه میشه کسی در مورد include توضیح بده؟
از توضیحات کتابی و اضافی لطفا بگذریم
عملا خودتون کجاها استفاده اش میکنین؟

هزاره سوم
یک شنبه 23 تیر 1392, 14:09 عصر
کسی راهنمایی نمیکنه؟:ناراحت:

MMSHFE
یک شنبه 23 تیر 1392, 14:18 عصر
بطور کلی هرجا لازم باشه بخشهایی از کد رو برای استفاده مجدد یا افزایش خوانایی، توی فایل جداگانه ای قرار بدین، میتونید با دستورات include یا require اون فایل رو ضمیمه کنید و درست انگار که کد اون فایل رو در همون محلی که ضمیمه کردین، نوشته باشین، میتونید از متغیرها، کلاسها و توابع داخلی اون فایلها در محل ضمیمه شدن، استفاده کنید. حالا برای ضمیمه کردن 4 دستور وجود داره که تفاوت اونها بصورت زیر هست:
1- include سعی میکنه فایل رو ضمیمه کنه و درصورتی که نتونه (مسیر اشتباه یا عدم وجود Permission مناسب)، یک هشدار E_WARNING تولید میکنه و بقیه اسکریپت به کار خودش ادامه میده (مناسب برای ضمیمه کردن فایلهایی که یک کار فرعی توی سایت انجام میدن (مثل اسکریپت وضعیت آب و هوا)
2- require سعی میکنه فایل رو ضمیمه کنه و اگه نتونست، یک خطا E_ERROR تولید میکنه و اسکریپت همونجا متوقف میشه (مناسب برای ضمیمه کردن فایلهای حیاتی سیستم مثل تنظیمات و... که بقیه اسکریپت بدون اطلاعات موجود در اونها نمیتونه کار کنه)
3- include_once مشابه include با این تفاوت که چک میکنه اگه قبلاً فایل مذکور ضمیمه شده باشه، دوباره اون رو ضمیمه نمیکنه. اگه توی فایلی که قراره ضمیمه بشه، ثابت، تابع یا کلاسی تعریف شده باشه، درصورت ضمیمه شدن بیش از یکبار، خطای Duplication Define تولید میشه.
4- require_once مشابه require با این تفاوت که قبل از ضمیمه کردن، چک میکنه قبلاً فایل مربوطه، ضمیمه نشده باشه.
اگه سؤالی بود در خدمتم.

هزاره سوم
یک شنبه 23 تیر 1392, 15:52 عصر
بطور کلی هرجا لازم باشه بخشهایی از کد رو برای استفاده مجدد یا افزایش خوانایی، توی فایل جداگانه ای قرار بدین، میتونید با دستورات include یا require اون فایل رو ضمیمه کنید و درست انگار که کد اون فایل رو در همون محلی که ضمیمه کردین، نوشته باشین، میتونید از متغیرها، کلاسها و توابع داخلی اون فایلها در محل ضمیمه شدن، استفاده کنید. حالا برای ضمیمه کردن 4 دستور وجود داره که تفاوت اونها بصورت زیر هست:
1- include سعی میکنه فایل رو ضمیمه کنه و درصورتی که نتونه (مسیر اشتباه یا عدم وجود Permission مناسب)، یک هشدار E_WARNING تولید میکنه و بقیه اسکریپت به کار خودش ادامه میده (مناسب برای ضمیمه کردن فایلهایی که یک کار فرعی توی سایت انجام میدن (مثل اسکریپت وضعیت آب و هوا)
2- require سعی میکنه فایل رو ضمیمه کنه و اگه نتونست، یک خطا E_ERROR تولید میکنه و اسکریپت همونجا متوقف میشه (مناسب برای ضمیمه کردن فایلهای حیاتی سیستم مثل تنظیمات و... که بقیه اسکریپت بدون اطلاعات موجود در اونها نمیتونه کار کنه)
3- include_once مشابه include با این تفاوت که چک میکنه اگه قبلاً فایل مذکور ضمیمه شده باشه، دوباره اون رو ضمیمه نمیکنه. اگه توی فایلی که قراره ضمیمه بشه، ثابت، تابع یا کلاسی تعریف شده باشه، درصورت ضمیمه شدن بیش از یکبار، خطای Duplication Define تولید میشه.
4- require_once مشابه require با این تفاوت که قبل از ضمیمه کردن، چک میکنه قبلاً فایل مربوطه، ضمیمه نشده باشه.
اگه سؤالی بود در خدمتم.

ممنون از توضیحاتتون
در مورد include گفتید برای یک قسمت فرعی از سایت...یه سوال کوچیک داشتم...نمیدونم چطور بپرسم بزارید یه مثلا بزنم...مثلا برای اینکه از اطلاعات یه فرم استفاده کنیم برای هر قسمتش یه name تعریف میکنیم و بعدا با توجه به اون اسم و آرایه خاصی که مد نظرموم هست اطلاعات رو میخونیم
حالا اگه بخوایم اطلاعت رو از صفحه ای دیگه (یه اطاعات خاص رو) بیاریم و توی همین صفحه هم داشته باشیم باید name تعریف کنیم؟چطور با انکلود صدا زده میشه؟
میشه چند تا مثال از صدا زدن این تابع ها بزنین.ممنون میشم