【问题标题】:php require_oncephp require_once
【发布时间】:2013-03-27 15:50:43
【问题描述】:

我在第一页“login.php”中有这个

<?php
session_start();
$msg='';
if ((isset($_POST))&& (!empty($_POST)))
{
require_once('log.php') or die(mysql_error());
$p=md5($pass);
if (login($login,$p))
{
    header('location:index.php');;
}
else 
{
    $msg="Login ou mot de passe incorrect";
}
}
?>

log.php:

$req="SELECT * FROM admin WHERE login='$e' and password='$p'";
$res=mysql_query($req) or die(mysql_error()."\n".$req);

if(mysql_num_rows($res)!=0)
{
    $data=mysql_fetch_assoc($res);
    $_SESSION['adm']=array('code'=>$data['code'], 'login'=>$data['login']);
    return true;
    mysql_close();
}
else return false;
}?>

如果我测试第一页“login.php”我得到了这个:

警告:require_once(1):打开流失败:没有这样的文件或 第 6 行 C:\xampp\htdocs\admin\login.php 中的目录

致命错误:require_once():打开失败需要 '1' (include_path='.;C:\xampp\php\PEAR') 在 C:\xampp\htdocs\admin\login.php 在第 6 行

【问题讨论】:

  • 检查您的 log.php 是否在 login.php 所在的同一目录中。还要检查文件权限。
  • 检查文件名和位置是否正确位于给定位置
  • Please, don't use mysql_* functions in new code. 他们不再维护and are officially deprecated。看到 red box 了吗?改为了解 prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。
  • 我检查过了!一切似乎都是正确的!我看不出问题出在哪里!?
  • 这个SELECT * FROM admin WHERE login='$e' and password='$p'允许SQL注入攻击。请阅读它们。尝试在 require_once 之后删除 ` 或 die()`,如果文件不存在,它将导致退出。

标签: php


【解决方案1】:

为了确保你有正确的位置,你可以使用 dirname

dirname(__FILE__) . '/log.php'

Check this out for a documentation and explanation

【讨论】:

    【解决方案2】:

    require_once 不是一个函数。发生的事情是您的 require_once 行的评估如下:

     require_once ( log.php or die() );
    

    这意味着它会尝试打开一个名为 1 的文件。

    在require_once之后不需要使用die,它会失败并自行消亡。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-08
      • 2016-08-31
      • 2013-12-03
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 2014-10-21
      相关资源
      最近更新 更多