后台登陆日志,按照需求搜素后,分页功能用不了, 点击下一页,提示“您要找的资源已被删除、已更名或暂时不可用。”
如何处理。谢 谢
搜素后分页功能使用有错误?
以上问题修复 1.在控制器代码中: 把 $page->limit() 改成手动 $offset.','.$pagesize,并新增自定义分页 HTML 构建(用 http_build_query(..., PHP_QUERY_RFC3986) 严格编码所有参数,彻底绕开分页类对带空格/冒号时间参数的编码缺陷) 2.在视图文件中将:$page->getfull() 改为 $page_html,并追加分页样式 3.以下为具体修复代码 // ========== 自定义分页 HTML:解决带时间参数搜索后翻页 404 ========== $total_pages = $total > 0 ? (int)ceil($total / $pagesize) : 1; if ($current_page > $total_pages) $current_page = $total_pages; $page_params = $_GET; unset($page_params['page']); $page_qs = http_build_query($page_params, '', '&', PHP_QUERY_RFC3986); $page_path = isset($_SERVER['REQUEST_URI']) ? strtok($_SERVER['REQUEST_URI'], '?') : ''; if (empty($page_path)) { $page_path = isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : ''; } $mk_page_url = function($p) use ($page_path, $page_qs) { $sep = ($page_qs === '') ? '?' : '?' . $page_qs . '&'; return $page_path . $sep . 'page=' . $p; }; $page_html = ''; if ($total_pages > 1) { if ($current_page > 1) { $page_html .= '<a href="' . htmlspecialchars($mk_page_url(1), ENT_QUOTES, 'UTF-8') . '">首页</a>'; $page_html .= '<a href="' . htmlspecialchars($mk_page_url($current_page - 1), ENT_QUOTES, 'UTF-8') . '">上一页</a>'; } else { $page_html .= '<span class="disabled">首页</span>'; $page_html .= '<span class="disabled">上一页</span>'; } $sp = max(1, $current_page - 3); $ep = min($total_pages, $current_page + 3); for ($i = $sp; $i <= $ep; $i++) { if ($i == $current_page) { $page_html .= '<span class="current">' . $i . '</span>'; } else { $page_html .= '<a href="' . htmlspecialchars($mk_page_url($i), ENT_QUOTES, 'UTF-8') . '">' . $i . '</a>'; } } if ($current_page < $total_pages) { $page_html .= '<a href="' . htmlspecialchars($mk_page_url($current_page + 1), ENT_QUOTES, 'UTF-8') . '">下一页</a>'; $page_html .= '<a href="' . htmlspecialchars($mk_page_url($total_pages), ENT_QUOTES, 'UTF-8') . '">末页</a>'; } else { $page_html .= '<span class="disabled">下一页</span>'; $page_html .= '<span class="disabled">末页</span>'; } }
将搜索栏的开始,结束时间输入框删除,搜索分布功能是正常的,但加入就显示以上错误。
折腾了几天,还是没有发现是哪的问题。
@sxsmlj yzmcms系统这块没有问题,请检查网站服务器配置或检查防火墙
这家伙很懒,什么都没写呢~
以上问题修复 1.在控制器代码中: 把 $page->limit() 改成手动 $offset.','.$pagesize,并新增自定义分页 HTML 构建(用 http_build_query(..., PHP_QUERY_RFC3986) 严格编码所有参数,彻底绕开分页类对带空格/冒号时间参数的编码缺陷) 2.在视图文件中将:$page->getfull() 改为 $page_html,并追加分页样式 3.以下为具体修复代码 // ========== 自定义分页 HTML:解决带时间参数搜索后翻页 404 ========== $total_pages = $total > 0 ? (int)ceil($total / $pagesize) : 1; if ($current_page > $total_pages) $current_page = $total_pages; $page_params = $_GET; unset($page_params['page']); $page_qs = http_build_query($page_params, '', '&', PHP_QUERY_RFC3986); $page_path = isset($_SERVER['REQUEST_URI']) ? strtok($_SERVER['REQUEST_URI'], '?') : ''; if (empty($page_path)) { $page_path = isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : ''; } $mk_page_url = function($p) use ($page_path, $page_qs) { $sep = ($page_qs === '') ? '?' : '?' . $page_qs . '&'; return $page_path . $sep . 'page=' . $p; }; $page_html = ''; if ($total_pages > 1) { if ($current_page > 1) { $page_html .= '<a href="' . htmlspecialchars($mk_page_url(1), ENT_QUOTES, 'UTF-8') . '">首页</a>'; $page_html .= '<a href="' . htmlspecialchars($mk_page_url($current_page - 1), ENT_QUOTES, 'UTF-8') . '">上一页</a>'; } else { $page_html .= '<span class="disabled">首页</span>'; $page_html .= '<span class="disabled">上一页</span>'; } $sp = max(1, $current_page - 3); $ep = min($total_pages, $current_page + 3); for ($i = $sp; $i <= $ep; $i++) { if ($i == $current_page) { $page_html .= '<span class="current">' . $i . '</span>'; } else { $page_html .= '<a href="' . htmlspecialchars($mk_page_url($i), ENT_QUOTES, 'UTF-8') . '">' . $i . '</a>'; } } if ($current_page < $total_pages) { $page_html .= '<a href="' . htmlspecialchars($mk_page_url($current_page + 1), ENT_QUOTES, 'UTF-8') . '">下一页</a>'; $page_html .= '<a href="' . htmlspecialchars($mk_page_url($total_pages), ENT_QUOTES, 'UTF-8') . '">末页</a>'; } else { $page_html .= '<span class="disabled">下一页</span>'; $page_html .= '<span class="disabled">末页</span>'; } }