Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过MySQL实现PHP自动验证_Php_Mysql - Fatal编程技术网

通过MySQL实现PHP自动验证

通过MySQL实现PHP自动验证,php,mysql,Php,Mysql,我在登录验证方面有一些问题。连接运行得很好,但总是显示其他回声。。表单中的用户名和密码名称正确 <?php $host="localhost"; // Host name $username="root"; // Mysql username $password="root"; // Mysql password $db_name="login"; // Database name $tbl_name="users"; // Table name // Connect to serv

我在登录验证方面有一些问题。连接运行得很好,但总是显示其他回声。。表单中的用户名和密码名称正确

 <?php

$host="localhost"; // Host name
$username="root"; // Mysql username
$password="root"; // Mysql password
$db_name="login"; // Database name
$tbl_name="users"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form
$myusername=$_POST['codiceF'];
$mypassword=$_POST['codiceA'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql = "SELECT * FROM '$tbl_name' WHERE 'id' = '$myusername' and 'cf' = '$mypassword'";
$result = mysql_query($sql);

$values = mysql_fetch_assoc($result);
$num_rows = $values['total'];

// If result matched $myusername and $mypassword, table row must be 1 row

if($num_rows==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
header("location:/pages/index.html");
}
else {
echo "Wrong Username or Password";
}
?>

我用mysqli更改mysql功能,无论如何,这不起作用:(


我不确定您所遵循的Dbs结构,但我只是猜测一下

$num_rows = sizeof($values);
而不是您当前编写的代码。 或者,附加

var_dump($values)
用于更好地调试代码。

而不是

$values = mysql_fetch_assoc($result);
$num_rows = $values['total'];
使用

所以你的代码应该是

...
// Connect to server and select databse.
$link = mysqli_connect("$host", "$username", "$password", "$db_name") or die("cannot connect");

...
...
...
$sql = "SELECT * FROM '$tbl_name' WHERE 'id' = '$myusername' and 'cf' = '$mypassword'";
$result = mysqli_query($link, $sql);

$values = mysqli_fetch_assoc($link, $result);
$num_rows = mysqli_num_rows($link, $result);

// If result matched $myusername and $mypassword, table row must be 1 row

if($num_rows==1){
...

我知道这不是您真正的问题,但请使用
mysqli
函数而不是
mysql
。后者不安全,过时,很快将从PHP的未来版本中删除。您有很多语法错误,并且使用了不推荐使用的会话函数。检查错误将发出信号those@Arkoudino很抱歉什么是mysqli?我是一个初学者…@Arkoudinos好吧…我发现了;)不管怎样,现在似乎是一些连接错误。谢谢你。为什么初学者会尝试编写安全软件?他们很少能把事情做对,结果只会鼓励编剧小子和其他更为愚蠢的网络罪犯。请看这个。请发布var_dump($values)
NULL的输出错误的用户名或密码
我刚才看到上面的一条评论,您发现了。您的问题是否已解决或仍存在一些问题。如果是,请尝试使用正确的用户名和密码,然后给我一个$values转储和正在执行的最终查询否,它还不起作用..建议?我不明白怎么了!当您发布正确的用户名和密码时,在此处回显$sql查询您确定您的查询是正确的吗?尝试回显
$sql
并在MySQL控制台上运行它,然后在那里发布结果错误,PHP警告:mysqli_num_rows()期望参数1为mysqli_result,给定布尔值-我不知道要修复什么..我已经编辑了我的答案。您的代码使用的是
mysqli_stmt_num_rows
,而您发布的警告显示的是
mysqli_num_rows
。谢谢,无论如何有两个错误:1)PHP警告:mysqli_fetch_assoc()期望参数1是mysqli_结果,布尔给定2)PHP警告:mysqli_num_rows()期望参数1是mysqli_结果,布尔给定,我看到了,您需要保存mysqli\u connect返回的链接,并将其用作剩余mysqli\u*函数中的参数。最新答案
$num_rows = mysql_num_rows($result);
...
// Connect to server and select databse.
$link = mysqli_connect("$host", "$username", "$password", "$db_name") or die("cannot connect");

...
...
...
$sql = "SELECT * FROM '$tbl_name' WHERE 'id' = '$myusername' and 'cf' = '$mypassword'";
$result = mysqli_query($link, $sql);

$values = mysqli_fetch_assoc($link, $result);
$num_rows = mysqli_num_rows($link, $result);

// If result matched $myusername and $mypassword, table row must be 1 row

if($num_rows==1){
...