Je souhaite envoyer une URL dans une demande POST dans une variable appelée surl
. Comment puis-je l'encoder en JavaScript et le décoder en PHP? Par exemple, la valeur de surl
pourrait être http://www.google.co.in/search?q=javascript+urlencode+w3schools
.
MODIFIER
Désolé, j'ai oublié de mentionner, ce n'est pas une soumission de formulaire mais une requête ajax.
Utilisez encodeURIComponent(uri)
(pour l'encodage) et decodeURIComponent(uri)
pour le décodage,
Par exemple (codage).
var uri="http://w3schools.com/my test.asp?name=ståle&car=saab"; document.write(encodeURIComponent(uri));
Sortie
Http% 3A% 2F% 2Fw3schools.com% 2Fmy% 20test.asp% 3Fname% 3Dst% C3% A5le% 26car% 3Dsaab
Le décodage est laissé au lecteur. 🙂
Source: http://www.w3schools.com/jsref/jsref_encodeURIComponent.asp
Vous n'avez besoin de rien. Envoyez-le comme il se doit. Le navigateur et PHP feront tout en vous échappant et vous déconcertant (si vous utilisez form.surl.value = surl; form.submit()
et $_POST['surl']
). Ou vous pouvez simplement utiliser le formulaire simple sans aucun JavaScript (s'il répond à vos besoins).
Répondant au commentaire de Henasraf. Essaye ça.
<form id="form" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" onsubmit="this.via_js.value=this.via_plain_form.value;"> <input type="hidden" name="via_js"/> <input type="text" name="via_plain_form" value="Paste you url here"/> <input type="submit" name="submit" value="Submit"/> </form> <?php if (isset($_POST['submit'])) { var_export($_POST); } ?>
Pour http://www.google.co.in/search?q=javascript+urlencode+w3schools
, il produit
array ( 'via_js' => 'http://www.google.co.in/search?q=javascript+urlencode+w3schools', 'via_plain_form' => 'http://www.google.co.in/search?q=javascript+urlencode+w3schools', 'submit' => 'Submit', )
Quant à PHP, c'est urlencode()
et urldecode()
.