Erreur header information
Résolu
Alexis
-
Alexis -
Alexis -
Bonjour à tous,
J'ai un site où il y a un espace membres, avec un formulaire d'inscription et un formulaire de connexion. Le problème c'est que je ne peux pas me connecter en tant que tel : j'ai un message d'erreur qui me dit "Warning: Cannot modify header information - headers already sent by (output started at /home/salutsa1/public_html/inscriptions/connexionjeunes.php:1) in /home/salutsa1/public_html/inscriptions/connexionjeunes.php on line 16" lorsque je suis sur ces pages : https://inscriptions.saumurteamtriathlon.fr/connexionjeunes.php et https://inscriptions.saumurteamtriathlon.fr/connexion.php
Est ce que vous savez ce que je dois modifier ? Voici le code :
Le message s'affiche uniquement quand il y a un bon mot de passe, sinon les messages d'erreurs s'affichent correctement.
J'ai un site où il y a un espace membres, avec un formulaire d'inscription et un formulaire de connexion. Le problème c'est que je ne peux pas me connecter en tant que tel : j'ai un message d'erreur qui me dit "Warning: Cannot modify header information - headers already sent by (output started at /home/salutsa1/public_html/inscriptions/connexionjeunes.php:1) in /home/salutsa1/public_html/inscriptions/connexionjeunes.php on line 16" lorsque je suis sur ces pages : https://inscriptions.saumurteamtriathlon.fr/connexionjeunes.php et https://inscriptions.saumurteamtriathlon.fr/connexion.php
Est ce que vous savez ce que je dois modifier ? Voici le code :
<?php
$bdd = new PDO('mysql:host=***=***', '***', '***');
if(isset($_POST['formconnexion'])) {
$mailconnect = htmlspecialchars($_POST['mailconnect']);
$mdpconnect = sha1($_POST['mdpconnect']);
if(!empty($mailconnect) AND !empty($mdpconnect)) {
$requser = $bdd->prepare("SELECT * FROM membres WHERE mail = ? AND mdp = ?");
$requser->execute(array($mailconnect, $mdpconnect));
$userexist = $requser->rowCount();
if($userexist == 1) {
$userinfo = $requser->fetch();
$_SESSION['id'] = $userinfo['id'];
$_SESSION['pseudo'] = $userinfo['pseudo'];
$_SESSION['mail'] = $userinfo['mail'];
header("Location: profil.php?id=".$_SESSION['id']);
} else {
$erreur = "Mauvais mail ou mot de passe !";
}
} else {
$erreur = "Tous les champs doivent être complétés !";
}
}
?>
<html>
<head>
<title>Espace membre STT</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link id="u-theme-google-font" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,100i,300,300i,400,400i,500,500i,700,700i,900,900i">
<style>
body{
font-family: roboto;
font-size: 15px;
background-color: #bada55;
color: #333333;
text-align: center;
}
#boite{
background-color: #ffffff;
height: auto;
width: 30%;
border-radius: 10px;
margin-top: 5%;
margin-left: auto;
margin-right: auto;
margin-bottom: 5%;
box-shadow: -1px 2px 5px 1px rgba(0, 0, 0, 0.8);
}
#logo{
padding-top: 7%;
display: block;
max-width: 50%;
height: auto;
position: center;
margin-right: auto;
margin-left: auto;
}
input[type=email]{
border-radius: 5px;
border-width: 1px;
width: 60%;
height: 30px;
}
input[type=password]{
border-radius: 5px;
border-width: 1px;
width: 60%;
height: 30px;
}
.boutton{
border-radius: 20px;
border-width: 0px;
background-color: #333333;
font-size: 15px;
padding: 8px;
max-width: 40%;
color: #ffffff;
transition: background-color 0.25s;
font-weight: bold;
text-decoration: none;
}
.boutton:hover{
background-color: #BADA55;
}
.liens{
font-size: 12px;
font-family: roboto;
text-decoration: none;
color: #BADA55;
}
@media (max-width: 575px){
#boite{
width: 80%;
font-family: roboto;
}
</style>
</head>
<body>
<div align="center" id="boite">
<img src="Logo.png" id="logo">
<h2>Connexion</h2>
<form method="POST" action="">
<p>Adresse email :</p>
<input type="email" name="mailconnect" placeholder="Mail" /><br>
<p>Mot de passe :</p>
<input type="password" name="mdpconnect" placeholder="Mot de passe" />
<br /><br />
<input type="submit" name="formconnexion" value="SE CONNECTER !" class="boutton" /><br><br>
</form>
<?php
if(isset($erreur)) {
echo '<font color="red">'.$erreur."</font>";
}
?>
<a href="index.php" class="liens">Retour</a><br><br>
</div>
</body>
</html>
Le message s'affiche uniquement quand il y a un bon mot de passe, sinon les messages d'erreurs s'affichent correctement.
Configuration: Windows / Chrome 92.0.4515.107
A voir également:
- Erreur header information
- Erreur 0x80070643 - Accueil - Windows
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
2 réponses
Bonjour,
Déjà, lorsque tu postes du code sur le forum, tu dois préciser le langage dans les balises de code afin d'avoir la coloration syntaxique et la numérotation des lignes.
Documentation à lire entièrement disponible ici :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Ensuite:
Ton erreur vient du fait que tu n'as pas démarré tes sessions au début de ton script.
Et puis.. il y a plein de choses à dire sur ton code.
A commencer par le fait que tu stockes le mot de passe en clair dans ta bdd ( donc pb de sécurité)
Je t'invite à te pencher sur la fonction php password_hash et password_verify
Ensuite, pour pdo, il faut activer ( et gérer ) les éventuelles erreurs.
Pour ça, merci d'appliquer ceci
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et enfin, dans la doc PDO il est bien indiqué que l'instruction rowCount est à oublier pour les requêtes de type SELECT. A la place, tu feras un COUNT sur le FETCHALL de ta requête
et enfin, htmlspecialchar s'utilise pour de l'affichage de données sur une page ... pas pour se servir ensuite des données dans des requêtes SQL ou pour les stocker en bdd. Vu que tu utilises PDO et les requêtes préparées , tu n'as pas besoin (et c'est même déconseillé..) d'utiliser cette fonction pur "protéger" tes variables dans tes requêtes
Déjà, lorsque tu postes du code sur le forum, tu dois préciser le langage dans les balises de code afin d'avoir la coloration syntaxique et la numérotation des lignes.
Documentation à lire entièrement disponible ici :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Ensuite:
Ton erreur vient du fait que tu n'as pas démarré tes sessions au début de ton script.
Et puis.. il y a plein de choses à dire sur ton code.
A commencer par le fait que tu stockes le mot de passe en clair dans ta bdd ( donc pb de sécurité)
Je t'invite à te pencher sur la fonction php password_hash et password_verify
Ensuite, pour pdo, il faut activer ( et gérer ) les éventuelles erreurs.
Pour ça, merci d'appliquer ceci
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et enfin, dans la doc PDO il est bien indiqué que l'instruction rowCount est à oublier pour les requêtes de type SELECT. A la place, tu feras un COUNT sur le FETCHALL de ta requête
et enfin, htmlspecialchar s'utilise pour de l'affichage de données sur une page ... pas pour se servir ensuite des données dans des requêtes SQL ou pour les stocker en bdd. Vu que tu utilises PDO et les requêtes préparées , tu n'as pas besoin (et c'est même déconseillé..) d'utiliser cette fonction pur "protéger" tes variables dans tes requêtes
Bonjour Jordane,
Déjà merci de votre réponse. Je suis nouveau ici, je ne connais encore guère les uses et coutumes du Forum mais je vais tâcher de les appliquer.
J'ai ajouté
J'ai essayé de mettre un
Après. Mes mots de passe ne sont pas stockés en clairs mais hashés via
Et je vais me renseigner sur les erreurs PDO.
Merci de votre aide :D
Déjà merci de votre réponse. Je suis nouveau ici, je ne connais encore guère les uses et coutumes du Forum mais je vais tâcher de les appliquer.
J'ai ajouté
session_start();mais j'ai un code erreur "Warning: session_start(): Cannot start session when headers already sent in /home/salutsa1/public_html/inscriptions/connexion.php on line 3"
J'ai essayé de mettre un
session_destroy();mais j'ai là aussi un code erreur :(.
Après. Mes mots de passe ne sont pas stockés en clairs mais hashés via
sha1ça a l'air ancien mais cela me suffit, il n'y a rien de réélement confidentiel...
Et je vais me renseigner sur les erreurs PDO.
Merci de votre aide :D