Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/09/2011, 13h27   #1
Invité de passage
 
Homme
Consultant informatique
Inscription : septembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Consultant informatique
Secteur : Santé

Informations forums :
Inscription : septembre 2011
Messages : 3
Points : 1
Points : 1
Par défaut Pb de formulaire

Bonjour,
Etant complètement novice en programmation j'ai développé un site web pour ma sté mais je galère sur un formulaire en php.

Tout fonctionne bien si tout est rempli correctement mais si une erreur intervient je n'arrive pas à redirigé vers la page d'erreur que j'ai fait. En effet le script fait juste un exit et l'utilisateur se retrouve dans le vide.

voici le script:


<?php
session_start();
if(!isset($_SESSION['code']) OR strlen($_SESSION['code']) !=5) exit("Erreur !");
if($_SESSION['code'] != $_POST['verif']) exit("Erreur les valeurs sont différentes !");
$exp = $_POST['mail'];
$objet = stripslashes($_POST['objet']);
$msg = stripslashes($_POST['msg']);
$envoi=mail("xxxxx.xxxxxx@gmail.com", $objet, $msg,"From: $exp\r\n"."Reply-To: $exp\r\n");
if($envoi) header('Location: urgenceok.html');
else header('Location: urgencepb.html');
session_unset();
session_destroy();
?>


C'est entre autre la partie exit("Erreur les valeurs sont différentes !"); qui me pose un problème.
Comment faire pour qu'en cas d'erreur de saisie le le message ne me soit pas envoyé quand même, que la page d'erreur que j'ai fait s'affiche et que l'utilisateur ne se retrouve pas dans le vide svp?

Merci d'avance pour votre aide
TITOU34970 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 17h15   #2
Futur Membre du Club
 
Homme
Inscription : septembre 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2011
Messages : 15
Points : 18
Points : 18
Ce qui résulte de ton code est normal.
La fonction exit() stop l'exécution du code php. Elle permet éventuellement d'informer l'utilisateur d'un message en paramètre comme tu l'as correctement formulés dans ton code. Il existe des mécanismes en php permettant de définir certaines tâches à l'arrêt de l'interprétation du script mais c'est plus compliqué.
Pour pouvoir afficher en toute simplicité un message dans la page urgencepb.html, il faut:
-soit transmettre le message par l'intermédaire de ta redirection ( header.....) et le récupérer sur la page à l'aide d'un $_GET['ton_message']. (sans oublier les balises d'ouverture et de fermeture <?php ?> sur ta page html )
-soit profiter du mécanisme de session que tu utilises déjà $_SESSION['message'] = 'Erreur !' puis faire un simple echo $_SESSION['message'] (toujours sans oublier les balises php mais avec un session_start(); au tout début de ta page, avant tous codes)
-soit (mais c'est moins élégant) rediriger l'utilisateur vers ta page html où tu auras écris en dur ton message. Tu l'auras compris, on oublis donc le côté dynamique de ton script et aux vues de ton algorithme, il te faudrait 2 pages html distinctes.

Voici le code modifié:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
session_start();
if (!isset($_SESSION['code']) OR strlen($_SESSION['code']) != 5) {
    header('Location: urgencepb.html');
    // Ta solution pour transmettre le message en dynamique
} elseif ($_SESSION['code'] != $_POST['verif']) {
    $_SESSION['message'] = 'Erreur les valeurs sont différentes !';
    // Ta solution pour transmettre le message en dynamique
} else {
    $exp = $_POST['mail'];
    $objet = stripslashes($_POST['objet']);
    $msg = stripslashes($_POST['msg']);
    $envoi = mail("xxxxx.xxxxxx@gmail.com", $objet, $msg, "From: $exp\r\n" . "Reply-To: $exp\r\n");
    header('Location: urgenceok.html');
}
session_unset();
session_destroy();
?>
Voilà!
Sam__ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 17h25   #3
Invité de passage
 
Homme
Consultant informatique
Inscription : septembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Consultant informatique
Secteur : Santé

Informations forums :
Inscription : septembre 2011
Messages : 3
Points : 1
Points : 1
Merci c'est super gentil de m'avoir renseigné. Surtout un dimanche lol
Je vais essayer tout ça dans la soirée et je tiens au courant.
Encore merci pour tout.
TITOU34970 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 18h30   #4
Invité de passage
 
Homme
Consultant informatique
Inscription : septembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Consultant informatique
Secteur : Santé

Informations forums :
Inscription : septembre 2011
Messages : 3
Points : 1
Points : 1
Je viens de faire la modif avec certes la solution la moins élégante mais vu que je n'y connait rien du tout .... mdr. En tout cas ça fonctionne impec maintenant. Je vais pouvoir prendre le temps d'étudier les autres solutions.

Un grand merci encore.

Sur un autre formulaire (mais formmail cette fois j'ai un autre petit pb tu connais ce type de formulaire? )
TITOU34970 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2011, 22h17   #5
Futur Membre du Club
 
Homme
Inscription : septembre 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : septembre 2011
Messages : 15
Points : 18
Points : 18
A vrai dire non. Je créer chacun de mes codes mais n'hésite pas à exposer ton problème au cas où.
Bonne soirée
Sam__ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h43.


 
 
 
 
Partenaires

Hébergement Web