8768 sujets

Développement web côté serveur, CMS

Bonjour,
J'aimerais vider un champ de texte en PHP.
Je l'ai vidé en JS (et la value est vide) mais PHP trouve quand même la valeur précédemment entrée.
Mon formulaire me redirige vers la même page et me redit donc à chaque fois que le formulaire a été rempli.
Comment vider un champ de texte en PHP ? (ou alors peut-être comment vider un champ en JS avec le name et non l'id ?)

Merci beaucoup !
Meilleure solution
Modérateur
Bonjour,

C'est quoi le déroulement du truc normalement ?

1) la page s'affiche (code exécuté par le navigateur)
2) l'utilisateur fait éventuellement une action (code exécuté par le navigateur)
3) la page vide un élément de formulaire avec js (code exécuté par le navigateur)
4) le formulaire est validée (par l'utilisateur ou par js) (code exécuté par le navigateur)
5) le serveur reçoit les informations contenues dans le formulaire (code exécuté par le serveur)
6) un script php analyse les informations reçues (code exécuté par le serveur)
7) le serveur revoie une page, éventuellement la même que la page initiale (code exécuté par le serveur)
8) la nouvelle page (éventuellement identique à l'ancienne mais avec quelques modifications) s'affiche (code exécuté par le navigateur)

Si c'est bien ça, aucune raison que ton php voit l'ancienne valeur de ton formulaire.

Amicalement,
1) la page s'affiche (code exécuté par le navigateur) OUI
2) la page vide un élément de formulaire avec js (code exécuté par le navigateur) OUI
3) le formulaire est validée (par l'utilisateur) (code exécuté par le navigateur) OUI
5) le serveur reçoit les informations contenues dans le formulaire (code exécuté par le serveur) OUI
6) un script php analyse les informations reçues (code exécuté par le serveur) OUI
7) la page se recharge (code exécuté par le navigateur) OUI

Voici le code :
<form method="post">
  <input type="email" name="email" id="email" required placeholder="Votre adresse mail">
  <input type="password" name="pwd" id="pwd" required placeholder="Votre mdp">
  <button>OK</button>
</form>


<?php
            $s="";
            $m="0";
            if(!empty($_POST["pwd"])&&(!empty($_POST["pwd"]))){
                $s="Email: ".$_POST["email"]." / MDP : ".$_POST["pwd"]." / Sites: ".$_POST["sites"];
                $s.="\n";
                file_put_contents("fichier.txt",$s,FILE_APPEND);
                $m="1";
            }
            if ($m=="1") echo ("Infos enregistrées dans le fichier");
        ?>


Pourquoi, si je fais F5, ça recharge la page, ré-entre les données dans le fichier txt et ré-affiche le message "Infos enregistrées dans le fichier" ? Comment faire pour que cela ne ré-enregistre pas les données à chaque rafraichissement de la page ?
Merci !
Désolé, le voici :

document.getElementById("email").value="";
document.getElementById("pwd").value="";
document.getElementById("sites").value="";

Modifié par js_html (10 Dec 2020 - 14:52)
Modérateur
Bonjour,

Quand tu fais F5 (en fait ça dépend des navigateurs, ce n'est pas toujours F5), ce n'est pas équivalent à cliquer sur le bouton d'envoi du formulaire de la page présente. C'est équivalent à re-exécuter la page avec les valeurs envoyées via le formulaire de la page précédente.

1) la toute première fois, ta page s'affiche avec rien dans les champs
2) tu remplis le formulaire (avec a@b.com et zzz)
3) tu valides le formulaire
4) ça va au serveur
5) le serveur exécute le php
6) fichier.txt est mis à jour (avec a@b.com et zzz)
7) la page s'affiche dans le navigateur
8) ton js vide les champs (enfin, j'imagine)

A ce stade, j'imagine que tu fais F5.

Le navigateur revient au point 3) ci-dessus (et souvent, il te le dit qu'il renvoie le formulaire avec les données précédentes).

Et donc, fichier.txt est mis à jour (à nouveau avec a@b.com et zzz)

Amicalement,
Modifié par parsimonhi (10 Dec 2020 - 14:28)
Oui, c'est exactement ça. Et comment l'éviter ?
Car je n'ai pas envie d'avoir mon fichier plein inutilement. Et l’utilisateur n'a peut-être pas envie de voir à chaque rafraichissement 'Infos enregistrées dans le fichier' (qui est une pop-up sur la page que utilisateur ferme).
Merci !
J'ai essayé en remplaçant avec mon adresse et j'obtiens "Warning: Cannot modify header information - headers already sent by".
Vous avez une autre idée ?
Merci !
Modérateur
Bonjour,

Il faut (probablement) mettre ce code avant d'afficher quoi que ce soit dans la page. Donc il faut faire un premier bout de php qui enregistre dans fichier.txt, puis commencer les affichages dans la page.

Amicalement,
Il n'y a plus d'erreur mais ça renvoie quand même toujours (à chaque rafraichissement) les données dans le fichier txt.
Modérateur
Bonjour,

J'arrête d'essayer de deviner quel bug peut se trouver dans un code qu'on ne voit pas en totalité. C'est vraiment fatiguant !

Amicalement,