如何解决在PHP中的 “未定义变量” 错误

如何解决在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"); 
} 
?> 

我试图找出一些错误。让我知道谢谢。

+0

似乎是一个* variable scope *问题,'login()'不会返回任何东西,所以你创建的'$ con'在那个函数中只有一个局部变量。你应该在函数中返回$ con;',当你调用它时,把它放到一个变量中,比如'$ con = login();' – Qirel

看到这个

mysqli_select_db('$con' 
       ^^

变量没有用单引号得到解析。

要么删除它们,要么使用双重"引号。

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

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

使用准备好的语句。

参考文献:

还要考虑使用password_hash()来存储你的密码:

+0

Sharp * ffffaaabbulous * Eye':)' –

+0

@NanaPartykar * * si signore ;-) –

您在混合本地和全局变量。 $ con在登录功能之外不可用。

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

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

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