Pb pour afficher la page après clique du form

tic -  
 tic -
Bonjour,
jai un petit livre d'or mais ya un petit souci
enfaite quand on rempli le form et on clique sur envoyer, et ba au lieu de renvoyer sur la page livre.php,
sa affiche "Internet Explorer ne peut pas afficher cette page Web" et le blabla qui va avec !
je ne sais pas si c'est un pb avec le "header location" ou le "action" du form ...
le message est bien enregistrer dans la bdd et s'affiche bien sur la page concernée
mais après le clique sa ne renvoi pas a la page qu'il faut
je vous met le code

<form action="insert_signature.php" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<span class="gras">Adresse E-mail :</span>
</td><td>
<input type="text" name="email" maxlength="50" size="50" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>">
</td></tr><tr><td>
<span class="gras">Votre message :</span>
</td><td>
;<textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Signer">
</td></tr></table>
</form>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>

<?php
if (isset($_POST['go']) && $_POST['go']=='Signer') {

if ((isset($_POST['auteur'])) && (isset($_POST['email'])) && (isset($_POST['message']))) {
// si les 3 variables ne sont pas vides, et si l'adresse E-mail est valide, alors, et seulement dans ce cas, on fera notre insertion dans la base
if ((!empty($_POST['auteur'])) && (!empty($_POST['email'])) && (!empty($_POST['message']))) {
// on verifie le format de l'adresse E-mail saisie
$test_mail = eregi ('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$', $_POST['email']);
if ($test_mail) {
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('test', $base);

// on prepare notre requête d'insertion des données
$sql = 'INSERT INTO livre_or VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['email']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['message']).'")';

// on lance la requête
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on ferme la connexion à la base de données
mysql_close();

// on redirige le visiteur vers l'accueil du livre d'or
header('location: livredor.php');

// on termine le script courant
exit();
}
else {
$erreur = 'Votre adresse E-mail est invalide.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
else {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
}
Configuration: Windows 7 / Internet Explorer 8.0

8 réponses

  1. Titial69 Messages postés 269 Statut Membre 20
     
    met le header location en tout premier, la redirection se fera une fois le php terminé, mais met le sur la première ligne.

    Sinon, c'est qu'il trouve pas le fichier livredor.php
    0
  2. graffx Messages postés 120 Date d'inscription   Statut Contributeur Dernière intervention   2 031
     
    Fais voir le lien de ton site :)
    0
  3. tic
     
    Je vois pas vraimeent où le mettre
    je l'ai mis a l'endroit visible en gras mais sa ne fonctionne pas sa renvoi sur la mm page (la page actuel)
    et aussi j'ai oublié de précisé avant, quand je clique sur envoyer, sa envoie "Internet Explorer ne peut pas afficher cette page Web" etc... et le lien dans la barre d'adresse est http://localhost........./insert_signature.php
    sachant que sa doit renvoyé sur la page livredor.php

    <form action="insert_signature.php" method="post">
    <table>
    <tr><td>
    <span class="gras">Auteur :</span>
    </td><td>
    <input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
    </td></tr><tr><td>
    <span class="gras">Adresse E-mail :</span>
    </td><td>
    <input type="text" name="email" maxlength="50" size="50" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>">
    </td></tr><tr><td>
    <span class="gras">Votre message :</span>
    </td><td>
    ;<textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea>
    </td></tr><tr><td><td align="right">
    <input type="submit" name="go" value="Signer">
    </td></tr></table>
    </form>
    <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    ?>

    <?php

    // on redirige le visiteur vers l'accueil du livre d'or
    header('location: livredor.php');

    if (isset($_POST['go']) && $_POST['go']=='Signer') {

    if ((isset($_POST['auteur'])) && (isset($_POST['email'])) && (isset($_POST['message']))) {
    // si les 3 variables ne sont pas vides, et si l'adresse E-mail est valide, alors, et seulement dans ce cas, on fera notre insertion dans la base
    if ((!empty($_POST['auteur'])) && (!empty($_POST['email'])) && (!empty($_POST['message']))) {
    // on verifie le format de l'adresse E-mail saisie
    $test_mail = eregi ('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$', $_POST['email']);
    if ($test_mail) {
    // on se connecte à notre base
    $base = mysql_connect ('localhost', 'root', '');
    mysql_select_db ('test', $base);

    // on prepare notre requête d'insertion des données
    $sql = 'INSERT INTO livre_or VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['email']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['message']).'")';

    // on lance la requête
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

    // on ferme la connexion à la base de données
    mysql_close();

    // on termine le script courant
    exit();
    }
    else {
    $erreur = 'Votre adresse E-mail est invalide.';
    }
    }
    else {
    $erreur = 'Au moins un des champs est vide.';
    }
    }
    else {
    $erreur = 'Les variables nécessaires au script ne sont pas définies.';
    }
    }

    et pour graffx, le site jle montrerais quand il sera mis en ligne et terminé :) lolll
    0
  4. graffx Messages postés 120 Date d'inscription   Statut Contributeur Dernière intervention   2 031
     
    Tes deux codes sont sur la meme pages ou le second est sur la page insert_signature.php?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tic
     
    enfaite sur la page "livredor.php" il y a tt les messages
    puis sur la page "insert_signature.php" il ya tt le code que j'ai posté précédemment :)
    0
    1. arthezius Messages postés 3756 Statut Membre 475
       
      Donc tout le code du message n°3 est sur le même fichier php ?

      Si c'est bien le cas, il faut que tu mettes le code de traitement (la deuxième partie du code du message n°3) en premier. Sinon le header(); ne sera pas pris en compte et t'affichera un message d'erreur.
      0
  7. tic
     
    Slt arthezius

    oui tout se passe sur la page insert_signature (il ya le form et tt le code qui va avec pour l'insertion)
    et le header() je ne sais pas vraiment où le placer, je l'ai mis un peu + haut mais sa ne marche pas
    après quel faudrai que je le met ?
    merci
    0
  8. arthezius Messages postés 3756 Statut Membre 475
     
    Pour la fonction header() c'est très simple. Ton script ne dois rien afficher à l'écran avant que la fonction ne soit déclaré. Tu peux faire des opérations dans ton script PHP mais le script ne doit rien envoyé au navigateur avant.
    Donc pas de echo''; ni aucun code html avant ça.
    0
  9. tic
     
    aahh c'est bon j'ai vu le pb
    enfaite il ma suffit de retirer la ligne "mysql_close()", et sa fonctionne !
    je ne sais pas si c'est bon d'enlever cette ligne, mais ca fontionne lol
    merci a tts ;)
    0