我开始开发一个分页系统,所以我需要在我的网址中获取一些数字,但我有 一个问题。
我有一个项目根文件夹“project”,在我的文件夹中:
要访问我的主页,我使用此网址:localhost / project /
现在我试图通过以下代码获取我在URL中传递的数字:
$page = $url[1];
$page = ($page ? $page : 1);
echo '<h1>'.$page.'</h1>';
问题是,
如果我使用此代码获取我在“categories.php”文件中传递URL的数字,如下所示:“htttp:// localhost / projet / categories / 2” - &gt;它工作正常,我得到“2”的回声,我有我的categories.php文件包括,但有一个问题,我有一些图像我的categories.php文件,如果我使用localhost /项目/类别我有我的图像包括正确,但如果我使用localhost / project / categories / test-1我可以获得值,我传递了我的网址,我的类别页面已包含但我的图像不显示,图像只显示在localhost / project / categories。
如果我使用此代码来获取我在“index.php”文件中传递URL的数字,就像这样“htttp:// localhost / project / 2”我得到了我的页面404错误“tpl / 404.php “,我包含在我的getHome()函数中。
你看到了某种方式,使用我的函数getHome(),我如何获取我在url中传递的数字,使用例如localhost / project / 3,并且正常包含我的index.php文件,并且没有我的404页面tpl / 404.php'包括在内? 以及如何通过我的类别页面解决图像问题?
这是我的函数getHome()
function getHome(){
$url = $_GET['url'];
$url = explode('/', $url);
$url[0] = ($url[0] == NULL ? 'index' : $url[0]);
if(file_exists('tpl/'.$url[0].'.php'))
{
require_once('tpl/'.$url[0].'.php');
}
else
{
require_once('tpl/404.php');
}
}
这是我的.htaccess文件:
RewriteEngine OnRewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1
此外,如果我在我的URL中使用索引,如下所示:htttp:// localhost / projet / index / 2,它可以工作,我可以获取我的网址值“2”并且我正确包含了我的主页。但是我试着只使用我的htttp:// localhost / project / 2来获取我传递的值,在这种情况下,我的主页是“2”而不是我的404错误页面。
答案 0 :(得分:1)
尝试使用array_pop
获取网址的最后一个值,然后选中is_numeric
function getHome(){
$url = (isset($_GET['url'])) ? $_GET['url'] : $_SERVER['REQUEST_URI'];
$url = explode('/', $url);
$template = $url[0] == NULL ? 'index' : $url[0];
$last = array_pop($url);
$page = (is_numerica($last)) ? $last : 1;
if ($template == 'index') {
return $page;
}
if(file_exists("tpl/$template.php")) {
require_once("tpl/$template.php");
} else {
require_once('tpl/404.php');
}
}
$page = getHome(); // $page is used in index.php