【发布时间】:2014-01-11 16:56:25
【问题描述】:
我是 PHP 新手,但我喜欢创建一个脚本来检查电子邮件是否在我的 MySQL 数据库中,数据库名称是 "Fily_Registrations",表是“用户”,值称为 "email"。所以基本上如果我的数据库中存在电子邮件"hi@all.com",并且我调用像"http://path/to/php.php?email=hi@all.com" 这样的php 脚本,它应该回显"YES",如果它不存在,它应该回显"NO"。
这就是我现在的状态,但它总是回响“不”:
<?php
$email = $_GET["email"];
$DataBase = "Fily_Registrations";
mysql_connect("server", "username", "password") or die(mysql_error());
mysql_select_db($DataBase) or die(mysql_error());
$string = sprintf("SELECT '$DataBase' FROM users WHERE email = '$email'");
$query = msql_query($string);
if($query == false) {
echo("No");
} else {
echo("Yes");
}
?>
有谁知道如何解决这个问题?
【问题讨论】:
-
可能是 mysql_num_rows($query) 并检查它是否为 0 则没有其他数据?
-
代码很容易受到攻击。这里有多个攻击向量:您使用不带参数的
sprintf()并将用户定义的值插入到查询中而不转义它们。 -
您的查询语法似乎有问题。它应该是 SELECT [column_name] FROM [table_name] WHERE [condition] 而不是 SELECT [db_name] FROM [table_name] WHERE [condition]