Php: session_start()

Signaler
-
Messages postés
32448
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2021
-
Bonjour,
J'ai un script pour me log sur mon site, mais il me met cette erreur quand je le met en ligne :"Warning: session_start(): Cannot start session when headers already sent in /storage/ssd3/384/16626384/public_html/login.php on line 16" et quand je me connecte il me met une autre erreur : "int(1)

Warning: Cannot modify header information - headers already sent by (output started at /storage/ssd3/384/16626384/public_html/login.php:1) in /storage/ssd3/384/16626384/public_html/login.php on line 29"
alors que quand je le test en local tout fonctionne.

et pour ceux qui veulent mon code dite le moi

merci a ceux qui me reponderont.

3 réponses

Messages postés
32448
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2021
3 484
Bonjour

L'instruction session_start et les instructions de type header ne peuvent pas être précédé par des instructions faisant de l'affichage ou du code HTML.
Il faut donc les placer au début de ton code.

Si tu ne trouve pas comment modifier, pense à nous poster ton code sur le forum en utilisant les balises de code.
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

.
Je comprend ce que vous dites pour les instructions et l'affichage html mais alors pourquoi cela fonctionne en local ?

Voici mon code

<!DOCTYPE html>
<html>
<head>
<link rel="icon" type="images/png" sizes="512x512" href="favicon_io/android-chrome-512x512.png">
<link rel="stylesheet" href="style1.css" />
<link rel="stylesheet" href="serie/all_style.css">
</head>
<body>
<div class="entete" onclick="window.location.reload()">
<img src="../img/logo.png" id="logo" alt="Logo Streawer"/>
<h1 id="nom">Streawer</h1>
</div>
<?php

require('config.php');
session_start();

if (isset($_POST['username'])){
$username = stripslashes($_REQUEST['username']);
$username = mysqli_real_escape_string($conn, $username);
$password = stripslashes($_REQUEST['password']);
$password = mysqli_real_escape_string($conn, $password);
$query = "SELECT * FROM `users` WHERE username='$username' and password='".hash('sha256', $password)."'";
$result = mysqli_query($conn,$query) or die(mysql_error());
$rows = mysqli_num_rows($result);var_dump($rows);
if($rows==1){
$_SESSION['username'] = $username;
if($_SESSION['username'] === 'admin'){
header("Location: admin.php");
}else{
header("Location: index1.php");
}
}else{
$message = "Le nom d'utilisateur ou le mot de passe est incorrect.";
}
}
?>
<form class="box" action="" method="post" name="login">
<h1 class="box-logo box-title" style="color: blue;">Streamwer</h1>
<h1 class="box-title">Connexion</h1>
<input type="text" class="box-input" name="username" placeholder="Nom d'utilisateur">
<input type="password" class="box-input" name="password" placeholder="Mot de passe">
<input type="submit" value="Connexion " name="submit" class="box-button">
<?php if (! empty($message)) { ?>
<p class="errorMessage"><?php echo $message; ?></p>
<?php } ?>
</form>
</body>
<footer>
<a href="http://copyright.be" target="_blank" style="text-decoration: none; color: #4DB89A;">Copyright © 2021 Streawer - Tous droits réservés</a>
</footer>
</html>
Messages postés
32448
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2021
3 484
Tout dépend du niveau d'affichage des erreurs php paramétré dans ton environnement.
Le fait que l'erreur ne s'affiche pas en local ne veut pas dire qu'elle n'existe pas.... et il faut la corriger !

Pour info : https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
si vous voulez regardez l'erreur voici le lien du site mise en ligne pour corriger l'erreur: streawer.000webhostapp.com.
Messages postés
32448
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2021
3 484
Je n'ai rien à regarder je t'ai donné la solution pour corriger ton soucis