PDA

View Full Version : سوال: با توابع فایل چطور می تونم یه فایل پی اچ پی ایجاد کنم و کدهای مورد نظر رو توی اون نمایش بدم؟



idocsidocs
چهارشنبه 02 آذر 1390, 15:25 عصر
با توابع فایل چطور می تونم یه فایل پی اچ پی ایجاد کنم و کدهای مورد نظر خودم رو توی اون ذخیره کنم؟

MSN_Issue
چهارشنبه 02 آذر 1390, 17:49 عصر
فایل php هم یه فایل تکسته دیگه !!
فقط کافیه مثل یه فایل معمولی بسازیش و هرچی میخوای توش بنویسی و فقط پسوندشو .php بذاری !!
اگه منظورت همین بود یه سری به این لینک (http://hu.php.net/manual/en/function.fwrite.php) بزن تا طریقه ی کار با فایلها رو ببینی
اگر هم این نبود بیشتر توضیح بده تا بشه بهتر کمک کرد ...

موفق باشی

idocsidocs
چهارشنبه 02 آذر 1390, 18:04 عصر
فایل php هم یه فایل تکسته دیگه !!
انکدینگش رو چطور باید تعیین کنم؟ من می خوام utf8 باشه.

MSN_Issue
چهارشنبه 02 آذر 1390, 20:10 عصر
امیدوارم به درد بخوره :


NOTE : file_put_contents create files UTF-8

<?php
$myFile = 'test.txt';
$myContent = 'I love PHP';

file_put_contents($myFile, utf8_encode($myContent));
?>


منبع (http://www.php.net/manual/en/function.file-put-contents.php)

idocsidocs
چهارشنبه 02 آذر 1390, 21:52 عصر
امیدوارم به درد بخوره :
توابعی مثل fread و fclose و ... نمی تونن چنین کاری بکنن؟
می شه از این توابع هم یه نمونه کد ارائه بدید؟

MSN_Issue
چهارشنبه 02 آذر 1390, 22:42 عصر
اگه noteهای سایت php.net رو بخونید خیلی بدردتون میخوره !
منم هم اکثر مشکلاتم رو از اونجا رفع میکنم.
مشکلتون یه کم خاصه، اونجا دنبالش بگردید راحترید !

idocsidocs
چهارشنبه 02 آذر 1390, 23:07 عصر
اگه noteهای سایت php.net رو بخونید خیلی بدردتون میخوره !
منم هم اکثر مشکلاتم رو از اونجا رفع میکنم.
مشکلتون یه کم خاصه، اونجا دنبالش بگردید راحتریدمن برای فایل نصب باید یه فایل کانفیگ بسازم که یع سری متغیر و ثابت توش تعریف شده.

بنظرتون همون روشی که در ابتدا گفتید کار رو راه می ندازه؟

eshpilen
چهارشنبه 02 آذر 1390, 23:08 عصر
اصولا شما وقتی توی فایل مینویسی، با همون انکدینگی نوشته میشه که فایل PHP داره.
مثلا این کد:

<?php

$myFile = 'test.txt';
$myContent = 'سلام';

file_put_contents($myFile, $myContent);

?>
وقتی فایل PHP ای که این کد درش هست خودش انکدینگ UTF-8 داشته باشه (مثلا در Notepad++ میتونی از Encoding->Convert to UTF-8 without BOM استفاده کنی) و اجرا بشه، خروجی ای که تولید میکنه بر اساس همون انکدینگ خواهد بود.
یعنی فایل text.txt محتوی کلمهء «سلام» با انکدینگ UTF-8 خواهد بود.

علت فنیش هم اینه که PHP اصلا انکدینگ و اینا رو حالیش نیست و صرفا چیزی رو که بهش میدی، حالا ورودی رو تحت هر انکدینگی وارد کرده باشی، میده به خروجی یا فایل. اون سلام هم که در فایل PHP تایپ کردی همون موقع تایپ یا بعد از اینکه اون کاری رو که داخل پرانتز گفتم انجام دادی به UTF-8 تبدیل و در فایل PHP بصورت یک رشته ذخیره شده. و PHP هم صرفا اون رو در فایل مورد نظر درج میکنه.

eshpilen
چهارشنبه 02 آذر 1390, 23:15 عصر
توابعی مثل fread و fclose و ... نمی تونن چنین کاری بکنن؟
می شه از این توابع هم یه نمونه کد ارائه بدید؟
fread که برای خواندن هست، نه نوشتن.
طبیعتا چیزی رو که میخونه تحت همون انکدینگی هست که در فایل مورد نظر ذخیره شده (نه انکدینگ خود فایل PHP).
fclose هم که صرفا فایل رو میبنده؛ به این بحث ربطی نداره!

idocsidocs
چهارشنبه 02 آذر 1390, 23:28 عصر
اصولا شما وقتی توی فایل مینویسی، با همون انکدینگی نوشته میشه که فایل PHP داره.
مثلا این کد:

<?php

$myFile = 'test.txt';
$myContent = 'سلام';

file_put_contents($myFile, $myContent);

?>
وقتی فایل PHP ای که این کد درش هست خودش انکدینگ UTF-8 داشته باشه (مثلا در Notepad++ میتونی از Encoding->Convert to UTF-8 without BOM استفاده کنی) و اجرا بشه، خروجی ای که تولید میکنه بر اساس همون انکدینگ خواهد بود.
یعنی فایل text.txt محتوی کلمهء «سلام» با انکدینگ UTF-8 خواهد بود.

علت فنیش هم اینه که PHP اصلا انکدینگ و اینا رو حالیش نیست و صرفا چیزی رو که بهش میدی، حالا ورودی رو تحت هر انکدینگی وارد کرده باشی، میده به خروجی یا فایل. اون سلام هم که در فایل PHP تایپ کردی همون موقع تایپ یا بعد از اینکه اون کاری رو که داخل پرانتز گفتم انجام دادی به UTF-8 تبدیل و در فایل PHP بصورت یک رشته ذخیره شده. و PHP هم صرفا اون رو در فایل مورد نظر درج میکنه.
من یه فایل نصب ساختم و برای فایل کانفیگ سایت باید مقادیر رو از کاربر بگیرم و توی فایل کانفیگ ذخیره کنم.

اگر اطلاعات به درستی وارد نشه یا به خوبی ذخیره نشه یا اصلا فایل ایراد داشته باشه، کل سایت از کار میافته.

بنظرم بهتره از قبل یه فایل ایجاد کنم و انکدینگش رو مشخص کنم و بعد مقادیر رو از کاربر بگیرم و توی این فایل ذخیره کنم. بنظرتون این کار بهتر نیست؟

eshpilen
پنج شنبه 03 آذر 1390, 00:33 صبح
بنظرم بهتره از قبل یه فایل ایجاد کنم و انکدینگش رو مشخص کنم و بعد مقادیر رو از کاربر بگیرم و توی این فایل ذخیره کنم. بنظرتون این کار بهتر نیست؟ این کار خاصی نمیکنه.
چون PHP بر طبق انکدینگ خودش و انکدینگی که ورودیهای کاربر با اون وارد میشن عمل میکنه.
یعنی اگر یک رشته از قبل در فایل PHP باشه و شما اون رو در فایل مورد نظر بنویسید، اون رشته با انکدینگی که تحت اون در فایل PHP ذخیره شده بوده در فایل مورد نظر نوشته میشه.
اگر یک رشته رو از کاربر دریافت میکنید، مثلا متنی که در یک text box در یک فرم HTML درج شده، PHP اون رشته رو تحت انکدینگی که صفحهء مرورگر روی اون تنظیم بوده دریافت میکنه و بنابراین وقتی اون رشته رو در فایل وارد میکنه با همون انکدینگ صفحه در سمت کاربر خواهد بود.
بنابراین باید هم انکدینگ فایل PHP خودتون رو روی UTF-8 بذارید و هم انکدینگ صفحهء HTML رو که باهاش ورودیهای کاربر رو دریافت میکنید با کمک هدر زیر روی UTF-8 قرار بدید:

header('Content-Type: text/html; charset=utf-8');
البته متاتگ در خود HTML هم بذارید خوبه:

<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />

البته بدیهی هست که برای کارهای امنیتی یا حساس، مثلا جایی که کاربر ممکنه به سایت حمله کنه (مثلا هرکاربری میتونه براحتی انکدینگ صفحه رو در مرورگر خودش تغییر بده)، طبیعتا باید ولیدیت ها و تمهیدات مختص برنامهء خودتون رو پیاده کنید.

idocsidocs
پنج شنبه 03 آذر 1390, 01:10 صبح
البته متاتگ در خود HTML هم بذارید خوبه:
من می خوام یه اسکریپت ایجاد کنم و چندتا ثابت و متغیر توش تعریف کنم. اصلا توی این اسکریپت چیزی برای نمایش وجود نداره.

Sadbar7
پنج شنبه 03 آذر 1390, 12:24 عصر
سلام
من یه کد قبلا نوشته بودم که اطلاعات دیتابیس رو از کاربر می گرفت و در یه فایل کانفیگ قرار میداد و البته امکان داره کدش کامل نباشه...

function setconfig ()
{
$config_file_content="<?php\n
/** MySQL hostname */ \n
\$dbhost='$_POST[dbhost]'; \n
\n
/** MySQL database username */ \n
\$dbuser='$_POST[dbuser]'; \n
\n
/** MySQL database password */ \n
\$dbpassword='$_POST[dbpass]'; \n
\n
/** The name of the database */ \n
\$dbname='$_POST[dbname]'; \n
?>\n";
$config_file_read = fopen("../config.php","w");
$config_file_write = fwrite($config_file_read,$config_file_content);
$config_file_close = fclose($config_file_read);
$error = '<font color="#FF0000">خطا در ایجاد فایل تنظیمات.</font>'.'<br><br>';
$success = '<font color="#0C0">فایل تنظیمات با موفقیت ایجاد شد.</font>'.'<br><br>';
if (!$config_file_write)
{
echo $error;
}else{
echo $success.'<a href="install.php?do=install">ادامه نصب --></a>';
}
}