未定义变量:mysql PHP中的名称
如果登录详细信息错误,系统将正确显示登录失败 但如果详细信息正确,系统将在第25行显示C:\Users\Alex\Desktop\OSMAD\8.5\root\Project\test3.php登录失败 这里是PHP文本未定义变量:mysql PHP中的名称,php,mysql,undefined,Php,Mysql,Undefined,如果登录详细信息错误,系统将正确显示登录失败 但如果详细信息正确,系统将在第25行显示C:\Users\Alex\Desktop\OSMAD\8.5\root\Project\test3.php登录失败 这里是PHP文本 <?php $host = "127.0.0.1"; $username = "root"; $password = "usbw"; $dbname = "forum_system"; // Connect to
<?php
$host = "127.0.0.1";
$username = "root";
$password = "usbw";
$dbname = "forum_system";
// Connect to server
$connect = mysql_connect($host, $username, $password)
or die ("Sorry, unable to connect database server");
$dbselect = mysql_select_db($dbname,$connect)
or die ("Sorry, unable to connect database");
$Name = $_POST['Name'];
$Password = $_POST['Password'];
$result = mysql_query("select * from users where name = '$Name' and
password = '$Password'")
or die("Sorry, query failed".mysql_error());
$row = mysql_fetch_array($result);
if ( $row['Name'] == $Name && $row['Password'] == $Password ) {
echo "welcome";
} else {
echo "Fail login";
}
?>
MySQL表的列名是区分大小写的。因此,您应该使用$row['Name']和$row['Password']而不是$row['Name']和$row['Password']。所以这句话:
if ( $row['Name'] == $Name && $row['Password'] == $Password )
应替换为:
if ( $row['name'] == $Name && $row['password'] == $Password )
也可以使用或代替mysql函数。Php 7.0.0中已删除mysql扩展。我建议您阅读,因为您当前的代码容易出现错误,并且由于检查$row['Password']==$Password。使用entry显示您的表结构,也在其中。。。如果password列是索引的一部分,那么SQL中的password='$password'也可能容易受到定时攻击。。因为数据库被设计为尽可能快地返回,尤其是索引。。您需要从name='name'的用户中选择密码,然后选择。。不管列名是否被索引,因为它是安全的。在db中,所有列名看起来都是小写的,在php中,你使用了后一个大写字母,就像SQL注入的美味脚本:P