如何解决在PHP中的 “未定义变量” 错误
的login.php如何解决在PHP中的 “未定义变量” 错误
<?php
function login()
{
$con = mysqli_connect("localhost", "XXX", "XXX") or die('Could not connect to server');
mysqli_select_db('$con', "store") or die('Could not connect to database');
}
?>
validate.php
线10 - 错误 - 注意:未定义的变量:CON在C:\ WAMP \ WWW \存储\管理员\ validate.php
线10 - 警告:mysqli_query()预计参数1是mysqli的,在C空给出:\瓦帕\ WWW \存储\管理员\ validate.php
号线12 - 警告:mysqli_num_rows()预计参数1被mysqli_result,在C空给出:\ WAMP \ WWW \店\ ADMIN \ validate.php
<?php
session_start();
include ("../mylibrary/login.php");
login();
$userid = $_POST['userid'];
$password = $_POST['password'];
$query = "SELECT userid, name from admins where userid = '$userid' and password = PASSWORD('$password')";
$result = mysqli_query($con, $query); (**Line 10)
if (mysqli_num_rows($result) == 0)(**Line 12)
{
echo "<h5>Sorry, your account was not validated.</h5><br>\n";
echo "<a href=\"admin.php\">Try again</a><br>\n";
} else
{
$_SESSION['store_admin'] = $userid;
header("Location: admin.php");
}
?>
我试图找出一些错误。让我知道谢谢。
看到这个
mysqli_select_db('$con'
^^
变量没有用单引号得到解析。
要么删除它们,要么使用双重"
引号。
注意:确保所有的POST数组都包含值,并且您使用的表单确实使用POST方法,并且元素保存其各自的名称属性。
您也可以在这里打开SQL注入。
使用准备好的语句。
参考文献:
还要考虑使用password_hash()
来存储你的密码:
Sharp * ffffaaabbulous * Eye':)' –
@NanaPartykar * * si signore ;-) –
您在混合本地和全局变量。 $ con在登录功能之外不可用。
如果您将global $con;
添加为登录函数的第一行,那么也可以在函数的外部使用它。
看一看PHP手册:http://php.net/manual/en/language.variables.scope.php
PS:虽然它不是问题的根源,读弗雷德的答案了。
似乎是一个* variable scope *问题,'login()'不会返回任何东西,所以你创建的'$ con'在那个函数中只有一个局部变量。你应该在函数中返回$ con;',当你调用它时,把它放到一个变量中,比如'$ con = login();' – Qirel