IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Erreur dans header('location: PHP, Guillemet ou pas
Options
Mayol
posté 1 Apr 2018, 10:42
Message #1


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 005
Inscrit : 7 Sep 2003
Lieu : Monsempron-Libos (47)
Membre no 9 439



Bonjour.
Je tourne en rond et ne peux résoudre mon problème.
En cherchent sur le Net je n'arrive pas non plus à comprendre,
car beaucoup de réponses ne correspondent pas du tout à mon cas (ex. accès à admin dans certains cms).
Bon, bref je m'explique :
Sur un "header('location:" j'ai cette erreur :
Header may not contain more than a single header, new line detected in...
Je remplace donc les guillemets " par un ' apostrophe simple.
Et là quand j'appelle mes variables (GET) sur la page suivante, j'ai un résultat qui me donne
le nom de la variable : par ex $nom et pas son contenu "Tartempion".
Exemple :
CODE
header("location:+locataire_aspect_du_cartouche.php?creation_ou_modification_locataire=$creation_ou_modification_locataire&qualite=$qualite&nom=$nom&prenom=$prenom&tel_portable=$tel_portable&tel_fixe=$tel_fixe&email=$email&adresse_courrier_envoi_differente=$adresse_courrier_envoi_differente&ligne_1_ets_qualite_nom_prenom=$ligne_1_ets_qualite_nom_prenom&ligne_2_adresse_1=$ligne_2_adresse_1&ligne_3_adresse_2=$ligne_3_adresse_2&ligne_4_adresse_3=$ligne_4_adresse_3&ligne_5_code_postal_ville=$ligne_5_code_postal_ville&infos_locataire=$infos_locataire&remarques_pour_sci=$remarques_pour_sci");

Et en retour :
CODE
$nom=($_GET["nom"]);
echo ("nom ==> ".$nom."<br />");

Me donne :
nom ==> $nom
et pas Tartempion.
Je ne m'en sort pas.
(J'ai même fait varier le nombre de variables transmises. Ce n'est pas mieux).
Au secours, si quelqu'un pouvait me sortir de cette "ornière" ?
Merci aux bonnes volontés.


--------------------
iMac 27" (Mojave 10.14.1) - PowerMac G4-1.250 Ghz Bi (Tiger-Pour Classic- & Leopard) - IMac G5 20"-2 Ghz (Tiger-Pour Classic- & Leopard)- IMac G5 Intel Core i5 27"-2.66GHz (Snow Leopard [10.6.7] & Os 9.03 [Par SheepShaver]).
Imprimantes : Epson EPL6100 (Pour les travaux administratifs) - Xanté AW1200 (pour les stabis A3) - Xerox DC12 et Xerox DC242 (Pour la production)
Avez-vous pensé à ce que nous deviendrions sans macbidouille.com ?

Non au langage SMS sur internet !
Go to the top of the page
 
+Quote Post
No6
posté 1 Apr 2018, 12:09
Message #2


Oui ?
*****

Groupe : Membres
Messages : 3 889
Inscrit : 24 Jun 2003
Lieu : BZH
Membre no 8 224



ton truc est illisible;
Faut aussi penser au jour ou il faudra peut-être apporter un changement à ton code, et que cela ne sera pas forcément toi-même;
ou si, ce sera toi-même et tu te dira que cette manière de coder est une plaie.
Code
$Url = $location."locataire_aspect_du_cartouche.php";
$Url +=  "&qualite='".$qualite;
$Url +=  "&nom='.$nom;
$Url +=  "&prenom='.$prenom;

...
header($Url );


La, tu perd au moins 3 fois ton temps
la première fois pour composer cette ligne sans fin qui va forcement avoir des erreurs d'écritures
le seconde fois pour retrouver ou ce trouvent ces erreurs d'écriture
la troisième fois quand tu devra reprendre ton code en cas du moindre problème, pour vérifier si l'erreur trouvée y est liée ou non

et toutes les fois suivantes ou tu devra examiner ce code, en cas de maintenance.

Ce message a été modifié par No6 - 1 Apr 2018, 21:38.


--------------------
"Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas sûr que vous réalisiez que ce que vous avez entendu n'est pas ce que je pense."
(Alan Greenspan)
Go to the top of the page
 
+Quote Post
Mayol
posté 1 Apr 2018, 13:17
Message #3


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 005
Inscrit : 7 Sep 2003
Lieu : Monsempron-Libos (47)
Membre no 9 439



Ah. Merci.
Oui, j'ai commencer le PHP il y a très longtemps (j'ai 67 ans)
Mais tout seul en néophyte.
Je continue à faire grossir mon programme en le compliquant bien sûr de plus en plus.
Je ne connaissais pas cette façon de faire 'une transmission de variables".
Pourtant mon système a toujours fonctionné et Dieu sait si je l'ai employé.
Bref.
Par contre je ne comprends pas trop ton code :
Je travaille sur TestWrangler et il m'affiche ce code avec des notifications d'erreur (Couleurs Verte et Rouge)
Je penses que c'est dû aux " et ' mal placés.
Peux-tu regarder ?
Désolé, je ne comprends pas ta méthode (que j'aimerais bien adopter suivant tes conseils)
J'ai les erreurs :
- Undefined variable: location (Sur la Ligne 1)
OU (ET)
- A non-numeric value encountered (Sur la ligne 2)
- OU
- syntax error, unexpected '=' (Sur l'avant dernière, celle du prénom, mais là je suppose que tu ne l'a pas écrite comme étant la dernière avant de lancer le header de l'Url)
Encore merci de t'intéresser à "mon cas".

Ce message a été modifié par Mayol - 1 Apr 2018, 13:55.


--------------------
iMac 27" (Mojave 10.14.1) - PowerMac G4-1.250 Ghz Bi (Tiger-Pour Classic- & Leopard) - IMac G5 20"-2 Ghz (Tiger-Pour Classic- & Leopard)- IMac G5 Intel Core i5 27"-2.66GHz (Snow Leopard [10.6.7] & Os 9.03 [Par SheepShaver]).
Imprimantes : Epson EPL6100 (Pour les travaux administratifs) - Xanté AW1200 (pour les stabis A3) - Xerox DC12 et Xerox DC242 (Pour la production)
Avez-vous pensé à ce que nous deviendrions sans macbidouille.com ?

Non au langage SMS sur internet !
Go to the top of the page
 
+Quote Post
hellomorld
posté 1 Apr 2018, 17:33
Message #4


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 5 734
Inscrit : 31 Oct 2003
Membre no 11 118



Ca fait beaucoup d'informations à passer en GET, informations qui peuvent contenir des caractères qui posent problèmes dans l'URL (sauf si tu encodes le contenu de tes variables avant). Le problème doit venir de là, une de tes variable contient un quote ou autre caractère
Pourquoi ne pas utiliser le POST ?


--------------------
Go to the top of the page
 
+Quote Post
Mayol
posté 1 Apr 2018, 17:43
Message #5


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 005
Inscrit : 7 Sep 2003
Lieu : Monsempron-Libos (47)
Membre no 9 439



Bonjour.
Ah !
La solution de No6 me parait aussi sujette à erreur.
Cela fait 15 lignes au lieu d'une. Et ça ne me parait pas moins sujet à erreur ni moins lisible.
Peux-tu m'expliquer la tienne ?
Je croyais que le POST ne s'employer qu'en formulaire pour transmettre sur la même page et le GET de page à page différante.
Pourquoi le POST serait plus fiable quand on a "un camion" de variables à transmettre ?
Et, quant à faire, tu m'expliques le système d'encodage des données pour les transmettre ?
Merci.


--------------------
iMac 27" (Mojave 10.14.1) - PowerMac G4-1.250 Ghz Bi (Tiger-Pour Classic- & Leopard) - IMac G5 20"-2 Ghz (Tiger-Pour Classic- & Leopard)- IMac G5 Intel Core i5 27"-2.66GHz (Snow Leopard [10.6.7] & Os 9.03 [Par SheepShaver]).
Imprimantes : Epson EPL6100 (Pour les travaux administratifs) - Xanté AW1200 (pour les stabis A3) - Xerox DC12 et Xerox DC242 (Pour la production)
Avez-vous pensé à ce que nous deviendrions sans macbidouille.com ?

Non au langage SMS sur internet !
Go to the top of the page
 
+Quote Post
hellomorld
posté 1 Apr 2018, 18:52
Message #6


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 5 734
Inscrit : 31 Oct 2003
Membre no 11 118



POST permet d'envoyer des données sur une autre page, c'est même fait pour, le gros avantage par rapport à GET c'est que les données ne transitent pas en clair dans l'URL (un utilisateur lambda ne peut donc pas les modifier, un "hacker" novice oui, mais c'est déjà une petite sécurité en plus) et qu'il n'y a pas besoin donc de les encoder pour cela.

Pour encoder tes données il suffit d'utiliser la commande php :
Code
$Url = urlencode($Url);
juste avant ta commande header.

Après si tu dois envoyer des données sur une page, on peut aussi le faire avec les sessions, sans utiliser de formulaire.

Sinon No6 a tout à fait raison, même si le code est plus long, il sera plus facile à débuguer puisque on aura le numéro de ligne où se trouve l'erreur.

Ce message a été modifié par hellomorld - 1 Apr 2018, 18:53.


--------------------
Go to the top of the page
 
+Quote Post
No6
posté 1 Apr 2018, 22:55
Message #7


Oui ?
*****

Groupe : Membres
Messages : 3 889
Inscrit : 24 Jun 2003
Lieu : BZH
Membre no 8 224



Citation (Mayol @ 1 Apr 2018, 14:17) *
Ah. Merci.
Oui, j'ai commencer le PHP il y a très longtemps (j'ai 67 ans)
Mais tout seul en néophyte.
Je continue à faire grossir mon programme en le compliquant bien sûr de plus en plus.
Je ne connaissais pas cette façon de faire 'une transmission de variables".
Pourtant mon système a toujours fonctionné et Dieu sait si je l'ai employé.

heu, c'est impossible, le Langage PHP n’existait pas il y à 67ans tongue.gif
Mais bon, le fait que tu puisse si tu faire grossir un programme depuis si longtemps à quelque chose de vraiment effrayant ! biggrin.gif biggrin.gif


Citation (Mayol @ 1 Apr 2018, 14:17) *
Par contre je ne comprends pas trop ton code :
Je travaille sur TestWrangler et il m'affiche ce code avec des notifications d'erreur (Couleurs Verte et Rouge)
Je penses que c'est dû aux " et ' mal placés.


TextWrangler... ça me laisse rêveur.
Je comprends qu'il puisse être difficile de changer ses habitudes, mais tu devrai essayer d'utiliser VisualStudioCode => https://code.visualstudio.com/

quand à cette méthode de programmer, j'aurais bien aimé être celui qui l'ai inventée, et je ne pense pas non plus que ce soit une méthode vraiment récente emot_012.gif

ta ligne comporte 594 caracteres, tout de même.

sur les tout premiers serveurs qu'on utilisai sous l'antiquité, celui de Ramsés 2 avait fixé la limite à 256 caractères maximum, et ta requête aurai subi les foudres d' Amenhotep.
puis Zeus à fait passer cette limite à 2k, et aujourd'hui on en est à 8k, mais qui sait, comme une requête peut passer de serveurs en serveur, il peut y en avoir un dans le lot qu'on aurai oublié de remplacer bikoze de la malédiction de la momie ?


sinon à force de faire du JavaScript je me suis trompé dans mon code précédent. en php on utilise " .= "
ce qui au final devient :
Code
<?php
$url = "location:locataire_aspect_du_cartouche.php";
$url .= "?creation_ou_modification_locataire=".$creation_ou_modification_locataire;
$url .= "&qualite=".$qualite;
$url .= "&nom=".$nom;
$url .= "&prenom=".$prenom;
$url .= "&tel_portable=".$tel_portable;
$url .= "&tel_fixe=".$tel_fixe;
$url .= "&email=".$email;
$url .= "&adresse_courrier_envoi_differente=".$adresse_courrier_envoi_differente;
$url .= "&ligne_1_ets_qualite_nom_prenom=".$ligne_1_ets_qualite_nom_prenom;
$url .= "&ligne_2_adresse_1=".$ligne_2_adresse_1;
$url .= "&ligne_3_adresse_2=".$ligne_3_adresse_2;
$url .= "&ligne_4_adresse_3=".$ligne_4_adresse_3;
$url .= "&ligne_5_code_postal_ville=".$ligne_5_code_postal_ville;
$url .= "&infos_locataire=".$infos_locataire;
$url .= "&remarques_pour_sci=".$remarques_pour_sci;

header(urlencode($url));
?>


En suivant bien sur le très bon conseil de hellomorld qui permet de régler différents problèmes, comme le cas de la présence d'un espace dans l'une de tes 17 variables.

PS: à un moment je me suis demandé si je n'aurais pas mieux fait d'écrire ma réponse sur une seule et même ligne de plus de 3 milles caractères ici, ce qui bien sur serait devenue très très longue, mais j'imagine que cela ne t’aurai posé aucun problème de compréhension et même de pouvoir y corriger aisément toutes fautes orthographique qui me sont malheureusement complètement inhérentes, et ce, malgré une pratique assidue de la lecture qui n'arrivera sans doute jamais à venir à bout de la méthode globale dont on m'a gratifié dès mon plus jeune age, et qui me jouent toujours de sales tours, surtout pour le mots nouveaux dont l'aspect 'global" peut ressembler à d'autres mots qui me sont eux familiers, et qui arrivent parfois à me faire perdre le fil de ma pensée de mon être simple, mais perturbé à la fois...

Ce message a été modifié par No6 - 1 Apr 2018, 22:57.


--------------------
"Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas sûr que vous réalisiez que ce que vous avez entendu n'est pas ce que je pense."
(Alan Greenspan)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 21st November 2019 - 11:13