یک اسکریپت PHP بنویسید که با استفاده از بافر خروجی محتوا را تولید کند، قبل از ارسال هدر Content-Type آن را بازبینی کرده و سپس با ob_get_flush هم محتوا را به مرورگر بفرستد و هم همان محتوا را در یک فایل لاگ ذخیره کند.
0.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:39 0.0
برای حل این سوال از ob_start() برای شروع بافر استفاده کنید، سپس محتوا را echo کنید و قبل از فراخوانی ob_get_flush() هدر مناسب (مثلاً header('Content-Type: text/html; charset=utf-8')) را تنظیم کنید؛ ob_get_flush() محتوای بافر را برمیگرداند و آن را پاک و فلاش میکند، بنابراین میتوانید خروجی بازگشتی را با file_put_contents() یا fopen/fwrite در یک فایل لاگ ذخیره کنید. نکتهها: حتماً ob_start() را قبل از هر خروجی فراخوانی کنید تا بتوانید هدرها را بدون خطا ارسال کنید و از functions مانند headers_sent() برای بررسی ارسال شدن هدرها در زمان توسعه استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای اطمینان از ارسال صحیح هدرها ابتدا بافر خروجی را با استفاده از ob_start() فعال کنید و قبل از هر خروجی بررسی کنید که Headers_sent نشده باشد. سپس محتوا را با echo تولید کنید و قبل از فراخوانی ob_get_flush()، هدر مناسب مانند header('Content-Type: text/html; charset=utf-8') را ارسال کنید. ob_get_flush() هم خروجی را به مرورگر میفرستد و هم آن را از بافر پاک میکند، بنابراین میتوانید همان محتوا را با file_put_contents() یا fwrite در یک فایل لاگ ذخیره کنید. در محیط توسعه مطمئن شوید دسترسی نوشتن به فایل لاگ وجود دارد و در مواقعی که هدرها هنوز ارسال نشدهاند از توابعی مانند headers_sent() استفاده کنید تا خطاهای احتمالی کاهش یابد.
گزارش