我正在尝试创建一个Login,但每次我输入我的凭据并点击Login,我都会得到"没有选择数据库" 这是我的PHP代码
def
错误在哪里?
亲切的问候 新手
答案 0 :(得分:1)
您忘记将变量$ con作为链接参数传递。
mysql_select_db('database', $con) or die(mysql_error());
答案 1 :(得分:0)
使用pdo来防止sql注入。
你弄错了
mysql_select_db('database', $con) or die(mysql_error());
Mysql
在php7中不可用。您可以使用mysqli或pdo。
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
答案 2 :(得分:0)
我真的建议你使用类,方法,最重要的是 PDO 。
使用" unescaped"由于SQL注入,mysqli非常不安全和易受攻击。
此外,在将密码存储到数据库中时,使用PHP函数password_hash($password, PASSWORD_DEFAULT)
对它们进行哈希处理;这将生成一个可以存储在数据库中的哈希字符串。
使用PDO和password_hash()
以及password_verify()
验证密码的SignIn将如下所示:
类数据库(DB)(db.php)
class DB {
private $error;
private $db;
function Conn()
{
try {
$this->db = new PDO('mysql:host=localhost;dbname=phplogin;', 'adminuser', 'adminuser'); //second adminuser is password
return $this->db; //Returns PDO object
}
catch(PDOException $ex){
return $ex->getMessage();
}
}
}
您的login.php (login.php)
require_once('db.php');
$db = new DB(); //Create instance of DB class
$conn = $db->Conn(); //Call Conn() method of DB class
$username = $_POST["user"];
$password = $_POST["pass"];
$statement = $conn->prepare("SELECT * FROM phplogin where userName = :user");
$statement->execute(array(":user"=>$username)); //For :user in SQL query it enters the username you entered in the login form (bind param)
$row = $statement->fetch(); //Returns the row from DB
//password_verify() checks if the password you've enteres matches the hash in the DB
//$row["pass"] is the hash you get returned from the SQL query aboth
if(password_verify($password, $row["pass"])){
return true; //Or echo "success"
}
else{
return false; //Or echo "Wrong username/password"
}
我希望我能帮助你:)。