我试过了 连接到数据库 与数据库的连接成功,但是当我尝试将用户信息与数据库匹配时,它给我一个错误 没有选择数据库我尝试使用不同的方法连接到数据库,但没有任何效果
<?php
//CREATING CONNECTION TO DATABASE
$con= new mysqli("localhost", "****", "***", "*****");
$con->select_db("lel_server_user_db_secured");
if(mysqli_connect_errno())
{
echo "Problem With connection to database Please contact administrator regarding this error";
}
/* RETURNS NAME OF DEFAULT DATABASE
if ($result = $con->query("SELECT DATABASE()")) {
$row = $result->fetch_row();
printf("Default database is %s.'n", $row[0]);
$result->close();
}
*/
/*
$host="localhost";
$db_user="sky.xpert";
$db_pass="havefun344";
$database="lel_server_user_db_secured";
mysqli_connect($host,$db_user,$db_pass,$database) or die ("Failed to connect");
mysqli_select_db($database) ;
*/
session_start();
//GATHERING DATA FROM USER FORM
$email=$_POST["login"];
$pass=$_POST["pwd"];
//COMMANDING WHERE TO FIND MATCH FOR LGOIN INFORMATION
$veryfy="SELECT * FROM users WHERE Email='$email' Password='$pass'";
$query=mysql_query($veryfy) or die ( mysql_error() );
$match=0;
$match=mysql_num_rows($query);
//IF MATCH FOUND THEN SETTING SESSION AND REDIRECTING IT TO LOGGED PAGE
if($match==1)
{
$_SESSION['loggedin'] = "true";
header ("Location: logged.php"); //REDIRECTING USER TO ITS HOMEPAGE
}
else //IF MATCH NOT FOUND THEN REDIRECTING IT BACK TO LOGIN PAGE
{
$_SESSION['loggedin'] = "false";
header ("Location: index.php");
}
//PERSONAL COMMENTS OR DETIALED COMMENTS
//PROBLEM WITH THIS SCRIPT GIVING OUTPUT ON LOGIN "NO DATABASE SELECTED"
//REFRENCE from http://www.dreamincode.net/forums/topic/52783-basic-login-script-with-php/
?>
您正在使用 mysqli
初始化与数据库的连接。然后,您尝试使用 mysql
执行查询。显然,没有通过该库与数据库建立连接,因此它失败并显示错误。将mysql_query
更改为mysqli_query
。
一般说明
您当前的代码容易受到 sql 注入攻击,因为在将用户输入放入查询之前,您不会对其进行清理。请考虑使用准备好的查询。
数据库lel_server_user_db_secured
可能不存在。
内容到你的 mysql:
mysql -hlocalhost -uusername -p
,然后输入您的密码。登录后,键入命令:
show databases;
检查结果中是否有lel_server_user_db_secured
。
更新1*
更改以下代码:
$veryfy="SELECT * FROM users WHERE Email='$email' Password='$pass'";
$query=mysql_query($veryfy) or die ( mysql_error() );
$match=0;
$match=mysql_num_rows($query);
自:
$veryfy="SELECT * FROM users WHERE Email='$email' Password='$pass'";
$result = mysqli_query($con, $veryfy) or die ( mysqli_connect_errno() );
$match=0;
$match=mysqli_num_rows($result);
var_dump($match);
在程序的前半部分,你使用了mysqli,在后半部分使用了mysql。要么使用 mysqli 要么使用 mysql。我建议在整个程序中使用 mysqli,这样您就不会容易受到 SQL 注入的影响
你可以简单地通过
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
没有必要再做$con->select_db("lel_server_user_db_secured");
使用 Mysqli 并不意味着您的代码是安全的......您的代码仍然容易受到 SQL 注入的影响 改用预准备语句或至少mysqli_real_escape_string
您需要正确转义所有请求
并且您的数据库可能不存在,因此请先检查它是否存在
并且您正在混合不同的 API
您不能将MySQLi
函数与MySQL_*
函数一起使用