As3& PHP URLEncoding问题!

时间:2010-05-30 07:55:13

标签: php mysql flash actionscript-3

我遇到了一个愚蠢的编码问题。

我的问题是我所有突出的字符都显示为奇怪的iso字符。

示例:é显示%E9

我将一个字符串发送到我的php文件:

XMLLoader.load(new URLRequest(online+"/query.php?Query=" + q));
XMLLoader.addEventListener(Event.COMPLETE,XMLLoaded);

当我追踪q时,我得到:

  

“INSERT INTO hello_world(消息)   值( 'EAAA');“

GOOD查询

我的php文件看起来像这样:

<?php 

include("conection.php");//Conectiong to database

$Q = $_GET['Query'];

$query = $Q;
$resultID = mysql_query($query) or die("Could not execute or probably SQL statement malformed (error): ". mysql_error());

$xml_output = "<?xml version=\"1.0\"?>\n"; // XML header
$xml_output .= "<answers>\n";

$xml_output .= "<lastID id=".'"'.mysql_insert_id().'"'." />\n";

$xml_output .= "<query string=".'"'.$query.'"'." />\n";

$xml_output .= "</answers>";

echo $xml_output;//Output the XML

?>

当我将XML恢复到flash时,$ query看起来像这样:

  

“INSERT INTO hello_world(消息)   值( '%E9%E0a%E0');“

然后这些值会显示在我的数据库中,这很烦人。

任何帮助将不胜感激!欢呼声。

JK _

4 个答案:

答案 0 :(得分:1)

urldecode将完成这项工作。

在旁注中,发送类似的查询是非常不良做法。发送必要的数据,过滤它然后构造查询,除非你正在构建一个phpMyAdmin的克隆。

答案 1 :(得分:0)

flash可能正在请求带有编码参数/查询字符串的网址,因此请使用urlencode在php中对其进行解码。

$ Q = urldecode($ _ GET ['Query']);

答案 2 :(得分:0)

我的问题现在解决了!

正如上面的 andr 所述,使用GET发送查询真是个坏主意。

当我使用以下命令从Flash发送数据时

XMLLoader.load(new URLRequest(online+"/query.php?Query=" + q));

网址已经过编码,即使使用urldecode,我的数据库中也有一个空白条目。

感谢 andr raz-l ,我改变了将数据发送到php文件的方式。

在flash中我使用URLVariables,在PHP中我构建了我的查询:

variables = new URLVariables();
variables.Query = "éàûï ceci est un test...";
request.method = URLRequestMethod.POST;         
request.data = variables;
XMLLoader.load(request);

我的php文件看起来像这样:

$Q = mysql_real_escape_string($_POST['Query']);
$query = "INSERT INTO hello_world (message) values ('".$Q."')";

JK _

答案 3 :(得分:0)

$ q = mysql_real_escape_string(urldecode($ _ GET ['Query']));