Rechercher : dans
Par :

Php.... if(conditions=1){affichage page html}

Dernière réponse le 7 jun 2008 à 09:52:52 delirium, le 5 mai 2007 à 19:19:45 
 Signaler ce message aux modérateurs

Bonjour,

j'ai une partie de code php ci dessous :

if(@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
donc affichage direct de la page de remerciement ...
}
else {
// erreur lors de l'envoi du mail
echo "Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a>\n";
}
}

J'ai essayé avec Header("Location: ./merci.html"); mais ca ne fonctionne pas.. une petite aide... merci

Configuration: Windows XP
Firefox 2.0.0.3

Meilleures réponses pour « php.... if(conditions=1){affichage page html} » dans :
[Webmaster] Afficher facilement le code php/xhtml de vos pages VoirSi vous voulez proposer a vos visiteurs de voir la source de vos fichiers (PHP ou HTML), il y a plusieurs solutions. En php Afficher le code php Afficher le code html En html Informations Voir aussi En php Afficher le code php La...
On peut cacher le code source d'une page HTML VoirMythe: On peut cacher le code source d'une page HTML. Réalité: FAUX. Explications: Pour pouvoir afficher une page web (HTML), le navigateur doit - à un moment où un autre - avoir le code HTML en clair. Il y a donc toujours moyen de le...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...

1

Dalida, le 5 mai 2007 à 19:48:54

Salut,

pourrais-tu nous en dire un peu plus ?
qu'est-ce qui ne marche pas ?
si tu veux envoyer un header il ne faut envoyer aucun caractère avant.
il y avait un article dans la faq, je ne le retrouve pas.

et à priori, il vaudrait mieux le rédiger ainsi :

header("Location:../merci.html");

[ Mathieu ]
savoir rester faignant, c'est progresser en informatique. enfin, j'essaie…

Répondre à Dalida

2

delirium, le 5 mai 2007 à 19:51:18

Le propleme c'est que j'inclu l'affichage de mon formulaire avant c'est pour ca que je peux pas utiliser le Header.. une autre alternative ?

Répondre à delirium

3

Dalida, le 5 mai 2007 à 20:21:23

Tu dois pouvoir le gérer autrement.

tu ne peux pas mettre le traitement dans un script à part qui renverrai via header soit vers le formulaire soit vers le remerciement ?
[ Mathieu ]
savoir rester faignant, c'est progresser en informatique. enfin, j'essaie…

Répondre à Dalida

4

delirium, le 5 mai 2007 à 20:34:34
  • +1

Et appeler un script java dans la premiere parti du if ?

genre : if(conditions=1) (lancer script java redirection auto) else(....)

Répondre à delirium

5

Dalida, le 5 mai 2007 à 23:25:41

Non, je pensais à un script php…

- formulaire
- script php qui envoie le mail
- page de remerciement

le formulaire execute le script d'envoi de mail
dans le script:
- si mail() alors redirection remerciement
- sinon redirection formulaire
[ Mathieu ]
savoir rester faignant, c'est progresser en informatique. enfin, j'essaie…

Répondre à Dalida

6

Dalida, le 6 mai 2007 à 11:56:16

Salut,

la nuit porte conseil…
dans mon post précédent je pense avoir été chercher une solution bien compliquée pour peu de chose…

comment ce fait-il que tu envoies le code du formulaire avant le header ?
le script php qui traite l'envoie du mail est situé où ? dans un fichier séparé où dans le même fichier que le formulaire html ? dans ce dernier cas il suffirait d'inverser formulaire et traitement.
[ Mathieu ]
savoir rester faignant, c'est progresser en informatique. enfin, j'essaie…

Répondre à Dalida

7

delirium, le 7 mai 2007 à 00:05:08

Le script qui traite du formulaire est situé avant la parti html... avec dans la parti html la gestion de la fonction décrite ci dessus... c'est peut etre la le pb....

Répondre à delirium

8

Dalida, le 7 mai 2007 à 01:24:29

Dur, dur, de voir exactement ce que tu veux dire, tu peux nous en dire plus ?

peux-tu coller le code (sans info perso…) ?

car avec les header le moindre caractère, espace y compris, peut être fatidique.
[ Mathieu ]
savoir rester faignant, c'est progresser en informatique. enfin, j'essaie…

Répondre à Dalida

9

delirium, le 7 mai 2007 à 08:29:26

Ok voici tout le code source de contact.php

le traitement des condition envoi mail sont en bas du code il y a un commentaire là ou je souhaite mettre le Header location.




<?php
$cryptinstall="./crypt/cryptographp.fct.php";
include $cryptinstall;
?>
<?php

$email_webmaster = "*******@*******.eu";
$titre_cache = "message du site www.**********.eu - / ";
// === traitement des données du formulaire ============================================================
if (isset($_POST["envoyer"])){
// le formulaire a été soumis
$etat = "erreur";
// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
if (isset($_POST["email_expediteur"])) {
$_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
}
if (isset($_POST["titre"])) {
$_POST["titre"]=trim(stripslashes($_POST["titre"]));
}
if (isset($_POST["message"])) {
$_POST["message"]=trim(stripslashes($_POST["message"]));
}
// --- test de la validité des champs saisis ---
if (empty($_POST["email_expediteur"])) {
// il manque l'email de l'expéditeur
$erreur="Saisissez votre adresse email...";
}
elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){
// l'adresse e-mail n'est pas valide
$erreur="Votre adresse e-mail n'est pas valide...";
}
elseif (empty($_POST["message"])) {
// le message est vide
$erreur="Saisissez un message...";
}
elseif (empty($_POST["code"])) {
// le code n'est pas saisi
$erreur="Saisissez le code de verification...";
}

else {
// --- Vérification de la validité du code captcha ---
if (chk_crypt($_POST['code']))
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
$etat="ok";
// --- Le code captcha n'est pas valide ---
else $erreur="Code de verification non valide ...";
}
}

else {
// --- le formulaire n'a pas été soumis ---
$etat="attente";
}
// === fin de traitement des données du formulaire =======================================================
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de contact</title>
<style type="text/css">
<!--
body {
background-color: #BBB0AA;
}
.Style1 {font-size: 14pt}
-->
</style></head>
<body>
<h1 align="center" class="Style1">Contacter le Webmaster </h1>
<div align="center">
<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur
}
?>
</div>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<p align="center"><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label>
<input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
}
?>" />
<br />
</p>
<p align="center"><label for="titre">Titre de message (facultatif):</label>
<input type="text" size="40" name="titre" id="titre" value="<?php
if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
}
?>" />
<br />
</p>
<p align="center"><label for="message">Message (obligatoire):</label><br />
<textarea name="message" id="message" cols="75" rows="5"><?php
if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
echo htmlspecialchars($_POST["message"],ENT_QUOTES);
}
?>

Répondre à delirium

10

delirium, le 7 mai 2007 à 08:31:57

/*---- FIN DU CODE ------*/

</p>
<p align="center">Recopier le texte contenu dans l'image en bas. Cliquez sur <img src="crypt/images/reload.png" alt="reload" width="25" height="31" align="absmiddle" /> en cas d'image illisible. </p>
<div align="center">
<?php dsp_crypt(0,1);?>
</div>
<p align="center"><input type="text" name="code" />
</p>
<p align="center"><input type="submit" name="envoyer" value="Envoyer" />
</p>
</form>
<div align="center">
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
$entete .= "MIME-Version: 1.0";
if (@mail($email_webmaster,$titre_cache.$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
echo "Votre message a été envoyé.<br />\n";
echo "<a href=\"index2.html\" target=\"_parent\">Retour au menu principal.</a>\n";
}
else {
// erreur lors de l'envoi du mail
echo "Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a>\n";
}
}
?>
</div>
</body>
</html>

/*-----------------------------*/
voilà pour le code Header que je souhaite placer :


Header("Location: ./imerci.html");

Répondre à delirium

11

Dalida, le 7 mai 2007 à 10:21:07

Salut,

si tu places le header à sa place actuelle (après "// erreur lors de l'envoi du mail ") le document html est déjà en parti envoyé donc un header à déjà été envoyé par le serveur.

le plus simple est de simplement inverser la façon de faire.
au début ça ne change pas. tu testes les données envoyées par le formulaire, si il a été soumis.
mais au lieu d'attaquer la page html il faut en premier poser ta condition

if ($etat="ok")
(tu auras remarqué que j'ai inversé l'inégalité). à l'intérieur du sandwich tu envoies le mail. si l'envoie réussit tu renvoie ailleurs avec header().
ensuite du passe au else et attaques la page html.

j'espère avoir été clair. il suffit juste d'organiser le code "en sens inverse" de façon à pouvoir envoyer un header avant d'avoir envoyé un quelconque caractère, c'est à dire avant d'avoir écrit quoi que ce soit en html ou d'avoir utiliser un echo() ou tout autre commande php qui envoie du texte vers le navigateur.
[ Mathieu ]
Comprenne qui peut, succombe qui doit…

Répondre à Dalida

12

asmaau, le 7 fév 2008 à 23:41:47

Salut tt le monde ,j'ai un petit probleme
je veux la disponibilité de chambres d'1 hotel ,j'ai fais une requete ,et une boucle if pour verifier s'il y a la demande du client
voici le code

<body>
<form>
<table border=1 >
<tr><td>
<input type="text" name="nbre" />
</td></tr>
<tr><td> nombre de chambres </td>
<td><input type="text" name="nbr" /></td>
</tr>
<tr>
<td>type de chambre</td>
<td>
<select name="typechambre">
<option></option>
<option >single</option>
<option >double</option>
<option >suite geniors</option>
<option >suite seniors</option>
</select>
</td>
<tr>
<input type="submit" value="verifier" />
<? mysql_connect("localhost","root","");
mysql_select_db ("bd_php");
$req=mysql_query ("select count (*) as nbre from chambre where etat='dispo' ")
if ( $req => nbr )
// c là ou je ne c koi faire
// je veux redirectioner le client vers le formulaire pour le remplir
</body>
</html>


merci d'avance

Répondre à asmaau

13

Dalida, le 7 fév 2008 à 23:46:30

Salut,

fais ton test en tout début de document (aucun caractère avant la balise PHP !) et redirige avec 'header()'.
if ( $req => nbr )
{
header( 'Location: http://www.domaine.tld/formulaire.php' );
}
[ Mathieu ]
« On embauchera plus s'il est moins compliqué de licencier. » LP, 29 août 2007.

Répondre à Dalida

14

 dana, le 7 jun 2008 à 09:52:52

Bonjour,
j'ai creer un site web mais j'ai un probléme dans la partie envoi des mails au niveau Exchange,
je sais pas comment je le fais,

Répondre à dana
Collection CommentÇaMarche.net