یک اسکریپت 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() برای بررسی ارسال شدن هدرها در زمان توسعه استفاده کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:39
دسته بندی ها: PHP PHP for beginner
arash در 221 روز قبل ساعت 12:28

برای اطمینان از ارسال صحیح هدرها ابتدا بافر خروجی را با استفاده از 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() استفاده کنید تا خطاهای احتمالی کاهش یابد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری