“我正在使用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']));
我正在从flash AS3发送和检索变量到php并再次返回AS3。前一个(没有mysql_real_escape_string)工作正常。但后者在flash中出错。错误消息是:“参数文本必须为非null。”
我试过“回声”(显示)两个结果,结果是一样的。很奇怪..任何人都有任何想法?答案 0 :(得分:3)
请记住,mysql_real_escape_string()需要一个开放的数据库连接才能正常工作;如果你在使用mysql_connect之前调用它,它将没有所需的效果。
答案 1 :(得分:2)
如果要在mysql_real_escape_string
函数执行的查询中使用字符串,则只需要mysql_query
。此外,如果您无法确保此字符串不包含某些可能违反您预期查询完整性的字符,则只需要此功能。
答案 2 :(得分:2)
为了更清楚地说明对方回答正确的状态:
如果您想将此变量传递给flash,我可以使用您的第一个版本。 如果要在数据库查询中使用此变量,则无法使用第一个版本。
含义:
确定强>
<param name="FlashVars"
value="vGetData=./your/path/yourData.php?params=<?php echo $username; ?>" />
不行
$query = "SELECT something FROM users WHERE username=".$username;
我假设您首先授权用户,然后将数据发送到闪存。如果是这样,似乎没有问题。正确?
答案 3 :(得分:2)
错误消息可以帮助您。阅读它们。
错误消息为:“参数文本必须为非空。”
这似乎表明您的用户名或密码字符串为空(空)和mysql_real_escape_string
或(更有可能)您的md5
函数拒绝接受空字符串作为输入。首先测试一个空字符串,你应该没问题。
此外,MD5哈希仅包含字母数字字符,所有这些字符都可以安全地在任何地方使用。您无需通过mysql_real_escape_string
传递它们,因为哈希过程已经清理了输入。
答案 4 :(得分:0)
第一个表单将完全按照您的想法执行:将提交的值和MD5放入变量中。
如果存在任何“危险”字符,第二种形式也将逃脱。尝试使用包含引号的用户名,你就可以得到它。