Warning: Cannot modify header information - headers already sent in C:\xampp\htd [Résolu]

Signaler
-
 btissam1998 -
Bonjour, aidez moi

<?php
ob_start();
session_start();
require_once('connexion.php');
error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);
if(isset($_POST['login'])){
$username=$_POST['username'];
$motpasse=$_POST['motpasse'];
if($username&&$motpasse){
$query="SELECT*from user where username='$username' AND motpasse='$motpasse'";
$query_run=mysqli_query($conn,$query);
$rep = mysqli_fetch_assoc($query_run);
if($rep!=''){
$_SESSION['id_user'] = $rep['id_user'];}
$row=mysqli_num_rows($query_run);
if($row==1){
flush();
header('Location: index(1).php');
exit();

//echo"<script type='text/javascript'>location.href='index(1).php';</script>";

//die('should have redirected by now');
}else{
echo "username ou password incorrect";
}
}else{
echo "veuillez saisir tous les champs";
}
}
?>

Configuration: Windows / Chrome 89.0.4389.82

4 réponses

Messages postés
32942
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
3 557
Bonjour,

Pour commencer, lorsque tu postes du code sur le forum tu dois utiliser les BALISES DE CODE.
Explications (à lire entièrement !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite, merci d'appliquer les r conseils donnés ici : https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Enfin, l'extension mysql_* est obsolète...
Désormais tu dois passer à PDO ( ma préférence... ) ou mysqli https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top


On peut utiliser le pdo et procedural dans même projet ?

J'ai travaillé avec pdo toujours reste le même promblème
Messages postés
32942
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
3 557 > btissam1998
Bah, il faudrait nous montrer ton code en PDO...

j'ai trouvé le problème dans securityuser.php lorsque je l'enlève le header fonctionne mais j'ai besoin de la securité

<?php
session_start();
require_once('connexion.php');
if (!$_SESSION['username']) {

header('Location: login(1).php');
}
?>
Messages postés
15995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 juin 2021
867
peux-tu partager le message d'erreur complet?
Messages postés
32942
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
3 557
Je t'ai expliqué que tu devais utiliser les balises de code pour poster ton code sur le forum....

Concernant ton souci, toutes les instructions PHP header. Doivent se situer avant tout affichage HTML ou écho de PHP .....

quoi qu'il en soit, comme tu ne nous montre pas ton code complet, il nous est impossible de t'en dire davantage.



<?php
ob_start();
session_start();
require_once('connexion.php');
error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);
if (!$_SESSION['username']) {
flush();
header('Location:login(1).php');
exit();
//echo'<script >document.location.replace("login(1).php");</script>';
}


Notice: Undefined index: username in C:\xampp\htdocs\gauto-preview\gauto-preview\securityuser.php on line 7

Warning: Cannot modify header information - headers already sent in C:\xampp\htdocs\gauto-preview\gauto-preview\securityuser.php on line 9
Messages postés
15995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 juin 2021
867
as-tu essayé en supprimant la ligne avec flush()?
>
Messages postés
15995
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 juin 2021

Flush affiche l'erreur
Messages postés
32942
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
3 557
l'ob_start et le flush n'ont aucune utilité dans ton code... retire les.

Ensuite... tu as des erreurs car ta variable de session n'existe pas.

Pour éviter cela.. il faut récupérer PROPREMENT les variables AVANT de les utiliser :
Par exemple
<?php
session_start();

error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);

require_once('connexion.php');


$username = !empty($_SESSION['username']) ? $_SESSION['username'] : NULL;

if (!$username) {
  header('Location:login(1).php');
  exit();
  //echo'<script >document.location.replace("login(1).php");</script>';
}



PS: Merci de relire le lien concernant l'utilisation des balises de code que etu n'as pas du lire entièrement !!
Il faut, DANS les balises .. indiquer le LANGAGE . ça permet d'avoir la coloration syntaxique ainsi que la numérotation des lignes... (comme dans le code que je t'ai donné )
>
Messages postés
32942
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021

Merci beaucoup