意外的PHP警告错误

时间:2011-07-27 01:38:59

标签: php mysql if-statement warnings

这是我在这里的第一篇文章,如果设置有点乱,请道歉。

我正在使用MySQL和PHP处理文章数据库。

我有一个页面,会显示作者的所有文章。我试图在页面顶部使用一些PHP if statements重定向链接,因此用户必须登录(如果尚未登录)。如果用户已经登录(我还没有用于将用户添加到数据库的PHP脚本,正在处理它),重定向将加载表单以提交新文章。

Controller(index.php):

<?php
include_once $_SERVER['DOCUMENT_ROOT'] .
        '/includes/magicquotes.inc.php';
require_once $_SERVER['DOCUMENT_ROOT'] . 
        '/includes/access.inc.php';

if (isset($_GET['add']))
  if (!userIsLoggedIn())
{
      include '/Test/articles/login.html.php';
      exit();
}
  else
{
      include 'form.html.php';
      exit();
}
                        :::PHP code left out for sake of example:::
include 'articles.html.php';
?>

access.inc.php包含用于输入和保留用户名/密码的SESSION()$sql个enrty脚本

userIsLoggedIn()access.inc.php中的函数(自解释)

login.html.php是我的登录表单

form.html.php是提交新文章的实际表单

articles.html.php是显示我数据库中所有文章的页面

我的问题是当我在用户尚未登录时实现if statement链接以重定向到我的登录表单时,我点击时会收到PHP警告,因为我的路径是对/Test/articles/login.html.php更正,我不确定该怎么做。

警告:

Warning: include(/Test/articles/login.html.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\Test\articles\index.php on line 10

Warning: include() [function.include]: Failed opening '/Test/articles/login.html.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\Test\articles\index.php on line 10

请帮忙吗?我完全失去了。

1 个答案:

答案 0 :(得分:1)

$_SERVER['DOCUMENT_ROOT']在确定文件夹结构方面几乎不是一个好的选择,因为它不可靠。

改为使用dirname(__FILE__)

if (!defined('DS')) {
    define('DS', DIRECTORY_SEPARATOR);
}
define('APP_FOLDER', dirname(__FILE__) . DS);

    include_once APP_FOLDER . 'includes/magicquotes.inc.php';
    require_once APP_FOLDER . 'includes/access.inc.php';

if (isset($_GET['addjoke']))
  if (!userIsLoggedIn())
{
      include APP_FOLDER . 'Test/articles/login.html.php';
      exit();
}
  else
{
      include APP_FOLDER . 'form.html.php';
      exit();
}

顺便说一下,你真正的错误是你在测试之前加了一个斜杠(/Test/...),表示你想要访问驻留在网络服务器根级别的文件夹。