در این جلسه از سری آموزش های php با پردیس وردپرس قصد داریم به فایل ها و کار کردن با آن ها در php بپردازیم.
کار کردن با فایل ها در php
پیاچپی توابع مختلفی برای کار با فایل ها در اختیار ما قرار می دهد. این توابع شامل بازکردن، بستن، ویرایش و نوشتن بر روی فایل می باشد.
تابع fopen
این تابع برای باز کردن یا ایجاد فایل (در صورتی که فایل موجود نباشد) به کار می رود. یعنی فایلی که در آن می نویسیم را اگر موجود باشد باز می کند و در صورتی که فایل موجود نباشد آن را ایجاد می کند.
برای کار با فایل ها باید با سطوح دسترسی آن ها آشنا باشیم. در تمامی توابع کار با فایل ها سطوح دسترسی زیر قابل استفاده است:
- r: باز کردن و فقط خواندن فایل
- w: باز کردن فایل برای نوشتن اطلاعات، محتویات فایل را پاک میکند یا اگر فایل وجود نداشته باشد آن را میسازد.
- a: باز کردن فایل فقط برای نوشتن در آن
- x: ایجاد فایل جدید فقط برای نوشتن در آن
- +r: باز کردن فایل برای نوشتن/خواندن
- +w: باز کردن فایل برای نوشتن/خواندن اطلاعات، محتویات فایل را پاک میکند یا اگر فایل وجود نداشته باشد آن را میسازد.
- +a: باز کردن فایل به منظور نوشتن/خواندن، اگر فایل وجود نداشته باشد آن را ایجاد میکند.
- +x: ایجاد فایل جدید برای خواندن/نوشتن
برای شروع ابتدا نرم افزار سرور مجازی خود را استارت کنید (ومپ یا زمپ). در پوشه اصلی آن (www در ومپ و htdocs در زمپ) یک پوشه جدید به نام files ایجاد کنید. سپس در این پوشه یک فایل جدید به نام testfile.php ایجاد کرده و کد های زیر را در آن قرار دهید:
<?php $myfile = fopen("file.txt", "w"); ?>
بعد از اجرای کد فوق یک فایل جدید به نام file.text در پوشه ای که فایل testfile.php وجود دارد ایجاد می شود.
نوشتن روی فایلها
برای نوشتن اطلاعات در فایلها از تابع fwrite استفاده میکنیم. این تابع دو پارامتر ورودی دارد که پارامتر اول نام فایلی است که قصد نوشتن اطلاعات در آن را داریم و پارامتر دوم متنی است که میخواهیم در فایل نوشته شود. در مثال زیر قصد داریم تا چند نام را در فایل جدیدی به نام names.txt بنویسیم:
<?php //open or create file $myfile = fopen("names.txt", "w"); //now write new names to that file $name1 = "mojtaba\n"; fwrite($myfile, $name1); $name2 = "milad\n"; fwrite($myfile, $name2); $name3 = "masoud\n"; fwrite($myfile, $name3); fclose($myfile); ?>
همانطور که احتمالا متوجه شدهاید در انتهای کد از تابع دیگری به نام fclose استفاده کردهایم. از آنجا که چندبار در کد بالا فایل names.txt را فراخوانی کردهایم، با این تابع در انتهای کار فایل مورد نظر را میبندیم.
نکته دیگری که در مورد کد بالا وجود دارد این است که در انتهای هر نام از کاراکتر n\ استفاده کردهایم. افرادی که با اچتیامال آشنایی داشته باشند قطعا مفهوم این کاراکتر را میدانند. از n\ به منظور ایجاد خط جدید در فایلها استفاده میکنیم. به این ترتیب در فایل names.txt هر نام در یک خط جدید قرار خواهد گرفت.
همانطور که گفتیم تابع ()fclose به منظور بستن یک فایل مورد استفاده قرار میگیرد. این تابع اگر فایل را به درستی و با موفقیت ببندد مقدار true را برمیگرداند و در غیر اینصورت مقدار false برگردانده میشود.
در پروژههای خود بهتر است همیشه پس از کار با فایلها، آنها را با تابع ()fclose ببندید.
افزودن اطلاعات به فایل
برای افزودن اطلاعات جدید به فایل باید آن را در حالت append باز کنید:
<?php $myFile = "test.txt"; $fh = fopen($myFile, "a"); fwrite($fh, "new information to be added test file!"); fclose($fh); ?>
هر موقع یک فایل را در حالت a باز کنید، اطلاعات جدید در آخر فایل اضافه خواهند شد.
حال قصد داریم یک مثال کاربردیتر را ایجاد کنیم. در پوشه files یک فایل به نام add.php ایجاد کنید , کد زیر را در این فایل قرار دهید:
<?php if (isset($_POST['text'])) { $name = $_POST['text'] . "\n"; $handle = fopen ("names.txt", "a"); fwrite($handle, $name); fclose($handle); } ?> <form method="post" action=""> name : <input type="text" name="text" size="20"> <input type="submit" value="add name to file"> </form>
در کد بالا چند نکته مهم وجود دارد. ابتدا به بخش پیاچپی کاری نداشته باشید و فقط فرم را در نظر بگیرید. در کد بالا خاصیت action فرم را خالی گذاشتهایم. در چنین شرایطی اطلاعات این فرم به همین صفحه یعنی فایل add.php ارسال خواهد شد. حال به کد پیاچپی توجه کنید: ابتدا مثل همیشه با یک دستور شرطی if بررسی میکنیم که اگر اطلاعاتی در فیلدی که خاصیت name آن text است وارد شده باشد، فایل names.txt در حالت a باز شود. سپس نام وارد شده به انتهای محتویات فایل باز شده اضافه خواهد شد.
همچنین به خط:
$name = $_POST[‘text’] . “\n”;
در کد بالا توجه کنید. در این خط نام وارد شده توسط کاربر را از فرم دریافت کرده و سپس کاراکتر n\ را به انتهای نام اضافه میکنیم تا پس از اضافه شدن در فایل names.txt یک خط جدید ایجاد شود و نامهای بعدی هر کدام در یک خط جدید در فایل درج شوند.
تا اینجا برای این جلسه کافی است. در قسمت بعدی به ادامه کار با فایل ها و حلقه foreach خواهیم پرداخت.