Pb avec passage d'une variable contenant 1 lien hypertexte

Petit nouveau ! | 8 Messages

03 nov. 2011, 18:49

Bonjour,

Je viens de passer la journée sur un problème et ne sachant plus comment faire je viens chercher de l'aide ici.

J'ai une page1 dans laquelle se trouve notamment une variable texte affichée sur l'écran et éditable contenant par défaut un voir plusieurs liens hypertexte.
Lorsque l'utilisateur a validé cette page, je fais un lien vers une page2 en y ajoutant les variables nécessaire dont celle contenant le texte.
Sur cette page le texte envoyé doit s'afficher par un simple echo, en figé pour que l'utilisateur voit bien ce qu'il a validé, et il est lui même inséré dans une table servant pour la messagerie interne.
Jusque là rien de bien compliqué sauf que mon texte ne 'affiche pas correctement sur la page2 alors qu'il est ok sur la page1.

Voici des bouts de code pour mieux analyser:

Initialisation de la variable texte dans la page1:

Code : Tout sélectionner

$texte = ' bla bla bla <a href=\'/HUF/Utilisateurs/fiche.php5?joueur='.$value.'&montant='.$montant.'&str_echange='.$str_echange.'\'>'.$prenom.' '.$nom.'</a>';
Affiche de cette variable toujours dans la page1 (affichage OK):

Code : Tout sélectionner

echo nl2br($texte);
Validation et lien vers la page2:

Code : Tout sélectionner

echo '<a href="page2.php5?id_user='.$id_user.'&joueur='.$joueur.'&str_echange='.$str_echange.'&montant='.$montant.'&text='.$texte.'">OK</a>';
Page2, récupération de la variable:

Code : Tout sélectionner

$texte = $_GET['text'];
Page2, affichage de la variable:

Code : Tout sélectionner

echo nl2br(htmlentitites($texte);
J'ai mis ce code afin de voir en html où le problème se trouvait et voici le résultat à l'affichage:
<a href=\'/HUF/Utilisateurs/fiche.php5?joueur=319
il coupe à ce niveau.
J'ai essayé d'utiliser des méthodes d'échappement mais je pense que je tourne autour du pot sans parvenir à mes fins.

J'ai recopié le code à la main car le PC sur lequel il se trouve ne peut pas se connecter et je n'ai pas de clé USB pour le récupérer. J'en ai profité pour le simplifier un peu car dans celui qui est complet je désire rajouter des sauts de ligne \n et tabulations \t. Il me faut donc ajouter des guillemets, de plus je peux avoir un texte à la suite de l'autre $texte = $texte. ...' mais commençons par la base avec un texte et sans mise en forme.

Merci d'avance pour m'aider à afficher correctement ce texte c'est à dire pas en mode html et surtout qu'il soit complet?

Petit nouveau ! | 8 Messages

03 nov. 2011, 19:43

En utilisant var_dump() de ma variable à la réception et à l'envoi, j'ai pu voir que la variable $texte était coupée sur la page2, le problème doit donc venir de l'envoi car là la chaine est complète.
Une idée de la syntaxe correcte pour envoyer la variable en complet?

ViPHP
xTG
ViPHP | 7331 Messages

03 nov. 2011, 20:12

La taille d'une url est limité selon le navigateur. A tout hasard elle fait combien de long la tienne avec la variable ? :)
Sinon pour protéger une variable dans une url tu devrais mieux utiliser url_encode() et url_decode().

Petit nouveau ! | 8 Messages

03 nov. 2011, 22:59

Ah je ne savais pas qu'une url était limitée. Chez moi de mémoire elle s'arrête au caractère 74 et doit en faire le double je te dirais ça précisément demain quand je serais devant mon poste.
Mais mon doute c'est qu'elle s'arrête surtout après la première variable de l'url, n'y a t'il pas un soucis avec les caractères utilisés?

Petit nouveau ! | 8 Messages

04 nov. 2011, 12:00

Finalement j'ai réglé mon problème en changeant de méthode.
Merci pour ta réponse qui m'a permis de partir sur une autre piste, utiliser $_POST et donc un formulaire plutôt que $_GET et le passage de variables directement dans l'URL.

Maintenant j'obtiens toutes mes données dans la page cible et je peux envoyer le message au destinataire dans la messagerie interne.