4

i have to encode an array of email addresses using javascript into json string and send to abc.php using ajax. in abc.php i have to decode it and send emails to all the address into that array.

currently i'm encoding the array into json using

var json_string = JSON.stringify(myarray);

in abc.php i am decoding it using

$emails = json_decode($_POST['json_string']);
// json_string was passed as POST variable using ajax

but it gives NULL when printed..

how can i decode it and access individual emails in the php file

8
  • What does var_dump($_POST['json_string']) give you, or var_dump($_POST) for that matter? Commented Dec 23, 2012 at 8:20
  • print_r gives [\"[email protected]\",\"[email protected]\"] and var_dump (json_decode($_POST['json_string'])) gives null Commented Dec 23, 2012 at 8:22
  • 6
    Looks like magic quotes? Commented Dec 23, 2012 at 8:24
  • It may be helpful to see your actual ajax call. It may be a datatype thing. Commented Dec 23, 2012 at 8:41
  • Yeah, could be magic quotes. Try unescaping the string before decoding. Commented Dec 23, 2012 at 9:27

1 Answer 1

3

If you have access to the php.ini of your webserver, the best thing would be to disable magic_quotes at all, because they are deprecated:

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

If you don't have server access, use a .htaccess file with the following option

php_flag magic_quotes_gpc Off

If you don't want to use that, the last thing that remains is using an unescape function such as

function ref_stripslashes(&$value,$key) {
    $value = stripslashes($value);
}

if((function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc()) || (ini_get('magic_quotes_sybase') && (strtolower(ini_get('magic_quotes_sybase'))!="off")) ) {
    array_walk_recursive($_GET,'ref_stripslashes');
    array_walk_recursive($_POST,'ref_stripslashes');
    array_walk_recursive($_COOKIE,'ref_stripslashes');
}

This was taken from the php manual, Lucifer's comment

json_decode($_POST['json_string']) should then work.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.