Nypam
Nypam

Reputation: 1498

As3 & PHP URLEncoding problem!

I'm stuck with a stupid problem of encoding.

My problem is that all my accentuated characters are displayed as weird iso characters.

Example : é is displayed %E9

I send a string to my php file :

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

When I trace q, I get :

"INSERT INTO hello_world (message) values('éàaà');"

The GOOD query

My php file look like this :

<?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

?>

When I get back my XML into flash the $query looks like this :

"INSERT INTO hello_world (message) values('%E9%E0a%E0');"

And these values are then displayed into my DB which is annoying.

Any help would be appreciated! Cheers.

Jk_

Upvotes: 1

Views: 1533

Answers (4)

Daniele Cruciani
Daniele Cruciani

Reputation: 623

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

Upvotes: 0

Nypam
Nypam

Reputation: 1498

My problem is now solved!

As andr wrote down above, it's really a bad idea to use GET to send a queries.

It seems that when I sent the data from Flash using :

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

the URL was encoded and even with urldecode I got a blank entry in my DB.

So thanks to andr and raz-l I changed the way I send the data to my php file.

In flash I use URLVariables and in PHP I build my query:

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

And my php file looks like this :

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

Jk_

Upvotes: 0

Andrew
Andrew

Reputation: 1203

urldecode will do the job.

On the side note, it is very bad practice to send queries like that. Send the necessary data, filter it and then construct the query, unless you're building a clone of phpMyAdmin.

Upvotes: 1

KoolKabin
KoolKabin

Reputation: 17683

flash may be requesting the url with encoded parameter/querystring so decode it in php using urlencode.

i.e

$Q = urldecode($_GET['Query']);

Upvotes: 0

Related Questions