English 中文(简体)
Mysql实际转义字符串和普通字符串
原标题:
  • 时间:2009-02-16 10:03:28
  •  标签:

我正在使用Flash AS3、PHP和MySQL。

什么是以下两者的区别:

$username =      $_POST[ username ];
$password = md5( $_POST[ password ]);

$username = mysql_real_escape_string(     $_POST[ username ]);
$password = mysql_real_escape_string(md5( $_POST[ password ]));

I am sending 和 retrieving variables from flash AS3 to php 和 back to AS3 again. The former one (without mysql_real_escape_string) works fine. But the later one gets an error in flash. The error message is: "Parameter text must be non-null."

我尝试用“echo”(显示)来显示两个结果,结果是相同的。非常奇怪。有没有人有任何想法?

最佳回答

请记住,mysql_real_escape_string()需要一个打开的数据库连接才能正常工作;如果在使用mysql_connect之前调用它,它将无法产生预期的效果。

问题回答

如果您要在查询中使用字符串,然后由mysql_query函数执行,您只需要使用mysql_real_escape_string。此外,如果您无法确保该字符串不包含可能破坏您拟定查询的完整性的某些字符,则只需要此函数。

为了更清晰地表明其他答案的正确性:

I may be fine to use your first version, if you want to pass this variable to flash. It WON T be ok to use your first version, if you want to use this variable in a database query.

意义:

好的

<param name="FlashVars" 
value="vGetData=./your/path/yourData.php?params=<?php echo $username; ?>" />

不好。

$query = "SELECT something FROM users WHERE username=".$username;

我假设你先授权用户,然后再将数据发送到闪存中。如果是这样的话,似乎没有问题。对吗?

错误信息是帮助你的。请阅读它们。

错误信息是: "参数文本必须非空。"

这似乎表明您的用户名或密码字符串为空,mysql_real_escape_string或(更有可能的是)您的md5 函数拒绝接受空字符串作为输入。首先测试空字符串,然后应该没问题。

此外,MD5哈希仅包含字母数字字符,几乎可以在任何地方安全使用。您不需要通过mysql_real_escape_string来传递它们,因为哈希处理过程已经对输入进行了清理。

第一个表格将会正好做您想要的事情:获取提交的数值和 MD5 到您的变量中。

第二个表格还将转义任何存在的“危险”字符。尝试使用包含引号的用户名,您会明白的。





相关问题
热门标签