Problème de redirection php

soniadm Messages postés 10 Statut Membre -  
harderpod Messages postés 326 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

tout d'abord merci à tout ceux qui prendront le temps de m'aider;)
voici le souci: j'ai un formulaire avec envoi de pj.
Dans le cas où le formulaire est accepté, je souhaiterais rediriger l'internaute sur une autre page.
Or: avec le code suivant, quand j'envoie le formulaire, je retombe sur une page index.php?page=Nouveauxauteurs, je ne comprends pas pour quoi je n'attéris pas sur la page ?page=validationManuscrit.php tout simplement. J'ai toujours index.php avant l'url de ma page de redirection.

Idem pour le message d'erreur, en cas de fichier non conforme, je n'arrive pas à changer ma page de redirection.
j'ai vraiment besoin de votre aide!
MERCI D'AVANCE!;)

<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
$ref = $_POST['reference'];
$adresse = $_POST['adresse'];
$ville = $_POST['ville'];
$cp = $_POST['cp'];
$tel = $_POST['tel'];
$date = date("d-m-Y");
$heure = date("H");
$minutes = date("i");


if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
$insertSQL = sprintf("INSERT INTO auteurs (ID, nom, prenom, adresse, ville, cp, tel, email, pass, statut, reference) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['ID'], "int"),
GetSQLValueString($nom, "text"),
GetSQLValueString($prenom, "text"),
GetSQLValueString($adresse, "text"),
GetSQLValueString($ville, "text"),
GetSQLValueString($cp, "text"),
GetSQLValueString($tel, "text"),
GetSQLValueString($email, "text"),
GetSQLValueString($_POST['pass'], "text"),
GetSQLValueString($_POST['statut'], "text"),
GetSQLValueString($ref, "text"));

mysql_select_db($database_Connexionbook, $Connexionbook);
$Result1 = mysql_query($insertSQL, $Connexionbook) or die(mysql_error());


if ($_FILES['nom_du_fichier']['error']) {
switch ($_FILES['nom_du_fichier']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
echo"Le fichier dépasse la limite autorisée";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert !";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "Le fichier que vous avez envoyé a une taille nulle !";
break;
}
$insertGoTo = "../index.php";
}
else {
// $_FILES['nom_du_fichier']['error'] vaut 0 soit UPLOAD_ERR_OK
// ce qui signifie qu'il n'y a eu aucune erreur
$titre = $_FILES['nom_du_fichier']['name'];
move_uploaded_file ($_FILES['nom_du_fichier']['tmp_name'],"/homez.116/bookimpu/www/manuscrit/".$titre);

$headers1 ='From: "Book"<commande@book.com>'."\n";
$headers1 .='Reply-To: ut@book.com'."\n";
$headers1 .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers1 .='Content-Transfer-Encoding: 8bit';

$message ='<html><head><title>Nouveau manuscrit</title></head>
<body>
Un nouveau manuscrit est disponible dans le dossier : www/manuscrit<br/>
Nom du fichier : '.$titre.'<br/>
Référence : '.$ref.'<br/>
Auteur : '.$prenom.' '.$nom.' ('.$email.')<br/>
Date : '.$date.' à '.$heure.'h'.$minutes.'
</body></html>';

mail('commande@book.com', 'Nouveau manuscrit', $message, $headers1);

$headers2 ='From: "Book"<commande@book.com>'."\n";
$headers2 .='Reply-To: ut@book.com'."\n";
$headers2 .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers2 .='Content-Transfer-Encoding: 8bit';

$message2 ='<html><head><title>Félicitations !</title></head>
<body>

Si une des informations ci-dessous est incorrect, merci de répondre à cet email : <br/>
Prénom : '.$prenom.'<br/>
Nom : '.$nom.'<br/>
Téléphone : '.$tel.'<br/><br/>

</body></html>';

mail($email, 'Félicitations !', $message2, $headers2);
$insertGoTo ="?page=validationManuscrit.php";
}

if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
@header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_Connexionbook, $Connexionbook);
$query_rsAuteurs = "SELECT * FROM auteurs";
$rsAuteurs = mysql_query($query_rsAuteurs, $Connexionbook) or die(mysql_error());
$row_rsAuteurs = mysql_fetch_assoc($rsAuteurs);
$totalRows_rsAuteurs = mysql_num_rows($rsAuteurs);
?>



3 réponses

harderpod Messages postés 326 Date d'inscription   Statut Membre Dernière intervention   50
 
Salut, tu devrais echo tes variables ou tu stcok l'url pour comprendre, sinon tu peut utiliser les header

if($formulaire == true){
header ('location: index.php?page=validationManuscrit.php');
}

tu tourne un boolean sur true si ton formulaire est valide, tu test ta variable et tu fais la redirection.
0
soniadm Messages postés 10 Statut Membre
 
salut Harderpod!
tout d'abord un grand merci pour ton message. J'ai essayé ce que tu m'as dit, mais la page réagit toujours pareil! :(
pour l'nstant j'ai toujours:
$insertGoTo ="?page=validationManuscrit.php";
peut etre n'est il pas à sa bonne place?
merci d'avance!
0
harderpod Messages postés 326 Date d'inscription   Statut Membre Dernière intervention   50
 
ne passe pas par $insertGoto écrit ton URL manuellement dans une condition if else
si test true -> hedear ("location: index.php?page=validationManuscrit");
sinon -> header("location: index.php?page=errorPage.php");
0
soniadm Messages postés 10 Statut Membre
 
Hello harderpod!
voilà le message d'erreur que j'obtiens sur la page:
Warning: Cannot modify header information - headers already sent by (output started at /homez.116/bookimpu/www/index.php:8) in /homez.116/bookimpu/www/Templates/Nouveauxauteurs.dwt.php on line 63
Je n'ai pas l'impression qu'il accepte un nouvel header!
0
harderpod Messages postés 326 Date d'inscription   Statut Membre Dernière intervention   50
 
tu utilise une architecture mvc pour ton site ?

https://forums.commentcamarche.net/forum/affich-1257704-php-warning-cannot-modify-header-information

sinon plusieurs solutions sont proposées dans le topic au dessus, jette un oeil si des fois y a pas ta réponse
0