【发布时间】:2015-12-11 14:34:56
【问题描述】:
我对用于网络的 Steam 身份验证器有疑问。如您所知,steam 提供了一个脚本,允许人们通过 steam 数据库连接到您的站点。我的问题是:只要有人的名字中有一个特殊的字符,比如简单的引号,它就会在我的数据库中添加一个空白名称......
这是来自 Steam 的代码:
if($openid->validate()) {
$id = $openid->identity;
$ptn = "/^http:\/\/steamcommunity\.com\/openid\/id\/(7[0-9]{15,25}+)$/";
preg_match($ptn, $id, $matches);
$_SESSION['steamid'] = $matches[1];
$link = mysql_connect("localhost", "", "");
$db_selected = mysql_select_db('', $link);
$query = mysql_query("SELECT * FROM users WHERE steamid='".$_SESSION['steamid']."'");
if (mysql_num_rows($query) == 0) {
mysql_query("INSERT INTO users (steamid) VALUES ('".$_SESSION['steamid']."')") or die("MySQL ERROR: ".mysql_error());
}
if (isset($steamauth['loginpage'])) {
header('Location: '.$steamauth['loginpage']);
}
} else {
echo "User is not logged in.\n";
}
我尝试将其移至 PDO,但甚至无法连接。任何人都有想法将蒸汽名称添加到我的数据库中而没有引号?还是接受它们为 no-mysql ?
我知道mysql中有一个函数,但它不再起作用了(mysql_real_escape_string)
【问题讨论】:
-
你没有选择数据库/模式 - $db_selected = mysql_select_db('', $link); - $db_selected = mysql_select_db('[Schemaname]', $link);
-
@BerndBuffen :只是想隐藏我的数据库名称 ^^ 谢谢你 mapek !所以我应该将 mysqli 与 m_r_e_s 一起使用?
标签: php mysql database quotes steam