Php problème de header

Résolu/Fermé
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 - 21 août 2017 à 14:31
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 - 24 août 2017 à 11:27
Bonjour à tous,

Voila des heures que je m'arrache les cheveux avec un pb de header tout bête sans doute.
Je pense que j'ai des peaux de saucisson devant les yeux pour ne pas le voir...


Message d'erreur classique : "Header may not contain more than a single header, new line detected in C..."

Pas moyen de trouver qu'est ce qui traîne et qui gêne...
J'ai besoin d'aide svp !
Merci d'avance...

Voici mon code : (plutôt simple)


<?php
$c=$_POST['c'];
$ID=$_POST['ID'];
$conn = mysqli_connect('localhost', 'root', '', 'poitoo');
$req = "UPDATE `frais` SET `paye` = 'Y' WHERE `frais`.`ID` = $ID";
$res = $conn->query($req);
mysqli_close($conn);
header('Location: ./payer.php?c='.$c);
?>





5 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
23 août 2017 à 15:57
Salut,

Le problème semble venir du fait que ta variable $c contient un saut de ligne, or comme l'indique le message d'erreur, l'entête ne devrait pas contenir plusieurs ligne.

Essaye simplement de supprimer les sauts de ligne de ta variables $c avant d'effectuer la redirection :
$c = preg_replace("/\r|\n/", "", $c);
header('Location: ./payer.php?c='.$c);


Bonne journée,
2
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 1
24 août 2017 à 11:27
Alleluhia !
C'est ça !
Merci mille fois....

A moi de trouver pourquoi ma variable contient un saut de ligne...

Bonne journée à toi et encore merci
0
tani68 Messages postés 473 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 22 août 2017 199
21 août 2017 à 14:49
Et ton code html?
0
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 1
21 août 2017 à 19:17
Pas de html, c'est juste un fichier en php (entrée dans une base puis redirection
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 550
Modifié le 21 août 2017 à 20:09
bonsoir, et si tu fais
echo 'Location: ./payer.php?c='.$c;

cela donne quoi?
0
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 1
23 août 2017 à 14:06
Ca donne cà :
Location: ./payer.php?c= iCx44Tzb
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550
23 août 2017 à 17:22
et
echo 'Location: ./payer.php?c='.$c.'fin';
?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
21 août 2017 à 21:07
Bonjour,

Pour commencer... active l'affichage des erreurs PHP.
Ensuite, fais une connexion à ta bdd correctement ... (c'est à dire en gérant les éventuelles erreurs.)

Ne mélange pas non plus le style OBJET et le style procédural comme tu l'as fait !!

Puis récupère PROPREMENT les variables AVANT de les utiliser

Ensuite.. gère les éventuelles erreurs dans ta requête

Et pour finir ... toujours mettre un EXIT après une redirection.



Bref...comme ceci:

<?php

//Activation des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');

//connexion propre à la bdd :
$conn= @new mysqli('localhost', 'root', '', 'poitoo');

if ($conn->connect_errno) {
    die('Erreur de connexion : ' . $conn->connect_errno);
}

//récupération PROPRE des variables AVANT de les utiliser
$c = !empty($_POST['c']) ? $_POST['c'] : NULL;
$ID = !empty($_POST['ID ']) ? $_POST['ID '] : NULL;

//requete
if($c && $ID){
  $req = "UPDATE `frais` SET `paye` = 'Y' WHERE ID = '$ID'";

  if(!$conn->query($req)){
    printf("Message d'erreur : %s\n", $conn->error);
  }else{
     $conn->close();
     header('Location: ./payer.php?c='.$c);
     exit();
  }
}

?>



0
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 1
23 août 2017 à 14:17
Bonjour,
Merci de ta réponse.
J'ai testé ton code.
A part une erreur à la ligne 17 ( espace après ID), ça passe bien, mais toujours le même message d'erreur :

Warning: Header may not contain more than a single header, new line detected in C:\Users\.........\paiement.php on line 27

Une autre idée ?
0
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020
23 août 2017 à 14:21
Où se trouve ton code php ?
N'aurais tu pas du HTML ou des echo avant ???

Montre nous le code COMPLET de ton fichier
0
isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020 1 > jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024
23 août 2017 à 16:59
Merci de te pencher sur mon problème !
Voici la totalité de mon code : ( ou plutôt le tien !)



<?php
//Activation des erreurs PHP
error_reporting(E_ALL);
ini_set('display-errors','on');
//connexion propre à la bdd :
$conn= @new mysqli('localhost', 'root', '', 'poitoo');
if ($conn->connect_errno) {
die('Erreur de connexion : ' . $conn->connect_errno);
}
//récupération PROPRE des variables AVANT de les utiliser
$c = !empty($_POST['c']) ? $_POST['c'] : NULL;
$ID = !empty($_POST['ID']) ? $_POST['ID'] : NULL;
//requete
if($c && $ID){
$req = "UPDATE `frais` SET `paye` = 'Y' WHERE ID = '$ID'";
if(!$conn->query($req)){
printf("Message d'erreur : %s\n", $conn->error);
}else{
$conn->close();
header('Location: ./payer.php?c='.$c);
exit();
}
}
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 550 > isa-- Messages postés 77 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 11 mars 2020
23 août 2017 à 17:27
et c'est bien le fichier paiement.php?
serait-il possible que la redirection vers ./payer.php fonctionne, et que l'erreur arrive plus tard?
je te suggère de remplacer le contenu de payer.php par un simple echo.
0