我想問一下 我有欄位叫做email和passwrod
$email = $_POST['email']; $password = $_POST['password']; $login = mysql_query("SELECT * FROM `users` JOIN `users_profile` USING (id) WHERE `email` = '".$email."' AND `password` = '".$password."' OR `username` = '".$email."' AND `password` = '".$password."'
以上是我的登入語法假設使用者輸入email或密碼對 則登入成功:
`email` = '".$email."' AND `password` = '".$password."'
但是若使用者輸入用戶名(username)和密碼也符合也能登入
`username` = '".$email."' AND `password` = '".$password."'
只是以上的語法只能夠輸入email和password登入
若輸入username和password登入則會失敗
確定JOIN users_profile並使用id無問題
問題在哪裡?
Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先,你的代码很容易就可以 SQL 注入了,所以请至少使用 mysqli ,个人强烈推荐 PDO。
然后,我个人的思路是,假设前端页面的 form 表单的有类似这样一个 input :
我们这里使用 name="login" 来替换 email 或者 username,然后:
然后 SQL 语句大概是这样 :
再一次强调,你这样的写法很危险。