PHP版本5.6.40
目标是通过使用常量和函数使索引页面导航能够分隔包含在以下子目录文件中的页眉和页脚之类的文件,以使站点更新更加容易。
C:\wamp64\www\games_database\index.php
C:\wamp64\www\games_database\php\all_games.php
C:\wamp64\www\games_database\private\footer.php
header.php functions.php initialise.php
C:\wamp64\www\games_database\css\style.css
预期结果:
C:\wamp64\www\games_database\php\all_games.php
实际结果:
The requested URL /games_databasephp/all_games.php was not found on this server.
使用的代码
index.php
<?php
require_once('private/initialise.php');
?>
<?php
include_once(PRIVATE_PATH . '/header.php');
?>
<main>
<p></p>
<p></p>
<p></p>
<p></p>
</main>
<?php
include_once(PRIVATE_PATH . '/footer.php');
?>
initialise.php
<?php
define("PRIVATE_PATH", dirname(__FILE__));
define("PROJECT_PATH", dirname(PRIVATE_PATH));
define("PUBLIC_PATH", PROJECT_PATH . 'php');
define("SHARED_PATH", PRIVATE_PATH . 'private');
$public_end = strpos($_SERVER['SCRIPT_NAME'], '/') + 15;
$doc_root = substr($_SERVER['SCRIPT_NAME'], 0, $public_end);
define("WWW_ROOT", $doc_root);
require_once('functions.php');
?>
all_games.php
<?php
require_once('private/initialise.php');
?>
<?php include_once(PRIVATE_PATH . '/header.php');?>
<main>
<table>
<tr>
<td>Game name </td>
<td> </td>
</tr>
<tr>
<td>Platform </td>
<td> </td>
</tr>
<tr>
<td>Type </td>
<td> </td>
</tr>
<tr>
<td>Released </td>
<td> </td>
</tr>
</table>
</main>
<?php include_once(PRIVATE_PATH . '/footer.php');?>
functions.php
<?PHP
function url_for($script_path){
return WWW_ROOT . $script_path;
}
?>
footer.php
<footer>
<p>© 2019</p>
</footer>
</body>
</html>
header.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Games Database</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="<?php echo url_for('css/style.css'); ?>" rel="stylesheet"
type="text/css">
</head>
<body>
<header>
<h1>Games Database</h1>
</header>
<nav>
<ul>
<li><a href="<?php echo url_for('index.php'); ?>">Games Database</a></li>
<li><a href="">Login/Register</a></li>
<li><a href="<?php echo url_for('php/all_games.php'); ?>">View All Games</a></li>
</ul>
</nav>
使用的方法 -分配给PHP常量的文件路径 -使用 FILE 返回该文件的当前路径 -使用dirname()返回到父目录的路径 -将根网址分配给了PHP常量
我显然不完全了解如何在PHP中完全实现常量和函数,并且我怀疑问题出在initialize.php文件,尤其是本节代码
$public_end = strpos($_SERVER['SCRIPT_NAME'], '/') + 15;
$doc_root = substr($_SERVER['SCRIPT_NAME'], 0, $public_end);
define("WWW_ROOT", $doc_root);
require_once('functions.php');
答案 0 :(得分:0)
我发现我需要在url_for()中放置一个额外的/。我还忽略了将../放在所有返回目录的链接的开头。 我愚蠢地以为,当我设置初始化约束和功能时,就不需要这样做了。
我衷心感谢大家的时间和耐心。