Formulaire et php
Discutez d'informatique ici !
-
Rockleader
- Habitué(e)
- Messages: 2126
- Enregistré le: 11 Oct 2011, 20:42
-
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.
-
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-phpLes 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).
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités