Redirection

Résolu
Bonjour,
je travaille en html/php et lors dune identification ou le nom e mot de passe est recuperé,je souhaite faire une redirection
identification.php > login.php (qui enregistre dans session mais qui ne doit pas s afficher)>>redirection> accueil.php

jai utilisé pour linstant

<meta http-equiv="Refresh"
 content="20";URL="accueil.html">


mais jai une erreur :

Notice: A session had already been started - ignoring session_start() in /var/www/Portail_Logistique/cartouchesite/login.php on line 1

Notice: Undefined index: nom in /var/www/Portail_Logistique/cartouchesite/login.php on line 6

Notice: Undefined index: motdepasse in /var/www/Portail_Logistique/cartouchesite/login.php on line 7


login.php :

<? session_start()?>
<html><head></head><body>

<? //recupere les nom & mot de passe saisis

$_SESSION['nom']=$_POST['nom'];
$_SESSION['motdepasse']=$_POST['motdepasse'];

//redirection vers accueil.php
?>
<meta http-equiv="Refresh"
 content="20";URL="accueil.html">
</body></html>


merci d avance !
Configuration: Linux
Firefox 2.0.0.11

28 réponses

Résumé de la discussion

Le fil porte sur une identification en PHP où les nom et mot de passe sont stockés en session et une redirection vers accueil.php est envisagée via meta refresh. Des notices apparaissent, notamment 'session_start()' déjà démarré et 'Undefined index' pour noms, liées à l'ordre d'affichage et à l'absence de vérifications des POST. La solution préconisée dans les réponses évoque soit l'utilisation correcte de header 'Location' après vérification des POST, soit l'évitement de sorties HTML avant les en-têtes. En cas d'erreur persistante, il est recommandé de placer session_start() en tête du fichier, de vérifier isset($_POST['nom']) et de remplacer la redirection par header('Location: ...') puis exit.

Bobot (l’IA à votre service)
  1. utilise ça pour redirige :

    header("Location:accueil.php");
    exit;
    0
    1. merci mais jai des messages d erreur :


      Notice: A session had already been started - ignoring session_start() in /var/www/Portail_Logistique/cartouchesite/login.php on line 1

      Warning: Cannot modify header information - headers already sent by (output started at /var/www/Portail_Logistique/cartouchesite/login.php:1) in /var/www/Portail_Logistique/cartouchesite/login.php on line 11
      0
      1. ligne 1 etant <?session_start()?>
        et la 11 header blabla
        0
        1. redonne moi tout ton code stp !
          0
          1. ok alors :

            ma page identification.php :

            <form action="login.php" method="post">
            	<table align="center" border=0>
            	<tr>
            		<td> Nom : </td>
            		<td><input type="text" name="nom"></td>
            	</tr>
            	<tr>
            		<td> Mot de passe : </td>
            		<td><input type="password" name="motdepasse"></td>
            	</tr>
            	<tr>
            		<td></td>
            		<td><input type="submit" value="Valider"></td>
            	</tr></table></form>


            ma page login.php :

            <?session_start();?>
            <html><head></head><body>
            
            <? //recupere les nom & mot de passe saisis
            
            $_SESSION['nom']=$_POST['nom'];
            $_SESSION['motdepasse']=$_POST['motdepasse'];
            
            //redirection vers accueil.php
            
            header("Location:http:intranet.sdis81.fr/cartouchesite/accueil.html");
            exit;
            ?>
            </body></html>


            mes messages d'erreurs qui apparaisse après validation de l'identification

            Notice: A session had already been started - ignoring session_start() in /var/www/Portail_Logistique/cartouchesite/login.php on line 1

            Warning: Cannot modify header information - headers already sent by (output started at /var/www/Portail_Logistique/cartouchesite/login.php:1) in /var/www/Portail_Logistique/cartouchesite/login.php on line 11
            0
            1. essai plutot ça pour login.php :

              <?php

              session_start();

              //recupere les nom & mot de passe saisis

              $_SESSION['nom']=$_POST['nom'];
              $_SESSION['motdepasse']=$_POST['motdepasse'];

              //redirection vers accueil.php

              header("Location: accueil.html");
              exit;

              ?>
              0
              1. je viens d'essayer de faire dans login.php
                <?session_start();?>
                <html><head>
                <META http-equiv="refresh" content="1; URL=http://intranet.sdis81.fr/cartouchesite/accueil.html">
                </head><body>
                
                <? //recupere les nom & mot de passe saisis
                
                $_SESSION['nom']=$_POST['nom'];
                $_SESSION['motdepasse']=$_POST['motdepasse'];
                
                ?>
                </body></html>


                il va a lautre page
                mais entre temps ya toujours le message d'erreur sur session_start

                Notice: A session had already been started - ignoring session_start() in /var/www/Portail_Logistique/cartouchesite/login.php on line 1
                0
                1. C'est parce que tu as déjà une session de créée.
                  Il faut que tu la ferme quand tu te déconnecte.
                  0
              2. avec ta solution il me met :
                Notice: A session had already been started - ignoring session_start() in /var/www/Portail_Logistique/cartouchesite/login.php on line 16

                Warning: Cannot modify header information - headers already sent by (output started at /var/www/Portail_Logistique/cartouchesite/login.php:14) in /var/www/Portail_Logistique/cartouchesite/login.php on line 25


                jcrois qu il aime pas header :s

                je fais avec meta donc mais toujours le soucis avec session_start :s
                0
                1. Notice: A session had already been started - ignoring session_start() in /var/www/Portail_Logistique/cartouchesite/login.php on line 16
                  Voir ce que j'ai mis plus haut.

                  Warning: Cannot modify header information - headers already sent by (output started at /var/www/Portail_Logistique/cartouchesite/login.php:14) in /var/www/Portail_Logistique/cartouchesite/login.php on line 25
                  Tu dois avoir du HTML de déclaré avant ton header, et il n'en faut surtout pas.
                  0
              3. hein?? dejà crée? comment?
                0
                1. trois pages après j'ai fait un echo pour voir si ça enregistrait

                  <?session_start()?>
                  <html>
                  
                  <head>
                  
                  <title>Liste des sorties par reference</title>
                  
                  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                  
                  </head>
                  
                  
                  
                  <body>
                  
                  
                  <?php
                  error_reporting(E_ALL);
                  
                  include "connexion.php";
                  ?>
                  
                  <? //afficher valeur de SESSION 
                  echo $_SESSION['nom'];
                  echo $_SESSION['motdepasse'];?>


                  et jai bien le nom et mot de passe qui s'affiche

                  mais avant jai un message d'erreur encore

                  Notice: A session had already been started - ignoring session_start() in /var/www/Portail_Logistique/cartouchesite/choixref.php on line 2
                  0
                  1. Pas grave cette erreur.
                    0
                2. pour header c'est bon je fais avec

                  <META http-equiv="refresh" content="1; URL=http://intranet.sdis81.fr/cartouchesite/accueil.html">
                  </head><body>


                  et ça marche :)

                  sauf message d'erreur entre le changement de page sur session_start
                  0
                  1. oui peut etre pas grave mais il me la faut pas ^ ^
                    0
                    1. sur ta page login.php tu vire tout et mais juste ça :

                      <?php

                      session_start();

                      //recupere les nom & mot de passe saisis

                      $_SESSION['nom']=$_POST['nom'];
                      $_SESSION['motdepasse']=$_POST['motdepasse'];

                      //redirection vers accueil.php

                      header("Location: accueil.html");
                      exit;

                      ?>
                      vire tous même les balises head body ...
                      0
                      1. c'est fait : ça me marque :

                        Notice: A session had already been started - ignoring session_start() in /var/www/Portail_Logistique/cartouchesite/login.php on line 14

                        Warning: Cannot modify header information - headers already sent by (output started at /var/www/Portail_Logistique/cartouchesite/login.php:14) in /var/www/Portail_Logistique/cartouchesite/login.php on line 23
                        0
                        1. oui peut etre pas grave mais il me la faut pas ^ ^
                          0
                          1. Essaye avec session_destroy à la fin.
                            Mais tout à la fin.

                            Comme ça quand tu quitteras, tu détruira la session.
                            Tu en recréera une quand tu reviendras, et magique, plus de message d'erreur. ;)
                            0
                            1. brbr
                              jai deux fautes :
                              session_start
                              et session_destroy
                              0
                              1. Essaye session_unset à la place de session_destroy
                                0
                            2. pareil : erreur sur session start et sur session unset
                              0
                              1. Est ce que tu pourrais copier les erreurs et ton code par la même occasion ? :)
                                0
                            3. il est au dessus mon code :p
                              et les erreurs jpeux pas les recopier pas le temps ça change de page, c'ets les mm quand haut
                              0
                              1. Ou est ce que tu as mis session_unset ?
                                0
                            4. je lai enlevé ça marche pas :p
                              0
                              1. A mon avis c'est parce qu'il est mal placé.
                                Parce qu'il supprimera également l'erreur de session_start.

                                Je reprend un de mes code et je vois ça.
                                0
                            • 1
                            • 2