Formulaire et php

Discutez d'informatique ici !
Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 20:42

formulaire et php

par Rockleader » 21 Jan 2015, 14:03

Salutation,

quelque chose me titille depuis un moment je viens donc voir si vous avez des infos =)


J'ai pour simplifier une page d'identification html avec un formulaire me redirigeant vers une page php.

Sauf que sur cette page php, je dois réaliser un nouveau formulaire qui va interagir avec lui même.
En théorie un formulaire peut s'appeler lui même, il me semble qu'il suffit de faire alors l'attribut action=""


Sauf que, je suis dans une page.php et form n'est reconnu qu'en html.






accueil contient ce morceau de code

Code: Tout sélectionner
Compte existant

         

            
                  
                     Login:
                     
                  

                  
                     Mot De Passe:
                     
                  


            
            



         


Et ma page de traitement

Code: Tout sélectionner
";


           }       

         if(!mysql_select_db(BASE,$connexion))   //si erreur connexion à la base      
          {
               echo "desolé, accès à la base ".BASE."impossible";
               exit;

           }
 //connexion réussi
           $requete="select * from internaute where login='$log' and mdp='$mdpu'";
 $resultat=mysql_query($requete,$connexion);
$resLogin=mysql_fetch_assoc($resultat);

if (!empty($resLogin) )//si on a le bon nom et le bon mot de passe
{
   echo "Utilisateur enregistré ! On va faire le traitement ! ";
       [COLOR=Red]  L'idée serait de pouvoir faire un form ici qui s'appellerait lui même[/COLOR]
}
else
{
   //on ramène l'utilisateur sur la page d'accueil en cas de mauvaise saisie
   sleep(5);
   header("Location:accueil.html");   
}       
?>



Je pourrais "maquiller" le tout et faire croire que je fais un formulaire avec des liens de type href, mais je ne pense pas que ce soit ce qui est attendu dans mon problème.


Merci à vous.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !



dlzlogic2
Membre Naturel
Messages: 38
Enregistré le: 06 Oct 2014, 14:40

par dlzlogic2 » 21 Jan 2015, 14:44

Bonjour,
J'ai un peu de mal à saisir le problème.
Le php sert à générer une page HTML que l'utilisateur peut voir et compléter et répondre s'il s'agit d'un formulaire.
Autrement dit, c'est le genre de manipulation normale quand on envoie un formulaire, qu'il y a une réponse, laquelle produit un autre formulaire etc.

Par contre, PHP ne permet pas que la page puisse être modifiée chez et par le client. Pour la simple raison que chez le client il n'y a pas PHP, mais on peut faire tout ce qu'on veut en HTML.
Pour faire cela il faut utiliser JavaScript.
Un test facile pour le vérifier. Si vous éditer le source (ctrl u avec Mozilla) vous ne voyez que du HTML et pas une ligne de PHP.

Benjamin
Modérateur
Messages: 2337
Enregistré le: 14 Avr 2008, 12:00

par Benjamin » 21 Jan 2015, 16:06

Salut,

J'ai pas bien compris ton problème. Pourquoi tu veux que ton formulaire interagisse avec lui-même ? Qu'est-ce que tu cherches à faire exactement ?

Pour faire une page de connexion, pas besoin de faire un page html à côté en plus. Dans un fichier php, quand tu mets "?>", tu sors du mode php pour faire de l'HTML, et tu re-fais du php avec "


<?php
} # Fin du else
[/code]
Sinon quelques remarques au passage : il existe un input password dans form, ce qui fait que le navigateur mettra des étoiles ou des points quand tu renseigneras le mot de passe, c'est mieux que input text. De plus, toujours vérifier les données $_POST pour ne pas te faire hacker ton site, et au minimum utiliser des requêtes protégées. C'est bien de prendre les bonnes pratiques dès le début pour éviter l'injection de code !

PS : si la version de PHP que tu utilises possède la bibliothèque PDO, je te conseille également de l'utiliser pour communiquer avec ta BDD. C'est un wrapper assez complet qui peut aider à une portabilité future.

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 20:42

par Rockleader » 21 Jan 2015, 18:00

Ok, je savais pas qu'on pouvait fermer temporairement la balise php pour repasser sur du html basique; du coup ça devrait régler mon problème^^


Pour le password, c'est vrai, mais dans ma spec du tp ça apparaît comme du texte normal donc...



Par contre je trouve un truc un peu bizarre

Dans mon cas ou je rentre des logs non présent dans la BD; j'attend normalement 5 secondes avant de rediriger sur la page d'accueil.

Mais en fait, je ne quitte même pas la page d'accueil. Il se contente d'attendre 5 secondes en essayant de charger une autre page.
Du coup, avant de faire mon sleep j'ai essayé de faire un echo "Vous allez être redirigé dans 5 secondes"
Et le résultat est le même, aucun affichage on ne quitte pas la page d'accueil.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

dlzlogic2
Membre Naturel
Messages: 38
Enregistré le: 06 Oct 2014, 14:40

par dlzlogic2 » 21 Jan 2015, 18:37

Ce qu'il faut comprendre, c'est que le PHP écrit une page HTML, et c'est tout.
Dans un fichier PHP il peut y avoir autant de séquences HTML qu'on veut. Quand ce fichier est traité, il ne restera plus que du HTML à envoyer.

L'expression "fermer temporairement une balise php" m'a pas vraiment de signification.
Entre 2 balises il y a un bloc d'exécution, ça peut être du calcul pur, de l'accès à une BD, de l'écriture d'une page HTML, ou n'importe quoi d'autre.
Il faut bien distinguer ce qui se passe dans le serveur pour écrire la page HTML puis l'envoyer et ce que le client a sur son écran qui n'est qu'une page HTML et rien d'autre, sauf JavaScript éventuellement.
Ce que le client reçoit est une page HTML et rien d'autre. On ne peut pas savoir comment cette page a été écrite, les instructions PHP ne sortent pas de la machine serveur.

Benjamin
Modérateur
Messages: 2337
Enregistré le: 14 Avr 2008, 12:00

par Benjamin » 21 Jan 2015, 18:45

C'est normal, il faut que tu fasses la différence entre ce que prend ton navigateur côté client (du HTML) et ce que gère ton serveur (type Apache) avec du PHP.

Quand tu exécutes un script php sur ton serveur et que tu fais un "echo" il va envoyer du html à ton navigateur. Et là, il va donc faire un trame html contenant toutes les en-têtes nécessaire etc... Et après, quand tu fais header(), ça le fait bugger car ton script a déjà commencé à envoyé la trame HTML. Voir ce lien : http://openclassrooms.com/courses/la-tamporisation-de-sortie-en-php

Les redirections avec temporisation comme on voit sur tous les forums ne sont pas aussi simples que ça en a l'air à gérer ;)

Par contre logiquement, tu aurais dû avoir ton texte des 5 secondes, sans redirection derrière. Il y a qqch qui m'échappe mais je suis pas sûr de bien avoir tout compris à ta situation ! Dans tous les cas, tiens-en toi à ce que je t'ai montré : un seule page php qui va faire en même temps du html (sauf si c'est explicitement dit dans la consigne de faire 2 fichiers séparés, un html et l'autre php).

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite