फ़ाइलें पढ़ें और लिखें, घटनाओं को लॉग करें, अपलोड को सुरक्षित रूप से स्वीकार करें, और अपने डेटा को JSON के रूप में संग्रहीत करें।
इस पाठ को Kodokon में खोलेंकिसी फ़ाइल को पढ़ने के लिए एक ही फ़ंक्शन लगता है: file_get_contents() पूरी सामग्री को एक स्ट्रिंग के रूप में लौटाता है, file() इसे लाइनों के एक ऐरे में विभाजित करता है। पढ़ने से पहले, is_readable() से पहुँच की जाँच करें: एक टूटा हुआ पथ एक चेतावनी के साथ false लौटाएगा।
<?php
declare(strict_types=1);
$path = __DIR__ . '/notes.txt';
if (!is_readable($path)) {
exit("File not found or unreadable.");
}
$content = (string) file_get_contents($path);
echo nl2br(htmlspecialchars($content, ENT_QUOTES));
$lines = file(
$path,
FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES
);
echo count($lines) . " non-empty line(s)";लिखने के लिए, file_put_contents() डिफ़ॉल्ट रूप से पूरी सामग्री को बदल देता है। दो फ़्लैग चीज़ें बदल देते हैं: FILE_APPEND अधिलेखित करने के बजाय अंत में जोड़ता है, LOCK_EX एक विशिष्ट लॉक लगाता है ताकि दो एक साथ आने वाली रिक्वेस्ट अपने लेखन को न मिलाएँ। यही एक न्यूनतम एप्लिकेशन लॉग की विधि है।
<?php
declare(strict_types=1);
$logFile = __DIR__ . '/app.log';
$line = sprintf(
"[%s] New order from %s\n",
date('Y-m-d H:i:s'),
'alice@example.com'
);
file_put_contents(
$logFile,
$line,
FILE_APPEND | LOCK_EX
);
echo "Event logged.";फ़ाइल अपलोड विशेष सावधानी के योग्य हैं। फ़ॉर्म को enctype="multipart/form-data" घोषित करना चाहिए, फिर PHP प्राप्त फ़ाइल का वर्णन $_FILES में करता है। हर चीज़ को सत्यापित करें: त्रुटि कोड, आकार, और finfo द्वारा पहचाना गया वास्तविक टाइप - कभी भी एक्सटेंशन या ब्राउज़र द्वारा घोषित टाइप को नहीं। अंत में, केवल move_uploaded_file() को ही अस्थायी फ़ाइल को स्थानांतरित करना चाहिए।
<?php
declare(strict_types=1);
$maxSize = 2 * 1024 * 1024;
$file = $_FILES['avatar'] ?? null;
if ($file === null || $file['error'] !== UPLOAD_ERR_OK) {
exit("No valid file received.");
}
if ($file['size'] > $maxSize) {
exit("File too large (2 MB max).");
}
$info = new finfo(FILEINFO_MIME_TYPE);
$mime = $info->file($file['tmp_name']);
$allowed = ['image/jpeg' => 'jpg', 'image/png' => 'png'];
if (!isset($allowed[$mime])) {
exit("Format not allowed.");
}
$name = bin2hex(random_bytes(8));
$target = __DIR__ . '/uploads/' . $name
. '.' . $allowed[$mime];
move_uploaded_file($file['tmp_name'], $target);
echo "Image saved.";JSON प्रारूप PHP और बाकी दुनिया के बीच एक स्वाभाविक सेतु है: json_encode() किसी ऐरे को क्रमबद्ध करता है, json_decode() इसका उल्टा करता है। साहचर्य ऐरे पाने के लिए दूसरे आर्गुमेंट के रूप में true पास करें, और विकृत JSON को एक खामोश null के बजाय एक स्पष्ट अपवाद में बदलने के लिए JSON_THROW_ON_ERROR फ़्लैग पास करें।
<?php
declare(strict_types=1);
$path = __DIR__ . '/tasks.json';
$json = is_readable($path)
? (string) file_get_contents($path)
: '[]';
$tasks = json_decode(
$json,
true,
512,
JSON_THROW_ON_ERROR
);
$tasks[] = [
'title' => 'Review the lesson',
'done' => false,
];
file_put_contents(
$path,
json_encode(
$tasks,
JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE
),
LOCK_EX
);
echo count($tasks) . " task(s) saved";