一直在查看stackoverflow的答案或提示,但没有找到我要找的东西,似乎大多数是关于sql的东西。 无论如何,我的网站使用动态链接,所以主索引具有所有的HTML内容,然后内容框是唯一根据我的页面文件夹中的php文件更改的内容。
我可以访问php页面,但我想要做的是从pages文件夹内的目录中访问php页面。
大多数页面使用此链接,这只是pages文件夹中的about.php 的index.php?页=约
但是如何链接此页面文件夹中的其他目录?让我说我的目录联系人里面有index.php所以/contact/index.php我该如何链接到那个?
这是我到目前为止我的网站内容区域的代码,一位朋友多年前为我写了这封代码,我现在无法联系他获取帮助。
<?php
function open_page($string){
if (preg_match("/^[a-zA-Z]+$/", $string)){
$string = $string;
}else{
$string = "";
}
return $string;
}
$page = open_page($_GET['page']);
if ($page){
$file = "pages/".$page.".php";
if (file_exists($file)){
$pagename = $page;
}else{
$pagename = "404";
}
include("pages/".$pagename.".php");
}else{
echo 'ADD CONTENT HERE';
}
?>
答案 0 :(得分:1)
创建链接时,您可以使用
index.php?page=<?php echo urlencode('contact/index'); ?>
并在您的代码中替换
$page = urldecode($_GET['page']);
答案 1 :(得分:0)
它的编码方式我认为您无法通过以下方式访问该文件:
的index.php?页=接触/索引
因为表达式不匹配:&#34; /&#34;。你可以修改表达式来添加它,但它相对简单。
preg_match("/^[a-zA-Z\/]+$/", $string)
我不确定它的安全含义,但我觉得不应该是一个问题,但只是它的一些东西让我感到不安。我会考虑为子文件夹添加特殊规则和/或重新构造glob()函数周围的代码,这看起来更安全。
答案 2 :(得分:0)
很高兴在这里提供帮助。首先,如果您知道链接“contact / *”需要放在您的页面上,我假设您事先知道您的目录结构。如果没有,那么我想你只需阅读目录并返回页面列表中的所有可用链接(也许是菜单)。
所以,如果我理解并且真的理解你,给你一个提示而不是一个完整的答案,因为我不能指望在不知道你的最终目的的情况下写出确切的程序,我会改变以下内容:
if (file_exists($file)){
$pagename = $page; .....
到
if (file_exists($file)){
$pagename = $page;
// $page exists. I will assume you have a folder by the same name in this case
$dir = scandir(__FILE__ . "/" . $page . "/"); // just double check I have the direcotry path correct. this should return array with the '..' & '.' locations plus other scripts. it is not recursive
//scan through the $dir var printing out the relevant html anchor links, for example
echo "<a href='" . $page . "/" . $dir[position_from_your_loop_as_you_scan] . "'></a>";
//or attach the above to a variable for ouputting to page/console later
以上只是粗略的代码,但我希望你能得到这个想法并且有足够的时间继续下去。
或者,查看php的glob()函数。
顺便说一下,你正在使用动态包含。虽然在您的情况下,它似乎并不重要,但仍然是对您的输入进行消毒的良好做法。我会换掉
$page = open_page($_GET['page']);
类似
$page = open_page(filter_var($_GET['page'], **FILTER_SANITIZE_CONSTANT**));
在此处http://php.net/manual/en/filter.filters.sanitize.php查找您使用的可用过滤器常量。
使用php isset()方法检查您所在的$ _GET变量(在本例中为“page”)是否存在也是一种好习惯,如果不存在或有效则执行其他操作。