IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Redirection impossible - erreur header [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Par défaut Redirection impossible - erreur header
    Bonjour à tous,

    Alors voilà, dans le but de rediriger vers une page d'erreur, j'ai mis en place une redirection par
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: ./url/');
    Le soucis que je rencontre est le suivant:

    Warning: Cannot modify header information - headers already sent by (output started at .../includes/checkin.php:1) in .../includes/checkin.php on line 29
    Voici les fichiers en question:
    checkin.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
    include('connexion.php');
     
    $username = $_POST['username'];
    $password = $_POST['password'];
     
    if ($username)
    {
    	$query="SELECT * FROM utilisateurs WHERE username='$username' AND pass='$password'";
    	$result=$bdd->query($query);
    	if ($result)
    	{
    		$ligne=$result->fetch();
    		if ($ligne)
    		{
    			$_SESSION['utilisateur']['nom'] = $ligne['nom'];
    			$_SESSION['utilisateur']['prenom'] = $ligne['prenom'];
    			$_SESSION['utilisateur']['admin'] = $ligne['administrateur'];
    			$location = "./../index.php";
    		}
    	}
    	else{
    		$location = "./../error.php?code=invuser";
    	}
    }
    else{
    	$location = "./../error.php?code=nouser";
    }
    header("Location: $location");
    exit;
    ?>
    connexion.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    include("data.php");
    global $dbserver;
    global $dbdb;
    global $dbuser;
    global $dbpass;
    //CONNEXION A LA BASE DE DONNEES
    try
    {
    	$bdd = new PDO("mysql:host=$dbserver;dbname=$dbdb", $dbuser, $dbpass);
    }
    catch (Exception $e)
    {
    	$location = "./../error.php?code=dbconnect";
    }
    // @MYSQL_CONNECT ("$dbserver","$dbuser","$dbpass") or die header('Location: ./../error.php?code=nodbconnect');
    // mysql_select_db("$dbdb");
    ?>
    Et finalement le fichier data.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    //VERSION - NE PAS MODIFIER NI SUPPRIMER
    $version="1.0.0";
     
    //INDIQUER ICI LES DONNEES DE CONNEXION A VOTRE BASE DE DONNEES FOURNIES PAR VOTRE HEBERGEUR
    $dbserver="serveur"; //ADRESSE DU SERVEUR SQL
    $dbdb="basededonnes"; //NOM DE LA BASE DE DONNEES A UTILISER
    $dbuser="utilisateur"; //NOM D'UTILISATEUR DE LA LA BASE DE DONNEES A UTILISER
    $dbpass="motdepasse"; //MOT DE PASSE DE LA BASE DE DONNEES A UTILISER
     
    //LES TABLES SERONT CONSTRUITES AUTOMATIQUEMENT - CHANGEZ LES NOMS SI VOUS AVEZ DEJA DANS VOTRE BASE DE DONNEES DES TABLES PORTANT LES MEMES NOMS
     
    //URL DES PAGES
    $url_page="index.php";
    $repertoire_admin="admin";
     
    //AFFICHAGE DES MENUS SUR LA PAGE D'ACCUEIL DE L'AGENDA
    $menu_ajouter=1;
    $menu_compte=1;
     
    //NOTIFICATIONS PAR EMAIL : EVENEMENT EN ATTENTE, UTILISATEUR EN ATTENTE, PERTE DE MDP
    $email_des="info@localhost.be";
    ?>

    J'ai lu sur la toile que cela pouvait venir d'un espace ou autre caractère trainant en dehors des balises php ou un echo dans les balise.
    J'ai vérifier partout, et aucun "espace" ou echo dans les fichiers.
    J'édite les fichiers avec Notepad++ avec un encodage UTF-8 et j'ai placé l'UTF-8 en charset dans les meta de mes pages.

    Dois-je également placer un charset meta dans le fichier checkin.php (alors que ce fichier n'est inclu nulle part ?)

    En vous remerciant pour votre patience et pour l'aide que vous pourrez m'accorder. Bonne journée à tous.

  2. #2
    Membre éclairé Avatar de Charvalos
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2010
    Messages
    356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2010
    Messages : 356
    Par défaut
    Salut !

    Une tamporisation de sortie en PHP ?

  3. #3
    Membre éclairé Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Par défaut
    mouais...

    Je ne trouve pas que le fait d'utiliser une tamporisation va résoudre mon problème, juste le déplacer, et cela ne m'intéresse pas trop à vrai dire.

    Le fait que je déclare des variables en global pourrait-il influencer le traitement de la page ?

    Comme dans le fichier "connexion.php" j'ai les lignes
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    global $dbserver;
    global $dbdb;
    global $dbuser;
    global $dbpass;

    Mais le plus tracassant, il me renseigne l'erreur à la ligne 1 du fichier "checkin.php" ...

    D'autres idées ?

    Au fait, juste pour test, j'ai mis une ligne vide (simple retour à la ligne) à la ligne 1 du fichier "checkin.php" et il me lance l'erreur sur la ligne 2 à présent, donc il semblerait que ce soit lié à l'instruction "<?php".

  4. #4
    Membre éclairé Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Par défaut
    ATTENTION :

    Lorsque vous utiliser un éditeur de texte tel que par exemple NOTEPAD++, vérifier que l'encodage des fichiers soit en UTF-8 (sans BOM).

    Une fois les fichiers converti dans cet encodage, cela à réglé mon problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Redirection wordpress impossible - erreur 404 ?
    Par papillouma dans le forum 1&1
    Réponses: 2
    Dernier message: 11/04/2012, 11h53
  2. Réponses: 5
    Dernier message: 02/07/2010, 18h53
  3. Pb de redirect avec fonction header
    Par adlaf dans le forum Langage
    Réponses: 4
    Dernier message: 20/02/2006, 15h25
  4. Erreur : headers already send by
    Par arnolem dans le forum Langage
    Réponses: 7
    Dernier message: 31/10/2005, 11h41
  5. redirection impossible => error 500 !
    Par alfigor dans le forum ASP
    Réponses: 4
    Dernier message: 26/04/2004, 10h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo