Redirection php
Fermé
fab1105
Messages postés
114
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
17 juin 2010
-
15 nov. 2009 à 12:43
fab1105 Messages postés 114 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 17 juin 2010 - 16 nov. 2009 à 21:22
fab1105 Messages postés 114 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 17 juin 2010 - 16 nov. 2009 à 21:22
A voir également:
- Redirection php
- Easy php - Télécharger - Divers Web & Internet
- Redirection de mail - Guide
- Avertissement de redirection - Forum Réseaux sociaux
- Php?id=1 - Forum PHP
- \R php ✓ - Forum PHP
5 réponses
dodoecchi
Messages postés
454
Date d'inscription
samedi 9 septembre 2006
Statut
Membre
Dernière intervention
26 avril 2012
29
15 nov. 2009 à 13:06
15 nov. 2009 à 13:06
http://www.aidoforum.com/tutoriaux-49-redirection-automatique-vers-une-autre-page.html
la recherche ça existe
merci de cherche un minimum la prochaine fois
Dorian
la recherche ça existe
merci de cherche un minimum la prochaine fois
Dorian
fab1105
Messages postés
114
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
17 juin 2010
7
15 nov. 2009 à 13:32
15 nov. 2009 à 13:32
Bonjour, oui Dorian la recherche existe et la sympathie aussi... Mais ce que je demande c'est pas le moyen de faire une redirection, ça je sais faire , mais c'est écrire la condition pour la redirection, j'ai essayé avec :
if ($_SERVER['HTTP_REFERER'] != 'http://localhost/code/inscription/envoi_form.php') {
header("Location: index.php");
}
mais cela ne marche pas tout à fait correctement et je ne sais même pas si c'est la méthode que l'on utilise dans ce genre de cas.
Alors si quelqu'un de sympathique pouvait me donner une piste pour répondre à ma question, sans m'envoyer bouler, ce serait bien gentil de sa part.
Merci pour vos réponses cordiales et constructives.
if ($_SERVER['HTTP_REFERER'] != 'http://localhost/code/inscription/envoi_form.php') {
header("Location: index.php");
}
mais cela ne marche pas tout à fait correctement et je ne sais même pas si c'est la méthode que l'on utilise dans ce genre de cas.
Alors si quelqu'un de sympathique pouvait me donner une piste pour répondre à ma question, sans m'envoyer bouler, ce serait bien gentil de sa part.
Merci pour vos réponses cordiales et constructives.
dodoecchi
Messages postés
454
Date d'inscription
samedi 9 septembre 2006
Statut
Membre
Dernière intervention
26 avril 2012
29
16 nov. 2009 à 20:32
16 nov. 2009 à 20:32
utiliser la variable serveur pour ce genre de chose, c'est (en mon sens) aller un peu loin
si un utilisateur n'a rien à faire sur une page, inutile de prévoir une redirection. Je pense bien que si quelqu'un bidouille les urls et se retrouve sur une page blanche, c'est son problème. Pour obtenir la page blanche, un die(mon_message_d'erreur); après une condition non remplie fera l'affaire. Et je pense pas que ça pose des problèmes de sécurité les die.
Bon, prenons un autre cas : l'utilisateur a mal rempli le formulaire, une condition côté serveur (php) ne passe pas, il tombe sur un die qui rend une page (presque) blanche. une solution est d'implémenter une vérification côté client (avec par exemple des librairies javascript comme jquery, qui n'autorisera pas l'envoi du formulaire avant l'avoir des données valides), mais il ne faut pas exclure le risque des utilisateurs sans javascript.
Dorian
si un utilisateur n'a rien à faire sur une page, inutile de prévoir une redirection. Je pense bien que si quelqu'un bidouille les urls et se retrouve sur une page blanche, c'est son problème. Pour obtenir la page blanche, un die(mon_message_d'erreur); après une condition non remplie fera l'affaire. Et je pense pas que ça pose des problèmes de sécurité les die.
Bon, prenons un autre cas : l'utilisateur a mal rempli le formulaire, une condition côté serveur (php) ne passe pas, il tombe sur un die qui rend une page (presque) blanche. une solution est d'implémenter une vérification côté client (avec par exemple des librairies javascript comme jquery, qui n'autorisera pas l'envoi du formulaire avant l'avoir des données valides), mais il ne faut pas exclure le risque des utilisateurs sans javascript.
Dorian
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fab1105
Messages postés
114
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
17 juin 2010
7
16 nov. 2009 à 21:22
16 nov. 2009 à 21:22
Bonjour Dorian,
En fait la vérification est faite en php sur la page du formulaire qui s'appelle elle même, je ne vais pas mettre tout mon code ce serait trop long mais en voici un résumé :
//avant tout code html je commence à vérifier que le formulaire est bien rempli(que les variables ont été postées et qu'elles sont valides)
<?php
if(isset($_POST['pseudo']) && isset($_POST['mail']) && isset($_POST['pass']) && isset($_POST['verif_pass'])) {
if($_POST['pseudo'] != NULL && $_POST['mail'] != NULL && $_POST['pass'] != NULL && $_POST['verif_pass'] != NULL ) {
if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail'])) {
if($_POST['pass'] == $_POST['verif_pass']) {
//je vérifie que le formulaire est bien posté depuis ma page par mesure de sécurité
if ($_SERVER['HTTP_REFERER'] == 'http://localhost/code/inscription/envoi_form.php') {
$pseudo=strip_tags(trim($_POST['pseudo']));
$mail=strip_tags(trim($_POST['mail']));
$pass=sha1(strip_tags(trim($_POST['pass'])));
$verif_pass=strip_tags(trim($_POST['verif_pass']));
//ensuite j'envoie un mail pour confirmer l'inscription
//j'insère toutes les données dans la BDD en sécurisant les variables
//puis j'utilise un header("Location: envoi_form_ok.php"); pour envoyer le visiteur sur une page envoi_ok sur laquelle il lui est confirmé que son inscription est terminée et qu'il vas recevoir un mail de confirmation.
Puis bien sur d'autre vérification sont faites en php dans le corps du document pour avertir par exemple : "votre adresse mail n'est pas valide" ou "vous devez remplir ce champ" etc...
Alors c'est vrai tu as raison à la limite on s'en fout qu'il tape l'adresse envoi_ok et qu'il arrive sur une page "Inscription terminée" sans avoir rempli le formulaire, c'est sans aucune conséquence mais ça m'embêtait je trouvais cela pas très pro.
Sinon j'ai modifié mon code sur ma page envoi_ok et ça à l'air de fonctionner correctement maintenant, j'ai fais avant tout code html : if ($_SERVER['HTTP_REFERER'] != 'http://localhost/code/inscription/envoi_form.php') {
header("Location: envoi_form.php");
}
et lorsque l'on tape directement l'adresse envoi_ok ou même si je clic sur le lien dans localhost, on est directement redirigé sur la page du formulaire.
Sinon pour la vérification côté client j'en ai fait une avec jquery mais comme tu dis il faut toujours en faire une côté serveur.
En résumé si l'utilisateur clic sur envoyer et que les données sont incorrect, il reste sur la même page avec au dessus du formulaire écrit "tel champs est mal rempli" et si les données sont correctes une fois le script de vérification effectué il est redirigé vers une page de remerciement "inscription terminée".
Je trouve que cette méthode est pas trop mal parce que tu peux te passer d'une vérification côté client, si un champ est faux c'est la même page qui est rechargée, donc pas de problème impossible de passer la page formulaire sans qu'elle soit bien remplie.
Voilà merci pour ta réponse, si t'as des suggestions je suis à l'écoute.
En fait la vérification est faite en php sur la page du formulaire qui s'appelle elle même, je ne vais pas mettre tout mon code ce serait trop long mais en voici un résumé :
//avant tout code html je commence à vérifier que le formulaire est bien rempli(que les variables ont été postées et qu'elles sont valides)
<?php
if(isset($_POST['pseudo']) && isset($_POST['mail']) && isset($_POST['pass']) && isset($_POST['verif_pass'])) {
if($_POST['pseudo'] != NULL && $_POST['mail'] != NULL && $_POST['pass'] != NULL && $_POST['verif_pass'] != NULL ) {
if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail'])) {
if($_POST['pass'] == $_POST['verif_pass']) {
//je vérifie que le formulaire est bien posté depuis ma page par mesure de sécurité
if ($_SERVER['HTTP_REFERER'] == 'http://localhost/code/inscription/envoi_form.php') {
$pseudo=strip_tags(trim($_POST['pseudo']));
$mail=strip_tags(trim($_POST['mail']));
$pass=sha1(strip_tags(trim($_POST['pass'])));
$verif_pass=strip_tags(trim($_POST['verif_pass']));
//ensuite j'envoie un mail pour confirmer l'inscription
//j'insère toutes les données dans la BDD en sécurisant les variables
//puis j'utilise un header("Location: envoi_form_ok.php"); pour envoyer le visiteur sur une page envoi_ok sur laquelle il lui est confirmé que son inscription est terminée et qu'il vas recevoir un mail de confirmation.
Puis bien sur d'autre vérification sont faites en php dans le corps du document pour avertir par exemple : "votre adresse mail n'est pas valide" ou "vous devez remplir ce champ" etc...
Alors c'est vrai tu as raison à la limite on s'en fout qu'il tape l'adresse envoi_ok et qu'il arrive sur une page "Inscription terminée" sans avoir rempli le formulaire, c'est sans aucune conséquence mais ça m'embêtait je trouvais cela pas très pro.
Sinon j'ai modifié mon code sur ma page envoi_ok et ça à l'air de fonctionner correctement maintenant, j'ai fais avant tout code html : if ($_SERVER['HTTP_REFERER'] != 'http://localhost/code/inscription/envoi_form.php') {
header("Location: envoi_form.php");
}
et lorsque l'on tape directement l'adresse envoi_ok ou même si je clic sur le lien dans localhost, on est directement redirigé sur la page du formulaire.
Sinon pour la vérification côté client j'en ai fait une avec jquery mais comme tu dis il faut toujours en faire une côté serveur.
En résumé si l'utilisateur clic sur envoyer et que les données sont incorrect, il reste sur la même page avec au dessus du formulaire écrit "tel champs est mal rempli" et si les données sont correctes une fois le script de vérification effectué il est redirigé vers une page de remerciement "inscription terminée".
Je trouve que cette méthode est pas trop mal parce que tu peux te passer d'une vérification côté client, si un champ est faux c'est la même page qui est rechargée, donc pas de problème impossible de passer la page formulaire sans qu'elle soit bien remplie.
Voilà merci pour ta réponse, si t'as des suggestions je suis à l'écoute.