如何解决" Undefined变量" php上的错误

时间:2016-08-17 16:13:37

标签: php validation mysqli

的login.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行 - 错误 - 注意:未定义的变量:C:\ wamp \ www \ store \ admin \ validate.php中的con

     

第10行 - 警告:mysqli_query()要求参数1为mysqli,在C:\ wamp \ www \ store \ admin \ validate.php中给出null

     

第12行 - 警告:mysqli_num_rows()期望参数1为mysqli_result,在C:\ wamp \ www \ store \ admin \ validate.php中给出null

<?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");
}
?>

我试图找出问题所在。让我知道谢谢。

2 个答案:

答案 0 :(得分:2)

见这个

mysqli_select_db('$con' 
                 ^    ^

变量不会用单引号解析。

删除它们或使用双"引号。

注意:确保所有POST数组都包含值,并且您正在使用的表单确实使用POST方法,并且元素保存其各自的名称属性。

你也可以在这里打开SQL注入。

使用准备好的陈述。

参考文献:

另请考虑使用password_hash()存储您的密码:

答案 1 :(得分:0)

您正在混合局部变量和全局变量。 登录功能以外无法使用$ con。

如果你将global $con;添加为登录功能的第一行,它也可以在函数外部使用。

查看php手册:http://php.net/manual/en/language.variables.scope.php

PS:虽然它不是问题的根源,但请阅读弗雷德的答案。