php在线阅读实现
PHP 在线阅读实现方法
文件读取与输出
使用 fopen 和 fread 函数读取文件内容,并通过 echo 输出到页面。确保设置正确的 Content-Type 头部,例如对于 PDF 文件使用 application/pdf。
$file = 'example.pdf';
header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename="' . basename($file) . '"');
readfile($file);
使用第三方库 对于复杂格式如 PDF 或 EPUB,可以使用库如 TCPDF 或 FPDF 生成 PDF 文件,或使用 EPUB 解析库来提取内容并显示。
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF();
$pdf->AddPage();
$pdf->Write(0, 'Sample text');
$pdf->Output('example.pdf', 'I');
分页处理
对于长文本,可以使用 substr 或正则表达式分割内容,并通过 URL 参数控制当前页数。
$content = file_get_contents('book.txt');
$pageLength = 1000;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$start = ($page - 1) * $pageLength;
echo substr($content, $start, $pageLength);
浏览器内嵌查看器
使用 <iframe> 或 <embed> 标签直接嵌入文件,适用于支持直接预览的格式如 PDF。
<iframe src="example.pdf" width="100%" height="600px"></iframe>
权限与安全控制
在输出文件前检查用户权限,避免未授权访问。使用 realpath 和 basename 防止目录遍历攻击。
$allowedFiles = ['book1.pdf', 'book2.pdf'];
if (in_array(basename($file), $allowedFiles)) {
readfile($file);
} else {
die('Access denied');
}
缓存与性能优化
对静态内容启用浏览器缓存,减少服务器负载。使用 header 设置缓存控制头。
header('Cache-Control: public, max-age=3600');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 3600) . ' GMT');
移动端适配 使用响应式设计确保阅读界面在不同设备上正常显示。CSS 媒体查询可以调整字体大小和布局。

@media (max-width: 600px) {
.reader-container {
font-size: 14px;
padding: 10px;
}
}
以上方法可根据具体需求组合使用,实现不同复杂度的在线阅读功能。






