我有这个小代码,实际上是一个登录脚本,用于检查寄存器是否打开,并在登录按钮后显示:
<?php
include("../inc/db.php");
if(isset($_POST['user']) && isset($_POST['pass']))
{
$password = $_POST['pass'];
$username = $_POST['user'];
$sql = "SELECT * FROM `users` WHERE `user` = '".$username."' AND `password` = '".$password."'";
$rez = $pdo->query($sql);
if($rez->fetchColumn() > 0)
{
...
}
else {echo '<p align="center">...</p>';}
}
else { echo '<p align="center">...</p>'; }
}
?>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="login">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="user" type="text" id="user"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="pass" type="password" id="pass"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
<?php $sql = "SELECT setare FROM setari WHERE nume_setare = 'OPEN_REG'";
$openreg = $pdo->query($sql)->fetch();
if($openreg['setare'] == 1)
{
?>
<tr>
<td> </td>
<td> </td>
<td><a href="register">Inregistrare</a></td>
</tr><?php } ?>
</table>
</td>
</form>
</tr>
</table>
我的问题是这一行:
包括(&#34; ../ INC / db.php中&#34); 警告:include(E:/wamp/www//inc/db.php):无法打开流:第3行的E:\ wamp \ www \ proiect1-test \ scripts \ login.php中没有此类文件或目录 警告:include():打开失败&#39; ../ inc / db.php&#39;在第3行的E:\ wamp \ www \ proiect1-test \ scripts \ login.php中包含(include_path =&#39;。; C:\ php \ pear&#39;)
我无法弄清楚我错在哪里。路径是正确的,如果我点击登录按钮,它就可以工作。如果我点击了用户名和密码的inccorect组合的登录按钮,警告就会消失。但是,当我第一次打开它时,它并不包括在内。此登录文件包含在站点的索引中。
答案 0 :(得分:2)
您到该文件的路径显然不正确。当您使用文件的相对路径然后开始将文件放在不同的目录中时,通常会发生这种情况。您应该使用文件的完整系统路径来避免此问题:
include("/path/from/root/to/inc/db.php");
常见的事情是定义一个变量或常量,用于定义Web文件的根路径。这样,如果它发生了变化(即你改变主机),你只需要在一个地方改变它。
在您的配置文件中:
define('ROOT_PATH', '/path/from/root/to/');
在PHP文件中;
include(ROOT_PATH . "inc/db.php");