Erreur header
- Accueil
- Forum
- Programmation
- PHP
- Erreur header
Florian Le 18 mai 2016 à 18:02 (Édité le 25 janvier 2019 à 17:51)
J'ai un problème assez WTFF, c'est a dire que les header(Location) fonctionne pas
le code
header('Location: index.php');
exit();
Y'a rien qui cloche pourtant
Je screen les packets PHP que j'ai mis sur mon site http://prntscr.com/b5khmu
Florian Le 18 mai 2016 à 20:06 (Édité le 1 janvier 1970 à 01:00)
Balatharas Le 18 mai 2016 à 20:06 (Édité le 18 mai 2016 à 20:07)
La solution
Assurez-vous de ne rien envoyer au client avant d'utiliser header(), mais si vous n'avez pas le choix, vous pouvez utiliser deux autres fonctions PHP (ob_start() et ob_end_flush()) pour vous aider. Noter que cette solution ne fonctionne que si ob_start() est à la première ligne, comme header() devrait être.
Voici comment :
<?php ob_start()
echo "J'envoie des données au client, donc header() ne devrait pas marcher.";
header("Location: http://www.google.ca/");
ob_end_flush()
?>
Correct
ob_start() met en cache tous les outputs et empêche PHP d'envoyer quoi que ce soit au client, tant que la fonction ob_end_flush() n'est pas appelée. N'oublier pas d'appeler ob_end_flush(), ou sinon rien ne se passeras.
Source ---> UnProgrammeurPHP
Florian Le 18 mai 2016 à 20:26 (Édité le 1 janvier 1970 à 01:00)
Voici le code
$title = "Connexion";
require('inc/header.php');
//echo $_SERVER['HTTP_X_FORWARDED_FOR'];
//echo "<br>". time();
if(isconnect() == false){
if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])){
$pseudo = htmlspecialchars($_POST['username']);
$requser = $bdd->prepare("SELECT * FROM membres WHERE mail = :username or users = :username");
$requser->execute(array(":username" => $pseudo));
$user = $requser->fetch();
if(password_verify($_POST['password'], $user['password'])){
updateLoginsLogs($user);
$_SESSION['username'] = $user['users'];
$_SESSION['mail'] = $user['mail'];
$_SESSION['id'] = $user['id'];
$_SESSION['grade'] = $user['grade'];
$_SESSION['compteconfirmed'] = $user['confirmed'];
$_SESSION['token_crsf'] = random(30);
setFlash('Connexion réussie !', 'success');
header('Location: ./'); // ICI ça bloque
}else{
$erreur = "Mauvais mot de passe";
}
}
?>
<div align="center">
<h2>Connexion</h2>
<br /><br />
<form method="POST" action="">
<input type="text" name="username" placeholder="Mail ou pseudo" />
<input type="password" name="password" placeholder="Mot de passe" />
<br /><br />
<input type="submit" name="formconnexion" value="Se connecter !" />
</form>
<?php
if(isset($erreur)) {
echo '<font color="red">'.$erreur."</font>";
}
}else{
echo isconnect();
header('Location: index.php'); // ICI ça bloque
}
?>
</div>
<?php
require('inc/footer.php');
?>
Balatharas Le 18 mai 2016 à 20:31 (Édité le 1 janvier 1970 à 01:00)
Florian Le 18 mai 2016 à 21:12 (Édité le 1 janvier 1970 à 01:00)
Le pire, c'est que tout fonctionner, l'hébergeur a fait une MAJ sur le dédier et depuis se moment la y'a des bugs
Balatharas Le 19 mai 2016 à 18:58 (Édité le 1 janvier 1970 à 01:00)
- Contacte ton administrateur web, ton hébergeur.
- Recommence ton code a partir de la ou ça a planté (en supposant que tu as actualisé ta page pour tout vérifier lorsque tu écrivait le code, mais je pense que oui 😀 )
Cyberium Le 24 mai 2016 à 01:38 (Édité le 1 janvier 1970 à 01:00)
Location: ./
Tu essaies de rediriger vers où ? Tu devrais essayer un chemin absolu (Location: /forum/messagerie) pour voir si ça fonctionne. Em-Bi Le 4 octobre 2016 à 12:06 (Édité le 1 janvier 1970 à 01:00)
ce blem a-t-il été resolu ou pas ?
je le rencontre moi aussi. Le header ne me redirige nul part.
j'attends votre aide 😒 ....
header("Location : connectuser.php"); //on dirait que ça ne reagit pas
Em-Bi Le 4 octobre 2016 à 12:08 (Édité le 1 janvier 1970 à 01:00)
Balatharas Le 5 octobre 2016 à 18:00 (Édité le 1 janvier 1970 à 01:00)
Em-Bi Le 6 octobre 2016 à 12:43 (Édité le 1 janvier 1970 à 01:00)
<?php
session_start();
$bdd = new PDO('mysql: host=127.0.0.1; dbname=sada', 'root', '');
if(isset($_POST['formconnect']))
{
$pseudoconnect=htmlspecialchars($_POST['pseudoconnect']);
$mdpconnect = sha1($_POST['mdpconnect']);
if (!empty ($pseudoconnect) AND !empty($mdpconnect))
{
$req = $bdd -> prepare("SELECT * FROM users WHERE mail = ? AND mdp = ?");
$req -> execute (array($pseudoconnect,$mdpconnect));
$userexist = $req -> rowCount();
if ($userexist == 1)
{
$userinfo = $req -> fetch();
$_SESSION ['id'] = $userinfo['id'];
$_SESSION ['pseudo'] = $userinfo['pseudo'];
$_SESSION ['mail'] = $userinfo['mail'];
header('Location : profil.php?id='.$userinfo['id']); //pas de réaction ici
exit;
}
else
{
$erreur = "Mail ou mot de passe incorrect ";
}
}
else
{
$erreur = "Tous les champs doivent être complétés !";
}
}
?>
je ne faisais que suivre un tuto que j'ai trouvé ici !