|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2010 Messages : 136 ![]() |
bonjour
voila, j'ai une page "page.php" contenant un formulaire dans lequel on peut en cochant des checkbox supprimer des elements contenu dans ma bdd le traitement de ce formulaire se faire via ma page "traitement.php" qui redirige a la fin directement vers ma page "page.php" grâce à header('location: page.php') placé entête et un exit en fin de page seulement voila je voudrais, quand l'action a bien été faite que ca m'affiche dans ma page "page.php" la phrase "les éléments ont bien étés supprimés" donc je dois forcement récupérer une variable venant de "traitement.php" d'ou mes 2 questions : 1) je pense que la création d'une variable session dans "traitement.php" s’impose ??? "car les variables autres que sessions doivent forcement etre transmisse par un btn <a> ou <input> donc cliquées, chose pas possible vu ma redirction automatique" 2) attention un exit en fin de page "traitement.php" va detuire ma session qui vient juste d'etre créée donc comment faire? 3) ma session, apres avoir ete récupérée dans page.php doit etre détruite, je pense? mais elle seule (pas les autres qui me serviront encore) mais avec quoi sachant que "session_unregister" est dite sur php.net : "Cette fonction est OBSOLETE depuis PHP 5.3.0. Nous vous encourageons vivement à ne plus l'utiliser." merci |
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
Salut
Je te donne une façon dont je procède, qui par ailleurs est quasi le même que d'autres Soft (genre CMS, blog), donc assez courante. J'effectue tout dans la même page, soit page.php (je ne redirige pas vers traitement.php). Le plus gros inconvénient n'est pas lorsque tout se passe bien, c'est surtout lorsqu'on détectera une ou plusieurs erreurs. Dans ton cas, vu que les traitements se font sur une autre page que celle qui contenait le formulaire, c'est qu'il va falloir renvoyer toutes les données pour pré-remplir le formulaire afin d'éviter que l'utilisateur re-saisisse à nouveau ce qu'il avait fait avant. Est ce que tu vois l'inconvénient ? Le fait de faire pointer le formulaire sur la même page (page.php), fera que, lors de la validation, et s'il y a une erreur, les données sont toujours là dans le $_POST, on a donc tout ce qu'il faut pour exploiter ces données là pour les remettre dans le formulaire, et même lui indiquer que tel champ comporte telle erreur. Ce n'est que lorsque tous les traitements se sont bien déroulés où on peu faire une redirection (un header) vers une page différente. Mais comme tu souhaite rester sur cette même page, alors il n'y rien d'autre de particulier à faire. Tu sais à l'avance que tout c'est bien déroulé, suffit de stocker ce message dans une variable par exemple, par la suite une alternative suffit pour afficher ce message. Une session ne s'impose pas quand même à mon sens. Si tu pointes quand même vers traitement.php, puis après ça tu fais une redirection vers page.php, tu peux rajouter un paramètre dans le header, comme un statut, un état, ... Exemple : Code :
header('location: page.php?statut=ok')
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
10
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2010 Messages : 136 ![]() |
merci je vais en tenir compte
mais comment tu as peut etre une solution a ce pb avec ta technique ? merci |
|
00
|
|
|
#4 | |||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
Citation:
C'est très simple, suffit de rediriger vers la même page, soit page.php, et avec le paramètre : Code :
Grosso modo, on repart à 0 pour cette même page, ce qui aura pour effet de ne plus avoir de $_POST entre autre. Le tuto explique ça d'ailleurs. Tant qu'il y a erreur, on reste dans la même page sans rechargement (qui sous-entend qu'aucune mise à jour de Bdd ou autre ait été fait). Dans ce cas là il est vrai qu'on obtiendra le message venant du navigateur, mais ce n'est pas gênant du fait qu'on aura rien fait (pas de risque d'insertion en double ou double commande comme cela est expliqué dans le tuto). On conserve les données de $_POST, ce qui facilite les choses par la suite. Cependant, je n'est pas tout lu ce tuto (franchement la flemme, pas envie ), je remarques seulement que leur solution est proche de celle que j'évoque, du coup je ne vois pas pourquoi ils s'embêtent à utiliser les sessions.Il n'y a pas besoin de session normal, un simple paramètre suffit. Il faut aussi faire en sorte de bien séparer la partie traitement (à faire en 1er) et HTML (après). Un header() n'apprécie pas une sortie HTML effectué avant. Ca aussi c'est expliqué. A toi de voir maintenant.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|||
|
|
10
|
|
|
#5 | |
|
Invité de passage
![]() Patrick Développeur Web Inscription : mai 2011 Messages : 2 ![]() |
Bonsoir,
La solution de RunCodePhp est pas mal, mais l'inconvénient c'est que tu va devoir envoyer des paramètres en get, juste pour un retour d'info, et une personne qui fera F5 50 fois aura 50 fois le message de confirmation. Tu avais parlé de session dans ton premier post, et j'utilise ça de temps en temps, le gros avantage c'est que l'internaute ne voit aucun changement dans son url. Donc pour répondre à ta question Citation:
Donc en gros si tu veux passer par des sessions, initialise ta session au retour de ton traitement, puis dans ta page fait un : Code :
if(!empty($_SESSION['ta_session'])) unset($_SESSION['ta_session']); En espérant t'avoir aidé |
|
|
|
00
|
|
|
#6 | ||||||
|
Membre éprouvé
![]() ![]() |
Ce serai plutôt comme ça:
Code php :
if(isset($_SESSION['ma_session'])) { unset($_SESSION['ma_session']); } Et si tu dois passer plusieurs informations via ta session et que l'ensemble doit être détruit met tes variables dans un tableau. Voici un petit exemple: Code php :
Code php :
Code php :
J'espère que ça t'aideras, Toine
__________________
Si ce message vous a aidé, pensez à voter pour lui! |
||||||
|
00
|
|
|
#7 |
|
Invité de passage
![]() Patrick Développeur Web Inscription : mai 2011 Messages : 2 ![]() |
le !empty() équivaut à un test isset() mais en vérifiant aussi si la variable n'est pas vide, on peut faire les deux donc, à voir après ce qui est le plus approprié à ton traitement
|
|
|
00
|
|
|
#8 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2010 Messages : 136 ![]() |
voila ou j'en suis dans mon formulaire de contact,
finalement tout ce passe dans la meme page contact.php celle ci est faite sur le model vu precedement. Ok je pourrais ajouter des vérifs pour l'adresse mail voir si elle est correcte ou autre mais il marche peu pres bien ( il fait bien les vérifs et envois le mail si tout est ok mais... j'ai tout de meme 3 questions : ---------------------------------- 1) j'ai un soucis, quand tout est ok le message à afficher est "Le mail à bien été envoyé" mais vu que ma fonction header('Location: ' . $fichierActuel); efface les varibles $_post donc il affiche le message avant que formulaire ne soit posté c.a.d "rien" comment eviter ce pb? 2) mais question sécurisation du code et des variables qu'en pensez vous??? 3)pour mettre en forme le message qui est envoyer dans le mail ($msg) j'ai des petit soucis car j'aimerai mettre par exemple certain mots engras, comment faire ceci? quelle sont ces balises "\n", de quel language sont 'elles issuent pour avoir mon texte en gras devrais-je passer ce message en html si oui par quelle astuce? merci beaucoup voici le code contact.php : Code :
|
||
|
00
|
|
|
#9 | ||||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
1/ C'est normal, car quand on fait un header('Location : un_page.php') C'est comme si on repartait de 0 pour cette page (une_page.php), dont tout ce qui aura été fait avant n'est pas tenu compte, comme l'initialisation du message dans $alerte;
Au passage, $_SERVER['PHP_SELF'] n'est pas une donnée fiable. La page est connue, c'est contact.php, il est préférable d'indiquer celle ci. Après, c'est à toi de voir, mais il faut quelque pour indiquer que tout c'est bien passer. De mon coté je t'avais suggéré de passer un paramètre dans l'URL, ce qui me semble suffisant, j'avais fais ainsi : Code :
Code :
2/ Quand on fait ce genre de programme, il faut au moins distinguer 2 aspects qui n'ont rien avoir, mais qui se complètent bien souvent. -> La sécurité et la fiabilité. Ni l'un ni l'autre n'est suffisant malheureusement. Ce n'est pas de simple !empty() qui vont garantir ces 2 points là. Cette étape là peu allègrement faire plusieurs milliers de lignes de codes (c'est dire), tout dépend du degrés qu'on souhaite avoir. Il existe des filtres de vérifications qui peuvent aider à réaliser cela. Types de filtres -> Filtres de validations 3/ A partir du moment où on veut faire de la mise en forme, c'est le format HTML. Il n'y a pas d'astuce, un mail (texte brut ou HTML) c'est un document, et comme tout document il y a des normes, etc ... Le plus simple c'est d'utiliser des librairies comme PhpMailer qui facilite les choses. Sinon, recherche des tutos, bouquins, etc ... T'expliquer ça est beaucoup trop long (puis je viens de le dire, de nombreux tutos existent déjà).
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||||
|
|
10
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2010 Messages : 136 ![]() |
merci d'avoir répondu
aussi vite fait et bien fait j'ai cependent encore une ou 2 questions : 1) a quoi sert cette ligne 2) pour le formatage de mon mail comment s'appelle le langage que j'utilise pour formaté mon message pour que je puisse chercher les tutos lui correspendant ou tout simplement trouver les regles qui le régisse 3) en l'état le btn reset marche bien mais plus apres avoir validé une premiere fois mon formulaire comment ca se fait? |
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
Pas mal de petits points dans mon précédent post était là pour t'inciter à faire des recherches (moteurs de recherche, doc de Php, etc ...).
Pour le header, c'était là pour dire que par défaut c'est une entête type 302 qui est renvoyée, ce qui dans la quasi totalité des cas ne convient pas. Une entête de type 301 ou 303 est plus juste. Ceci peut être pénalisant si on effectue ce type de redirection dans une partie "publique" où on souhaite que la page soit indéxée par un moteur de recherche. Ceci est par ailleurs plus lié au serveur Web (Apache) que Php. Pour en savoir plus tu peux faire des recherche avec "Apache 302" (301, 303, et pour les plus connus : 404, 500). Pour ce qui est des mail, il n'y a pas vraiment de langage, ce sont plus des normes, comme RFC 2822, etc ... Là aussi, suffit de consulter la doc de Php. Il y a des explications, des exemples, couplé ça avec google, on arrive à ces fins. Je n'ai pas de tutos, j'en avais consultés à l'époque, c'est sûr, mais maintenant ??? J'exploite depuis PhpMailer comme je l'avais dit, ça permet de se soustraire de ces normes, c'est lui qui se charge de le faire. Là aussi, google est ton meilleurs ami. Je dirais juste que, faire des mails au format HTML, Ok, mais il ne faut pas perdre de vu que ce mail sera lu par une personne, et là, on n'a aucune garanti que cette personne va le lire correctement, de la façon dont on le souhaite. Une personne le lira avec un "client" (Outlook, Thunderbird, directement sur le net donc un navigateur, etc ...). Il est donc courant de faire un mail contenant le message à la fois en texte brut, et aussi au format HTML. Pour ce qui est du bouton reset, il doit avoir une erreur HTML. Cette erreur découle peut être d'une erreur de Php. Fait un clic droit dans la page HTML puis "code source de la page" lorsqu'il y a cette erreur, et observe cette partie de code (le formulaire). Tu verras peut être d'où vient l'erreur.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
00
|
|
|
#12 | ||||
|
Invité régulier
![]() Inscription : décembre 2011 Messages : 9 ![]() |
Code :
Code :
|
||||
|
|
01
|
Copyright © 2000-2012 - www.developpez.com