JSON_DECODE werkt anders lokaal t.o.v. online ? Wat kan er mis zijn ?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Davy Carmans

Davy Carmans

28/10/2013 09:54:29
Quote Anchor link
Hoi allemaal,

na heel veel tips op het PHP beginners forum, was ik zo fier dat mijn PHP tool er toch al een beetje meer professioneel begon uit te zien. Daarom besloot ik de hele code eens online te gooien op mijn testsite.

Het plezier was echter van korte duur... Ik merkte al snel op mijn berekening pagina dat een stuk code gewoon niet werkt.

Ik stelde me natuurlijk de vraag : "Wat is er aan de hand". Daarom probeerde ik wat met var_dumps en prints en alerts tot een reden te komen. En ik denk de reden gevonden te hebben, maar begrijp niet wat er mis kan zijn.

In een eerste pagina voeg ik wat producten toe aan een array die dan via JSON_DECODE in javascript wordt omgebouwd tot een JSON string. Als ik dan submit doe, dan wordt in de volgende pagina een berekening gestart die deze JSON string gaat evalueren;

Ik merk echter de de string in de berekening pagina er helemaal anders uit ziet op mijn lokale test server (WAMP) en de online test server.

Dit is de inhoud van het veld die door PHP wordt getoond via een $_POST :

LOKAAL
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
string '[{"lengte":"100","hoogte":"10","aantal":"1"}]' (length=45)


ONLINE
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
string(57) "[{\"lengte\":\"100\",\"hoogte\":\"10\",\"aantal\":\"1\"}]"


In de PHP code doe ik dan een JSON_DECODE en dit geeft bij de ONLINE versie problemen.

Heeft iemand ENIG idee wat ik mis doe ? Of iemand die weet of er een server instelling is die hiervoor verantwoordelijk is ?

Ik zou eeuwig dankbaar zijn, want ik zie geen oplossing.

Vriendelijke groeten en alvast bedankt,

Davy
Gewijzigd op 28/10/2013 09:58:22 door Davy Carmans
 
PHP hulp

PHP hulp

17/11/2024 20:24:36
 
Kris Peeters

Kris Peeters

28/10/2013 10:12:08
Quote Anchor link
Kijk eens of je hier mee geholpen bent

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$a
= '[{\"lengte\":\"100\",\"hoogte\":\"10\",\"aantal\":\"1\"}]';
$b = stripslashes($a);
$c = json_decode($b);
var_dump($c);
?>


stripslashes doet zo ongeveer het omgekeerde als de escape() functies.
 
Michael -

Michael -

28/10/2013 10:14:36
Quote Anchor link
Edit:
Ben niet wakker denk ik
Gewijzigd op 28/10/2013 10:20:24 door Michael -
 
Erwin H

Erwin H

28/10/2013 10:26:12
Quote Anchor link
En als extra op wat Kris zegt, check of je magic quotes aanstaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
  echo 'magic quotes staat aan';
}
else {
  echo 'magic quotes staat uit';
}

?>

Als magic quotes aanstaat heb je een probleem..... wat op zich niet is op te lossen, alleen weg te werken via de functie van Kris. Dat is namelijk een php instelling die alleen je hoster kan uitzetten (tenzij je je eigen vps beheert, dan kan je het zelf doen). Dit hele magic quotes is trouwens zo'n slecht idee dat de makers van php het er zelf alweer uit hebben gesloopt sinds php 5.4
 
Davy Carmans

Davy Carmans

28/10/2013 10:49:12
Quote Anchor link
Volgens de code van Erwin staat deze optie op mijn lokale server idd uit en op de server van de hosting staat die aan !

Zal dus al maar beginnen te coderen; Bedankt Kris voor de code ...
 
Erwin H

Erwin H

28/10/2013 10:59:22
Quote Anchor link
Dat is dus inderdaad het verschil, en het probleem. Bedenk dan overigens dat ALLE input op je server automatisch die slashes erbij krijgt. GET, POST, COOKIE, SESSION, ingelezen bestanden, alles. Elke input zal je dus weer moeten ontdoen van de slashes (daar waar van toepassing).
 
Michael -

Michael -

28/10/2013 11:05:13
Quote Anchor link
Davy Carmans op 28/10/2013 10:49:12:
Volgens de code van Erwin staat deze optie op mijn lokale server idd uit en op de server van de hosting staat die aan !

Zal dus al maar beginnen te coderen; Bedankt Kris voor de code ...


Ik zal dit in htaccess uitschakelen ipv in de code te gaan aanpassen. Zoals al was gezegd is dit met PHP 5.4 sowieso er weer uit en dat zegt genoeg.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
#.htaccess
php_flag magic_quotes_gpc Off
 
Erwin H

Erwin H

28/10/2013 11:12:30
Quote Anchor link
Kan je dat via htaccess uitzetten? Dat is ook weer nieuw voor mij, wel een stuk handiger inderdaad als dat het geval is.
 
Michael -

Michael -

28/10/2013 11:21:40
Quote Anchor link
Erwin H op 28/10/2013 11:12:30:
Kan je dat via htaccess uitzetten? Dat is ook weer nieuw voor mij, wel een stuk handiger inderdaad als dat het geval is.

Zelf niet geprobeerd, op mijn server staat het standaard al uit, maar op PHP.net staat een uitleg.
 
Davy Carmans

Davy Carmans

28/10/2013 11:30:17
Quote Anchor link
Michael, ik heb het zo gedaan en zal eens gaan testen seh ! :-) En zo leren we allemaal weer erg veel bij.
 
Erwin H

Erwin H

28/10/2013 12:05:45
Quote Anchor link
Ah, bij mijn weten kon het alleen via de php.ini file (welke op een shared host niet bereikbaar is), maar op php.net staat inderdaad ook een mogelijkheid via htaccess. Interessant, had ik dat maar eerder geweten :-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.