如果输入了正确的密码,我制作了一个php脚本,其中echo
是一个图像;所以,没有人可以直接访问我服务器上存储的图像,从而使我的服务器更安全。现在,对于php脚本,我使用GET
方法为我的数据库生成mysql_query
,以检查用户输入的电子邮件和密码是否与相关帐户相关联,然后{{1}我服务器上的文件夹中的图像。现在,为了在运行时传递参数,我将它们添加到URL中,如下所示:
echo
但是,整个设置出了问题,我收到了以下错误:
警告:mysql_query()[function.mysql-query]:拒绝用户访问 ' uXXXXXXXXX' @' XX.XX.XX.XX' (使用密码:NO)in 第11行/home/uXXXXXXXXX/public_html/get_image.php
警告:mysql_query()[function.mysql-query]:指向服务器的链接 无法在/home/uXXXXXXXXX/public_html/get_image.php中建立 第11行获取数据时出错:用户拒绝访问 ' uXXXXXXXXX' @' XX.XX.XX.XX' (使用密码:否)
这是我的php脚本,http://<mywebserver>/get_image.php/?email=<email>&password=<password>&file_name=<image-file-name>
:
get_image.php
我同意,stackoverflow上已经有很多其他问题说明了类似的问题。但是,我没有找到适用于我的代码的问题的解决方案。因此,对此的任何帮助将受到高度赞赏。谢谢你的时间!
答案 0 :(得分:0)
在您尝试向其发送查询之前,您似乎无法连接到数据库。
它应该是这样的:
$conn = new mysqli($servername, $username, $password, $dbname);
取自此处的示例: http://www.w3schools.com/php/php_mysql_select.asp
此外,如果您关心,您应该考虑使用PDO或其他一些防止SQL注入攻击的方法。
SQL注入: https://en.wikipedia.org/wiki/SQL_injection
有关PDO的信息: http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
答案 1 :(得分:0)
这是因为您尚未将文件get_image.php
连接到MySQL数据库。请按以下步骤操作:
$host="localhost"; // Host name
$username="username"; // Mysql username
$password="password"; // Mysql password
$db_name="database"; // Database name
$tbl_name="students"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
只需将上述信息替换为正确的信息即可。
答案 2 :(得分:0)
<?php
$db_host = "localhost";
$username = "DB_USER";
$passowrd = "DB_PASS";
$db_name = "DB_NAME";
$conn = new mysqli("$db_host", "$username", "$password", "$db_name");
if($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$file_path = "/ProfilePics/";
if(isset($_GET['email']) && isset($_GET['password']) && isset($_GET['file_name'])) {
$id = "\"" . $_GET['email'] . "\"";
$typed_password = "\"" . $_GET['password'] . "\"";
$file = $_GET['file_name'];
$sql = "SELECT * FROM students WHERE email = $id AND password = $typed_password)";
$result = $conn->query($sql);
if(!empty($result)) {
if (mysql_num_rows($result) > 0) {
$result = mysql_fetch_array($result);
$user = array();
$user["email"] = $result["email"];
$user["password"] = $result["password"];
$pass = "\"" . $user["password"] . "\"";
if($pass == $typed_password) {
$img_path = $file_path . $file;
echo '<img src="' . $img_path . '" name = "cover" />';
} else {
echo "Incorrect password";
}
} else {
echo "Unable to find user";
}
} else {
echo "Unable to find user";
}
} else {
echo "Required field(s) is missing";
}
?>
答案 3 :(得分:0)
首先设置数据库连接:
$con = mysql_connect('server','username','password');
$rst = mysql_query('select...', $con);
请记住,访问mysql的那种库已经过时了。
想象某人使用此密码登录:
password ='“; DROP TABLE学生;'
或更精心制作的东西。
有不同的库,如PDO或MYSQLI,可以为您解决此问题。
在较新版本的php标准中,mysql libis已弃用并已删除