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. merci mais c'est bon en fait (desolé de te repondre que maintenant mais jetais plus au stage et jai pas eu le temps de me reconnecter )
    le gars qui s occupe de moi m'a avoué après que jai subis toutes ces recherches et cet immense desespoir face a ce probleme que ce n'etait pas un probleme !
    que ce message etait normal car ils sont en "auto_start" !
    une chute bien decevante pour cette superbe journée de recherche ! ! !

    merci beaucoup en tout cas de m avoir aidé :)

    et jen aurais d autres comme ça jusqu au 28 juin donc je vous attend ;) et jespere que vous reviendrez a mon secours :p

    merci encore bizooox
    0
    1. il y avait des souci d'accolades je viens de rectifier et tester ce code marche nikel te suffit de rediriger ver la page que tu veut dans le header location après tu peu fignoler tan que tu veut ^^bon courage:

      <?php
      session_start();

      if (!isset($_SESSION['message'])) {
      $_SESSION['message']="veuillez saisir identifiant";
      } else {
      //on test les champs si rempli ou pas
      if(!isset($_POST ['log'])){
      $_SESSION['login']="";

      }else {

      header("Location:acceuil.php");
      exit;
      }
      }

      ?>

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <title>Admin : login</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

      </head>

      <body>

      <h1 align="center"><br>ACCES RESTREINT</h1>

      <div align="center"> <?php echo $_SESSION['message'];?><br> <br>
      <form action="" method="post">
      <table width="200" border="0" align="center">
      <tr>
      <td>Login:</td>
      <td><input type="text" name="log"></td>
      </tr>
      <tr>
      <td>pass:</td>
      <td><input type="password" name="pass"></td>
      </tr>
      <tr>
      <td> </td>
      <td><div align="right"><input type="submit" name="Submit" value="valider"></div></td>
      </tr>
      </table>

      </form>
      <br />
      <?php echo $_SESSION['login']; ?>
      <br />
      <br />
      </div>
      <div align="center">

      copyright aiacciu

      </div>
      </div>
      <br />
      </body>
      </html>
      0
      1. je te propose ce petit bout de code complet il y a tous ce qu'il te faut et sa devrait marcher :
        <?php
        session_start();
        
        
        
        
        if (!isset($_SESSION['message'])) {
        	$_SESSION['message']="veuillez saisir identifiant";
        } else {
        	//on test les champs si rempli ou pas	
        	if(!isset($_POST ['log'])){
        		$_SESSION['login']="";
        		
        		}else {
        		
        		
        		header("Location:test.php");
        		exit;
        		}
        	}
        	
        }
        
        ?>
        
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
        <html>
        <head>
        <title>Admin : login</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        
        </head>
        
        <body>
        
        	  <h1 align="center"><br>ACCES RESTREINT</h1> 
        	
        	
        		
        				<div align="center"> <?php echo $_SESSION['message'];?><br> <br>
        				<form action="" method="post">
        							 <table width="200" border="0" align="center">
        				 				 <tr>
        										<td>Login:</td>
        										<td><input type="text" name="log"></td>
        				  				</tr>
        				 				 <tr>
        										<td>pass:</td>
        										<td><input type="password" name="pass"></td>
        				  				</tr>
        				  				<tr>
        									<td>&nbsp;</td>
        									<td><div align="right"><input type="submit" name="Submit" value="valider"></div></td>
        				  				</tr>
        							</table>
        				
        					</form>
                            <br  />
                             <?php echo $_SESSION['login']; ?>
                             <br />
                             <br />
                            </div>
        			    <div align="center">
        			      
        			        copyright aicciu
        		         
          
        		        </div>
        		</div>
                <br /> 
        </body>
        </html>
        
        0
        1. je fais comment alors?
          0
          1. ben je men sers pas alors puisque je le quitte pas
            0
            1. Mais si tu ne vide pas tes variables de session, tu aura toujours une erreur.
              Parce que tu éssaye de créer une session alors que l'autre est toujours active.
              0
          2. je lai mis après $_SESSION blabla
            0
            1. Je comprend pourquoi ça ne marche pas. ^^
              Tu créer ta session, tu rajoute des variables et tu les supprime direct.
              Session_unset sert à vider tes variables, il faut donc l'utiliser quand tu quitte ton site.
              0
          3. hue non on se deconnecte pas :) c'est qu un exo :p
            0
            1. je lavais mis a la fin
              0
              1. Mais à quelle fin ? ^^
                Celle de ta page ou de ton code ?
                Est ce que tu as la possibilité de te déconnecter sur ton site ?
                0
            2. 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
            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. 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
            5. brbr
              jai deux fautes :
              session_start
              et session_destroy
              0
              1. Essaye session_unset à la place de session_destroy
                0
            6. 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. oui peut etre pas grave mais il me la faut pas ^ ^
                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. 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. oui peut etre pas grave mais il me la faut pas ^ ^
                      0
                      1. 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. 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. hein?? dejà crée? comment?
                          0
                          • 1
                          • 2