2010-05-03 16 views
1

J'essaye de produire un lien simple.PHP urlencode() virant sur? SID = xxx ... Pourquoi?

Cela fonctionne très bien:

$url = 'http://www.google.com'; 
echo $url; 

Cela ne fonctionne pas grand:

$url = 'http://www.google.com'; 
echo urlencode($url); 

Le deuxième exemple à la broquettes fin de l'URL pour une raison "SID = xxx?". Comment puis-je empêcher cela?

Remarque: Le code pour générer l'URL a été modifié pour protéger l'innocent.

Répondre

1

Ne pas utiliser urlencode() pour encoder l'URL, vous finirez par une URL comme celui-ci,

http% 3A% 2F% 2Fwww.google.com

Pour PHP, Cela ressemble à une URL relative, de sorte qu'il ajoute SID lorsque le cookie est manquant. Urlencode() doit être utilisé pour coder les paramètres de chaîne de requête mais pas l'URL elle-même.

+0

Voilà l'astuce. C'est un paramètre de requête pour un bouton Facebook. –

1

Ce n'est pas la faute de urlencode(), c'est la réécriture automatique de liens de PHP qui ajoute l'ID de session à travers une variable GET en l'absence d'un cookie de session.

Je crains que cela soit nécessaire pour persister des sessions côté client si les cookies sont désactivés.

Le réglage pour le faire automatiquement est session.use_trans_sid. Plus d'infos here.