解决方案:
我使用kcdwayne的测试(使用test.php和register.php)进行了修改,并确定问题在于使用文件名“db.php”。我将其重命名为“datab.php”,它似乎可以在任何使用它的地方工作。有趣。谢谢你的回答!
原帖:
我有一个文件 - checkuser.php
- 从登录表单发送以验证用户的凭据。已提供username
和password
。通过外部文件 - db.php
- 我正在尝试建立与MySQL数据库的连接。设置:
checkuser.php:
session_start();
error_reporting(E_ALL);
ini_set( 'display_errors','1');
require "db.php";
db.php中:
$con = mysqli_connect("server", "user", "pass", "db");
if (mysqli_connect_errno($con)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
...稍后在checkuser.php中:
$username = $_POST['username'];
$password = $_POST['password'];
$sql = mysqli_query($con, "SELECT * FROM userdata WHERE username='$username' AND password='$password' AND activation='true'");
因此,这就是我的问题:
Notice: Undefined variable: con in /path/to/checkuser.php on line 23
checkuser.php
和db.php
位于同一个文件夹中;如果db.php
中的代码本身移入checkuser.php
,则可以轻松建立MySQL连接。
我做错了什么?
checkuser.php:
<?php
session_start();
error_reporting(E_ALL);
ini_set( 'display_errors','1');
require "db.php";
$username = $_POST['username'];
$password = $_POST['password'];
if((!$username) || (!$password)){
echo "<font color='white'>Please enter ALL of the information! <br />";
include 'login.php';
exit();
}
$password = md5($password);
$sql = mysqli_query($con, "SELECT * FROM userdata WHERE username='$username' AND password='$password' AND activation='true'");
$login_check = mysqli_num_rows($sql);
if($login_check > 0) {
while($row = mysqli_fetch_assoc($sql)) {
... set some $_SESSION variables ...
}
}
?>
db.php中:
<?php
$con = mysqli_connect("server", "user", "password", "database");
if (mysqli_connect_errno($con)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
答案 0 :(得分:1)
db.php
included
required
/ checkuser.php
$con
上的变量应该在那里,前提是:
checkuser.php
的范围不在$con
无法访问的区域内。test.php
的范围内。试试这个:
制作名为$var = 'this is my test var';
的文件,并在其中放置
register.php
然后在名为require('test.php');
echo $var;
的同一文件夹中创建一个文件,并仅放置
db.php
如果有效,您的问题可能在范围内,或者只是没有加载{{1}}。