我有一个简单的用户注册表单和外部连接脚本,但有一些奇怪的结果。 页面register.php显示表单正常,但似乎在表单之前显示我的整个连接字符串? 然后抛出与我的连接变量'$ dbcon'相关的错误(我已经评论了发生这种情况的行)这是我的register.php代码:
<?php
session_start();
require "connect.php";
if (isset($_SESSION['username'])){
header("location: members.php");
}
if (isset($_POST['submit']))
{
$user = $_POST['user'];
$pass = $_POST['pass'];
$rpass = $_POST['rpass'];
$fname = $_POST['fname'];
$lname = $_POST['lname'];
if ($user == "" || $pass == "" || $rpass == "")
{
echo "Please fill all fields";
}
else
{
if ($pass != $rpass)
{
echo "Passwords do not match";
}
else
{
//This is where the errors are found
$query = mysqli_query($dbcon, "SELECT * FROM users WHERE username = '$user' ") or die ("Cannot query table");
$row = mysqli_num_rows($query);
if($row == 1)
{
echo "This username is already taken";
}
else
{
$add = mysqli_query($dbcon, "INSERT INTO users (id, firstname, lastname, username, password, admin) VALUES
(null, '$fname', '$lname', '$user', '$pass', '$admin') ") or die ("Cant insert data");
echo "Successfully added user!";
}
}
}
}
?>
这是我的连接文件'connect.php'($ dbcon字符串是打印出来的?)
$server = 'localhost';
$user = 'root';
$pass = '';
$dbname = 'bodgett';
$dbcon = mysqli_connect($server, $user, $pass, $dbname)or die("Can not connect to Server.");
具体来说,错误是'注意:未定义的变量:C:\ webserver ... \ register2.php中的dbcon' 任何人都可以建议为什么不识别这个变量?
答案 0 :(得分:2)
可能是错误的文件名(也许文件不叫connect.php)或文件扩展名错误? (html而不是.php)
我刚刚复制了所有代码,它对我有用。我还没有看到php启动和关闭标签。
答案 1 :(得分:1)
我同意@Xatenev。此外,您可能需要考虑将PDO用于数据库交互,这是最安全的方式。我发现这非常有用:http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
很抱歉,如果这似乎无关紧要,只是想提供帮助。
答案 2 :(得分:0)
检查是否启用了mysqli扩展
生成$ dbcon的代码是在类中还是在某个函数内部? 如果是,也许您需要返回或正确调用它。
答案 3 :(得分:0)
连接文件'connect.php'未包含在标签内,因此无法使用,并解释了为什么文本只是在页面顶部打印出来。