le sujet a certainement été débatu des millions de fois mais je ne trouve
pas de solution.
je voudrais poster un formulaire vers une page php qui s'occupe de le
valider, faire les traitements, et rediriger vers une autre page PHP en cas
de succes ou vers la page input en cas d'erreur.
donc j'ai un formulaire en POST.
une page php qui récupère les paramètres, et les teste.
si c'est pas ok, je pose un message d'erreur en session et je redirige vers
la page input sans oublier de poser les données du formulaire en parametre,
histoire que ca ne vide pas mon forumaire à chaque retour.
ca donne ca dans checkForm.php:
if(!is_null(erreur)) {
Header("Location: demandeCompte.php?nom=".$nom."&prenom=".$prenom);exit;
}
le formulaire ressemble à ca:
<input type=text name="nom" value="<?=$nom?>">
seul pb, dans mon formulaire, on peut poster des caractères chiants, genre
apostrophe ou &.
et dans ce cas, dans mon input, j'obtiens /// devant mon apostrophe (!!!).
si je rawurlencode($nom) dans mon url et rawurldecode($nom) dans mon form
ca ne change rien pour les apostrophes, mais pour le reste c'est bon.
comment gérer les apostrophes proprement, sans les interdire bien sur ???
rien à voir avec des requetes SQL, donc addslashes() ne m'est d'aucune
utilité.
y a-t-il un autre moyen de faire une redirection en php ou de poser des
paramètres sur une requete http ?
Je vais avoir le meme pb dans bcp de formulaires, et je voudrais éviter de
mettre les données des formulaires en session (ce qui je pense résoudrait
mon pb)
je suis bien d'accord, mais pour pouvoir les réafficher dans le formulaire je suis obligé de les stripslasher( selon magic_quotes) et de le htmlentitiser. ce qui est normal et logique.
Ou apprendre a se servir des magic quote...
merci, c'est bien de répéter ce que je viens de dire :-))) (j'avais précisé *selon magic_quotes*) perso, je mets pas à off, je préfère tester sa valeur. c'est plus propre et portable.
Guillaume Bouchard wrote:
je suis bien d'accord, mais pour pouvoir les réafficher dans le
formulaire je suis obligé de les stripslasher( selon magic_quotes)
et de le htmlentitiser. ce qui est normal et logique.
Ou apprendre a se servir des magic quote...
merci, c'est bien de répéter ce que je viens de dire :-)))
(j'avais précisé *selon magic_quotes*)
perso, je mets pas à off, je préfère tester sa valeur. c'est plus propre et
portable.
je suis bien d'accord, mais pour pouvoir les réafficher dans le formulaire je suis obligé de les stripslasher( selon magic_quotes) et de le htmlentitiser. ce qui est normal et logique.
Ou apprendre a se servir des magic quote...
merci, c'est bien de répéter ce que je viens de dire :-))) (j'avais précisé *selon magic_quotes*) perso, je mets pas à off, je préfère tester sa valeur. c'est plus propre et portable.
Marc
Lionel wrote:
Bonjour,
le sujet a certainement été débatu des millions de fois mais je ne trouve pas de solution.
je voudrais poster un formulaire vers une page php qui s'occupe de le valider, faire les traitements, et rediriger vers une autre page PHP en cas de succes ou vers la page input en cas d'erreur. donc j'ai un formulaire en POST. une page php qui récupère les paramètres, et les teste. si c'est pas ok, je pose un message d'erreur en session et je redirige vers la page input sans oublier de poser les données du formulaire en parametre, histoire que ca ne vide pas mon forumaire à chaque retour.
ton probleme, c'est que tu ne fait pas tous les traitements dans le meme script.
tu ferais mieux d'organiser ton script ainsi :
<?php
$input = $_REQUEST['input'];
// on affiche systématiquement le formulaire - on peut aussi faire autrement ;-) display_form($input);
if(!check_input($input)){ // blabla } else { // traitement OK. // re blablabla }
exit(0);
function display_form(&$input){ }
function check_input(&$input){ }
pour finir, avec un modele un peu plus objet, il doit etre possible de faire plus générique. Dans ce cas, il faut :
- une classe Page - une classe pour chaque types de composants du formulaire HTML. - probablement un classe Formulaire
tu aura une agregation :
Page / Formulaire / Element+
c'est l'un des defaut majeurs de PHP et du modele CGI, c'est qu'il n'est pas tres difficile de faire des pages et qq formulaires sans bricoler enormement. Du coup, un modele propre et plus rationnel tarde a venir, bien que ca existe deja. Mais le debutant met plus de 12 mois avant de s'en rendre compte.
Lionel wrote:
Bonjour,
le sujet a certainement été débatu des millions de fois mais je ne trouve
pas de solution.
je voudrais poster un formulaire vers une page php qui s'occupe de le
valider, faire les traitements, et rediriger vers une autre page PHP en cas
de succes ou vers la page input en cas d'erreur.
donc j'ai un formulaire en POST.
une page php qui récupère les paramètres, et les teste.
si c'est pas ok, je pose un message d'erreur en session et je redirige vers
la page input sans oublier de poser les données du formulaire en parametre,
histoire que ca ne vide pas mon forumaire à chaque retour.
ton probleme, c'est que tu ne fait pas tous les traitements dans le meme
script.
tu ferais mieux d'organiser ton script ainsi :
<?php
$input = $_REQUEST['input'];
// on affiche systématiquement le formulaire - on peut aussi faire autrement ;-)
display_form($input);
if(!check_input($input)){
// blabla
} else {
// traitement OK.
// re blablabla
}
exit(0);
function display_form(&$input){
}
function check_input(&$input){
}
pour finir, avec un modele un peu plus objet, il doit
etre possible de faire plus générique. Dans ce cas,
il faut :
- une classe Page
- une classe pour chaque types de composants du formulaire HTML.
- probablement un classe Formulaire
tu aura une agregation :
Page / Formulaire / Element+
c'est l'un des defaut majeurs de PHP et du modele CGI, c'est qu'il n'est
pas tres difficile de faire des pages et qq formulaires sans bricoler
enormement. Du coup, un modele propre et plus rationnel tarde a venir,
bien que ca existe deja. Mais le debutant met plus de 12 mois avant
de s'en rendre compte.
le sujet a certainement été débatu des millions de fois mais je ne trouve pas de solution.
je voudrais poster un formulaire vers une page php qui s'occupe de le valider, faire les traitements, et rediriger vers une autre page PHP en cas de succes ou vers la page input en cas d'erreur. donc j'ai un formulaire en POST. une page php qui récupère les paramètres, et les teste. si c'est pas ok, je pose un message d'erreur en session et je redirige vers la page input sans oublier de poser les données du formulaire en parametre, histoire que ca ne vide pas mon forumaire à chaque retour.
ton probleme, c'est que tu ne fait pas tous les traitements dans le meme script.
tu ferais mieux d'organiser ton script ainsi :
<?php
$input = $_REQUEST['input'];
// on affiche systématiquement le formulaire - on peut aussi faire autrement ;-) display_form($input);
if(!check_input($input)){ // blabla } else { // traitement OK. // re blablabla }
exit(0);
function display_form(&$input){ }
function check_input(&$input){ }
pour finir, avec un modele un peu plus objet, il doit etre possible de faire plus générique. Dans ce cas, il faut :
- une classe Page - une classe pour chaque types de composants du formulaire HTML. - probablement un classe Formulaire
tu aura une agregation :
Page / Formulaire / Element+
c'est l'un des defaut majeurs de PHP et du modele CGI, c'est qu'il n'est pas tres difficile de faire des pages et qq formulaires sans bricoler enormement. Du coup, un modele propre et plus rationnel tarde a venir, bien que ca existe deja. Mais le debutant met plus de 12 mois avant de s'en rendre compte.
Lionel
Marc wrote:
ton probleme, c'est que tu ne fait pas tous les traitements dans le meme script.
c'est volontaire. mais le pb venait du header() au lieu de include()
tu ferais mieux d'organiser ton script ainsi :
hors de question de tout mélanger ainsi :-) Un script php pour l'affichage, 1 script pour la validation. je veux bien simplifier au maximum mais j'impose cette règle élémentaire de propreté.
pour finir, avec un modele un peu plus objet, il doit etre possible de faire plus générique. Dans ce cas, il faut : - une classe Page - une classe pour chaque types de composants du formulaire HTML. - probablement un classe Formulaire
heu...là tu te compliques trop la vie :-). Si j'avais voulu faire "beau", j'aurais fait en jsp. j'ai choisi php pour des raisons de cout de dév, de découverte et surtout d'hébergement.
c'est l'un des defaut majeurs de PHP et du modele CGI, c'est qu'il n'est pas tres difficile de faire des pages et qq formulaires sans bricoler enormement.
es tu sur de vouloir dire ca et pas l'inverse ? le fait qu'il soit facile de faire des pages sans bricoler est plutot un avantage, non ? doit y avoir une négation non désirée dans ta phrase :-)
j'ai trouvé ca tres facile de faire qq pages et qq formulaires, avec sgbd et gestion des messages d'erreur et sessions. c'est meme impressionnant de voir la vitesse à laquelle on développe en PHP. mais quand on veut essayer de faire propre et réutilisable que ca demande un peu plus de réflexion (et c'est normal)
Marc wrote:
ton probleme, c'est que tu ne fait pas tous les traitements dans le
meme script.
c'est volontaire.
mais le pb venait du header() au lieu de include()
tu ferais mieux d'organiser ton script ainsi :
hors de question de tout mélanger ainsi :-)
Un script php pour l'affichage, 1 script pour la validation.
je veux bien simplifier au maximum mais j'impose cette règle élémentaire de
propreté.
pour finir, avec un modele un peu plus objet, il doit
etre possible de faire plus générique. Dans ce cas,
il faut :
- une classe Page
- une classe pour chaque types de composants du formulaire HTML.
- probablement un classe Formulaire
heu...là tu te compliques trop la vie :-).
Si j'avais voulu faire "beau", j'aurais fait en jsp.
j'ai choisi php pour des raisons de cout de dév, de découverte et surtout
d'hébergement.
c'est l'un des defaut majeurs de PHP et du modele CGI, c'est qu'il
n'est
pas tres difficile de faire des pages et qq formulaires sans bricoler
enormement.
es tu sur de vouloir dire ca et pas l'inverse ?
le fait qu'il soit facile de faire des pages sans bricoler est plutot un
avantage, non ?
doit y avoir une négation non désirée dans ta phrase :-)
j'ai trouvé ca tres facile de faire qq pages et qq formulaires, avec sgbd et
gestion des messages d'erreur et sessions.
c'est meme impressionnant de voir la vitesse à laquelle on développe en PHP.
mais quand on veut essayer de faire propre et réutilisable que ca demande un
peu plus de réflexion (et c'est normal)
ton probleme, c'est que tu ne fait pas tous les traitements dans le meme script.
c'est volontaire. mais le pb venait du header() au lieu de include()
tu ferais mieux d'organiser ton script ainsi :
hors de question de tout mélanger ainsi :-) Un script php pour l'affichage, 1 script pour la validation. je veux bien simplifier au maximum mais j'impose cette règle élémentaire de propreté.
pour finir, avec un modele un peu plus objet, il doit etre possible de faire plus générique. Dans ce cas, il faut : - une classe Page - une classe pour chaque types de composants du formulaire HTML. - probablement un classe Formulaire
heu...là tu te compliques trop la vie :-). Si j'avais voulu faire "beau", j'aurais fait en jsp. j'ai choisi php pour des raisons de cout de dév, de découverte et surtout d'hébergement.
c'est l'un des defaut majeurs de PHP et du modele CGI, c'est qu'il n'est pas tres difficile de faire des pages et qq formulaires sans bricoler enormement.
es tu sur de vouloir dire ca et pas l'inverse ? le fait qu'il soit facile de faire des pages sans bricoler est plutot un avantage, non ? doit y avoir une négation non désirée dans ta phrase :-)
j'ai trouvé ca tres facile de faire qq pages et qq formulaires, avec sgbd et gestion des messages d'erreur et sessions. c'est meme impressionnant de voir la vitesse à laquelle on développe en PHP. mais quand on veut essayer de faire propre et réutilisable que ca demande un peu plus de réflexion (et c'est normal)
Marc
hors de question de tout mélanger ainsi :-) Un script php pour l'affichage, 1 script pour la validation. je veux bien simplifier au maximum mais j'impose cette règle élémentaire de propreté.
ca te regarde. mais je ne vois pas ce que ca apporte a part defactoriser et les ennuis que tu rencontres.
heu...là tu te compliques trop la vie :-). Si j'avais voulu faire "beau", j'aurais fait en jsp.
on peut faire aussi joli en php, il y a deja quelque bibliothèque et tu peu aussi t'organiser toi meme avec une grosse dixaine de classes. bien sur ca ne rivalisera pas les JEE.
j'ai choisi php pour des raisons de cout de dév, de découverte et surtout d'hébergement.
c'est l'un des defaut majeurs de PHP et du modele CGI, c'est qu'il n'est pas tres difficile de faire des pages et qq formulaires sans bricoler enormement.
es tu sur de vouloir dire ca et pas l'inverse ? le fait qu'il soit facile de faire des pages sans bricoler est plutot un avantage, non ? doit y avoir une négation non désirée dans ta phrase :-)
non, je maintient.
il est tellement facile de faire un peu de bidouille et de bricolage de tres bas niveau, que la plus part des debutant s'en contente, et n'atteindront jamais l'equivalent des JSP, JEE et autre bibliotheque graphique bien lechées, ayant une conception bien objet.
du coup, il faut ecrire et re-ecrire systematiquement certainement portion de code, du genre : est-ce que mon formulaire a recu des données. Il serait plus intéressant d'ecrire une fonction qui est appelée des que le formulaire a été activé, avec le contexte qui va bien, du genre (facon callback des IHM):
function activate($event, $userdata){ switch($event.action){ case 'valider': .... }
if($event.input['nom'] == ''){ ... } }
hors de question de tout mélanger ainsi :-)
Un script php pour l'affichage, 1 script pour la validation.
je veux bien simplifier au maximum mais j'impose cette règle élémentaire de
propreté.
ca te regarde. mais je ne vois pas ce que ca apporte
a part defactoriser et les ennuis que tu rencontres.
heu...là tu te compliques trop la vie :-).
Si j'avais voulu faire "beau", j'aurais fait en jsp.
on peut faire aussi joli en php, il y a deja quelque bibliothèque
et tu peu aussi t'organiser toi meme avec une grosse dixaine de classes.
bien sur ca ne rivalisera pas les JEE.
j'ai choisi php pour des raisons de cout de dév, de découverte et surtout
d'hébergement.
c'est l'un des defaut majeurs de PHP et du modele CGI, c'est qu'il
n'est
pas tres difficile de faire des pages et qq formulaires sans bricoler
enormement.
es tu sur de vouloir dire ca et pas l'inverse ?
le fait qu'il soit facile de faire des pages sans bricoler est plutot un
avantage, non ?
doit y avoir une négation non désirée dans ta phrase :-)
non, je maintient.
il est tellement facile de faire un peu de bidouille et de bricolage
de tres bas niveau, que la plus part des debutant s'en contente, et
n'atteindront jamais l'equivalent des JSP, JEE et autre bibliotheque
graphique bien lechées, ayant une conception bien objet.
du coup, il faut ecrire et re-ecrire systematiquement certainement
portion de code, du genre : est-ce que mon formulaire a recu des
données. Il serait plus intéressant d'ecrire une fonction qui
est appelée des que le formulaire a été activé, avec le contexte
qui va bien, du genre (facon callback des IHM):
function activate($event, $userdata){
switch($event.action){
case 'valider':
....
}
hors de question de tout mélanger ainsi :-) Un script php pour l'affichage, 1 script pour la validation. je veux bien simplifier au maximum mais j'impose cette règle élémentaire de propreté.
ca te regarde. mais je ne vois pas ce que ca apporte a part defactoriser et les ennuis que tu rencontres.
heu...là tu te compliques trop la vie :-). Si j'avais voulu faire "beau", j'aurais fait en jsp.
on peut faire aussi joli en php, il y a deja quelque bibliothèque et tu peu aussi t'organiser toi meme avec une grosse dixaine de classes. bien sur ca ne rivalisera pas les JEE.
j'ai choisi php pour des raisons de cout de dév, de découverte et surtout d'hébergement.
c'est l'un des defaut majeurs de PHP et du modele CGI, c'est qu'il n'est pas tres difficile de faire des pages et qq formulaires sans bricoler enormement.
es tu sur de vouloir dire ca et pas l'inverse ? le fait qu'il soit facile de faire des pages sans bricoler est plutot un avantage, non ? doit y avoir une négation non désirée dans ta phrase :-)
non, je maintient.
il est tellement facile de faire un peu de bidouille et de bricolage de tres bas niveau, que la plus part des debutant s'en contente, et n'atteindront jamais l'equivalent des JSP, JEE et autre bibliotheque graphique bien lechées, ayant une conception bien objet.
du coup, il faut ecrire et re-ecrire systematiquement certainement portion de code, du genre : est-ce que mon formulaire a recu des données. Il serait plus intéressant d'ecrire une fonction qui est appelée des que le formulaire a été activé, avec le contexte qui va bien, du genre (facon callback des IHM):
function activate($event, $userdata){ switch($event.action){ case 'valider': .... }