Utilisation de output buffering php
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Utilisation de output buffering php



  1. #1
    Polo1212

    Utilisation de output buffering php


    ------

    Bonjour,

    J'essaye de faire un formulaire de connexion avec php et Mysql et lors de la redirection avec la méthode "header('Location: *******');" je rencontre un problème :

    Warning: Cannot modify header information - headers already sent by (output started at /storage/ssd5/592/15964592/public_html/index.php:1) in /storage/ssd5/592/15964592/public_html/login.php on line 13

    On m'a conseillé d'utiliser output buffering mais je ne sais pas comment l'utiliser sur mon code.

    Je vous mets tout le code nécessaires pour pouvoir m'aider merci d'avance :

    index.php :

    Code PHP:
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Bijouterie RUBY</title>
        <!-- Icône haut de page -->
        <link rel="icon" type="image/png" href="img/bijouterieRuby.png" />
        <!-- CSS -->
        <link href="css/style.css" rel="stylesheet">
        <link href="css/style-responsive.css" rel="stylesheet">
        <!-- CSS image gallery -->
        <link href="css/lightbox.min.css" type="text/css" rel="stylesheet">
        <!-- Police texte -->
        <link rel ="preconnect" href ="https://fonts.gstatic.com">
        <link href="https://fonts.googleapis.com/css2?family=Spartan:wght@300&display=swap" rel="stylesheet">
        <!-- JS image gallery -->
        <script src="script/lightbox-plus-jquery.min.js"></script>
        <!-- Outil d'icônes -->
        <script src="https://kit.fontawesome.com/0aa4bbfaa0.js"></script>
        <!-- CDN Jquery -->
        <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
        <!-- Scripts -->
        <script src="script/sliderAccueil.js"></script>
        <script src="script/scriptRetourHautDePage.js"></script>
        <script src="script/scriptPageBijouxEtAccessoires.js"></script>
    </head>
    <body>
        <?php

            
    include 'html/header.html';
            include 
    'html/menu.html';

            if(isset(
    $_GET['page'])){
                switch(
    $_GET['page']){
                    case 
    'accueil' :
                        include 
    'html/accueil.html';
                    break;
                    case 
    'bijoux' :
                        include 
    'html/bijoux.html';
                    break;
                    case 
    'accessoires' :
                        include 
    'html/accessoires.html';
                    break;
                    case 
    'a-propos' :
                        include 
    'html/a-propos.html';
                    break;
                    case 
    'contact' :
                        include 
    'contact.php';
                    break;
                    case 
    'ml' :
                        include 
    'html/ml.html';
                    break;
                    case 
    'pc' :
                        include 
    'html/pc.html';
                    break;
                    case 
    'traitement' :
                        include 
    'traitement.php';
                    break;
                    case 
    'dashboard' :
                        include 
    'dashboard.php';
                    break;
                    case 
    'login' :
                        include 
    'login.php';
                    break;
                    default :
                    echo 
    "erreur";
                    break;
                }
            }else{
                include 
    'html/accueil.html';
            }

            include 
    'html/footer.html';
        
    ?>
    </body>
    </html>
    config.php :

    Code PHP:
    <?php

    $databaseHost 
    'localhost';
    $databaseName 'id15964592_bij*********';
    $databaseUsername 'id15964592_*******';
    $databasePassword 'Jessi******';

    $mysqli mysqli_connect($databaseHost$databaseUsername$databasePassword$databaseName);
     
    ?>
    formLogin.php :

    Code HTML:
    <style> 
        input[type=text], input[type=password] {
          width: 25%;
          padding: 10px 20px;
          margin: 5px 0;
          border: 1px solid black; 
        }
        input[type=submit] {
          width: 10%;
          padding: 12px 20px;
          border: 1px solid #555;
          background-color: pink;
          color:white;
            
        }
    </style>
        
    <form action="" method="POST">
        <label for="uname">Identifiant</label>
        <input type="text" name="uname" required=""><br><br>
        
        <label for="upassword">Mot de passe</label>
        <input type="password" name="upassword" required=""><br><br>
        
        <input type="submit" name="sub" value="Connexion">
    <form>
    login.php :

    Code PHP:
    <?php 
    include "config.php";
    include 
    "formLogin.php";

    if(isset(
    $_POST['sub'])){

        
    $uname $_POST['uname'];
        
    $upassword $_POST['upassword'];

        
    $res mysqli_query($mysqli,"SELECT * FROM user WHERE uname='$uname'and upassword='$upassword'");
        
    $result=mysqli_fetch_array($res);
        if(
    $result){
            
    header('Location:index.php?page=login');
        }else{
            echo 
    "Erreur";
        }
    }
    ?>
    dashboard.php (début du code) :

    Code PHP:
    <?php
    header
    ('Location:index.php?page=login');
    exit();
    //Compteur visites sur le site...

    -----

  2. #2
    Polo1212

    Re : Utilisation de output buffering php

    Ou si il y a un autre moyen de régler ce problème pour pouvoir rediriger simplement sur "dashboard.php".

    PS : Je débute

  3. #3
    Merlin95

    Re : Utilisation de output buffering php

    Tu as peut-être un espace à avant la balise <?php ou après "?>". Dans ton code pho il ne manque pas un "?>" ?

    Sinon il faut s'assurer qu'aucun code html ne soit exécuter avant le "Location:...".

  4. #4
    Polo1212

    Re : Utilisation de output buffering php

    Bonsoir,

    Je n’ai aucun espace avant et après les balises <?php et ?>.
    J’ai du code html qui est exécuté avant le «*Location:....*» dans le fichier login.php comment pourrais-je le mettre autre part dans le fichier login.php ? Car le code html exécuté est le formulaire de connexion.
    Merci d’avance.

  5. A voir en vidéo sur Futura
  6. #5
    Merlin95

    Re : Utilisation de output buffering php

    Tu écrit le code php avant tout html.
    Tu testes donc en premier en php si c'est un "post" et alors tu fais la redirection (si Login mdp corrects).

    Mais je ne sais pas dans ton cas particulier si il y a du code html en dehors de ce fichier php qui est exécuté.

    Si c'est le cas rebelotte il faudra que ton code php soit exécuté avant ce code html, tu devras par exemple alors réorganiser tes portions de fichiers qui forment la page pour que ce bout de code php qui fait la redirection soit en premier.

    Une solution est de remplir la balise "action" du formulaire pour poster "sur" une page php authentification.php qui contiendra la redirection si le logins/mdp sont corrects (regarde des exemples de code sur internet pour voir ce qui est possible de faire).
    Dernière modification par Merlin95 ; 14/05/2021 à 19h02.

  7. #6
    Polo1212

    Re : Utilisation de output buffering php

    "Une solution est de remplir la balise "action" du formulaire pour poster "sur" une page php authentification.php qui contiendra la redirection si le logins/mdp sont corrects (regarde des exemples de code sur internet pour voir ce qui est possible de faire)."
    >J'ai testé cette solution mais lors du clique sur "Connexion" rien ne se passe je reste sur la page d'authentification. Cela dit, j'ai plus l'erreur pour la redirection.
    Je peux vous montrer les modifications de mon code :

    login.php :

    Code PHP:
    <?php 
    if(isset($_POST['sub'])){

        
    $uname $_POST['uname'];
        
    $upassword $_POST['upassword'];

        
    $res mysqli_query($mysqli,"SELECT * FROM user WHERE uname='$uname'and upassword='$upassword'");
        
    $result=mysqli_fetch_array($res);
        if(
    $result){
            
    header('Location:dashboard.php');
        }else{
            echo 
    "Erreur";
        }
    }
    ?>
    formLogin.html :

    Code HTML:
    <style> 
        input[type=text], input[type=password] {
          width: 25%;
          padding: 10px 20px;
          margin: 5px 0;
          border: 1px solid black; 
        }
        input[type=submit] {
          width: 10%;
          padding: 12px 20px;
          border: 1px solid #555;
          background-color: pink;
          color:white;
            
        }
    </style>
        
    <form action="index.php?page=login" method="POST">
        <label for="uname">Identifiant</label>
        <input type="text" name="uname" required=""><br><br>
        
        <label for="upassword">Mot de passe</label>
        <input type="password" name="upassword" required=""><br><br>
        
        <input type="submit" name="sub" value="Connexion">
    <form>
    Merci encore pour vos réponse.

  8. #7
    Merlin95

    Re : Utilisation de output buffering php

    J'ai l'impression que tu ne passes pas par la page login.php, ou alors que le post est "perdu" pourquoi ne mets tu pas login.php dans la balise action au lieu de index?page=login ?

  9. #8
    Polo1212

    Re : Utilisation de output buffering php

    J'ai essayé de mettre dans la balise action login.php aussi mais ça me fait la même chose.

  10. #9
    Merlin95

    Re : Utilisation de output buffering php

    Pour comprendre tu dois soit déboguer soit mettre des logs pour savoir "où tu passes".

Discussions similaires

  1. alimentation et prise dc output
    Par nonouvel dans le forum Matériel - Hardware
    Réponses: 9
    Dernier message: 30/09/2014, 19h27
  2. ARIMA(3,2,2) output R
    Par Francko dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 24/07/2014, 14h10
  3. Problème de buffering avec VLC
    Par invite433a06c0 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 03/11/2007, 15h39
  4. Output cinema maison
    Par invitebfba8a0b dans le forum Électronique
    Réponses: 5
    Dernier message: 31/12/2004, 15h49
  5. output de radio dauto
    Par sevynaej dans le forum Dépannage
    Réponses: 4
    Dernier message: 21/09/2004, 22h27