Redirection de page

Redirection de page - PHP - Programmation

Marsh Posté le 02-06-2005 à 10:36:27    

Bonjour à tous, j'aimerai effectuer une redirection de page lorsqu'un utilisateur entre son login et son mot de passe. Suivant les informations reçues, j'aimerai soit l'autoriser à entrer donc le rediriger sur une certaine page soit lui interdire l'accès et le rediriger sur la page enregistrement qu'il puisse essayer à nouveau.
J'ai essayer avec header mais ça redirige directement au chargement de la page alors que j'aimerai quand même accéder à mon formulaire d'enregistrement. Est-ce que quelqu'un pourrait me venir en aide?
Merci

Reply

Marsh Posté le 02-06-2005 à 10:36:27   

Reply

Marsh Posté le 02-06-2005 à 10:50:24    

fgiuliano a écrit :

Bonjour à tous, j'aimerai effectuer une redirection de page lorsqu'un utilisateur entre son login et son mot de passe. Suivant les informations reçues, j'aimerai soit l'autoriser à entrer donc le rediriger sur une certaine page soit lui interdire l'accès et le rediriger sur la page enregistrement qu'il puisse essayer à nouveau.
J'ai essayer avec header mais ça redirige directement au chargement de la page alors que j'aimerai quand même accéder à mon formulaire d'enregistrement. Est-ce que quelqu'un pourrait me venir en aide?
Merci


la fonction header, tu l'appelles à quel moment?

Reply

Marsh Posté le 02-06-2005 à 10:53:22    

Au tout début de ma page, avant le code html

Reply

Marsh Posté le 02-06-2005 à 10:58:36    

Tu as mis un test avant de faire le header ?

Reply

Marsh Posté le 02-06-2005 à 10:59:28    

fgiuliano a écrit :

Au tout début de ma page, avant le code html


hmm, ton code doit être de la forme:

Code :
  1. if login_is_correct($login,$pass) {
  2.     header("Location: ok.php" );
  3. }
  4. else {
  5.     header("Location: pasok.php" );
  6. }


 
quelque chose comme ça quoi


Message édité par onizuka_sensei le 02-06-2005 à 11:00:57
Reply

Marsh Posté le 02-06-2005 à 11:06:37    

En fait, en le faisant comme ça, l'erreur suivante s'affiche:
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\web2\accesprive.php:23) in c:\program files\easyphp1-8\www\web2\accesprive.php on line 40

Reply

Marsh Posté le 02-06-2005 à 11:07:10    

Balance tout ton code

Reply

Marsh Posté le 02-06-2005 à 11:13:59    

Voilà la partie du test et de la redirection:
 
<?  
   error_reporting(E_ALL ^ E_NOTICE);
 
   if((($_POST["pass"] == "toto" ) and ($_POST["login"] == "Serge" ))  
   {
      header("Location: Etats.php" );  
   }
   else
   {
      header("Location: AccesPrive.php" );
   }
?>
 
Avant, il y a la connexion à ma base de donnée plus du code html normal et après du code html et la fermeture de ma connexion à ma base

Reply

Marsh Posté le 02-06-2005 à 11:15:31    

fgiuliano a écrit :

Voilà la partie du test et de la redirection:
 
<?  
   error_reporting(E_ALL ^ E_NOTICE);
 
   if((($_POST["pass"] == "toto" ) and ($_POST["login"] == "Serge" ))  
   {
      header("Location: Etats.php" );  
   }
   else
   {
      header("Location: AccesPrive.php" );
   }
?>
 
Avant, il y a la connexion à ma base de donnée plus du code html normal et après du code html et la fermeture de ma connexion à ma base


 
Il faut rien avant un header.

Reply

Marsh Posté le 02-06-2005 à 11:19:54    

Sinon utilise le javascript pour la redirection, c'est moins contraignant...

Code :
  1. function redirection($url) {
  2.     echo "<script language=\"javascript\" type=\"text/javascript\">
  3.     window.location.replace($url);
  4.     </script>";
  5. }
  6. if((($_POST["pass"] == "toto" ) and ($_POST["login"] == "Serge" )) {
  7.    redirection("Etats.php" ); 
  8. }
  9. else {
  10.    redirection("AccesPrive.php" );
  11. }


une des solutions..


Message édité par onizuka_sensei le 02-06-2005 à 11:21:11
Reply

Marsh Posté le 02-06-2005 à 11:19:54   

Reply

Marsh Posté le 02-06-2005 à 11:21:22    

+1, le JavaScript est une bonne chose, mais sera-t-il activé chez le client ? :D


Message édité par Killer_386 le 02-06-2005 à 11:21:31
Reply

Marsh Posté le 02-06-2005 à 11:22:43    

Mais y'a pas besoin de javascript

Reply

Marsh Posté le 02-06-2005 à 11:27:29    

cesarr89 a écrit :

Mais y'a pas besoin de javascript


j'ai bien dit "une des solutions" :D

Reply

Marsh Posté le 02-06-2005 à 11:30:24    

onizuka_sensei a écrit :

j'ai bien dit "une des solutions" :D


 
 :jap:

Reply

Marsh Posté le 02-06-2005 à 11:31:31    

Bon bah encore une autre des solutions :
 

Code :
  1. echo "Redirection manuelle dans un instant...<br /><br />";
  2. echo "<a href=\"page_de_redirection.php\">Aller vers la page redirigé manuellement</a>";


 

Reply

Marsh Posté le 02-06-2005 à 11:32:31    

cesarr89 a écrit :

Il faut rien avant un header.


 
ok, j'ai essayé alors de mettre mon code php au tout début de ma page.  
Alors là, pas d'erreur, j'arrive sur ma page AccesPrive.php et le formulaire
d'enregistrement s'affiche correctement.  
Par contre, il ne fait pas le test et revient sans cesse sur cette page.

Reply

Marsh Posté le 02-06-2005 à 11:33:25    

Balance TOUT le code de la page

Reply

Marsh Posté le 02-06-2005 à 11:34:44    

Et bah tu fais un test justement avant ton header.  
 

Code :
  1. if((($_POST["pass"] == "toto" ) and ($_POST["login"] == "Serge" )) {
  2.    header(location:"Etats.php" ); 
  3. }


 
ça marche aussi ;).

Reply

Marsh Posté le 02-06-2005 à 11:50:37    

Alors voilà tout le code. Si vous arrivez à comprendre qqch car même moi je suis j'y comprends plus rien.  
 

Spoiler :

<?
   $bd="TanALLData"; // identifiant dsn
   $user="root"; // login    
   $password=""; // password    
   $cnx = odbc_connect( $bd , $user, $password );
   if( ! $cnx ) echo "Impossible de se connecter";
?>
 
<?  
   error_reporting(E_ALL ^ E_NOTICE);  
 
   if(($_POST["pass"] == "toto" ) and ($_POST["login"] == "Serge" ))  
   {  
      header("Location: Etats.php" );  
   }  
   else  
   {  
      header("Location: AccesPrive.php" );  
   }  
?>
 
<html>
<head>
<title>Accès Privé</title>
</head>
 
<body bgcolor="#000000">
<div align="center">
  <center>
  <table border="0" width="85%" bgcolor="#FFFFCC" text="#000000" height="85%">
    <tr>
      <td width="100%">
        <div align="center">
          <center>
          <table border="0" width="500">
            <tr>
              <td valign="middle" align="center"><a href="file:///C|/Program%20Files/EasyPHP1-8/www/Index.php"><img src="file:///C|/Program%20Files/EasyPHP1-8/www/images/Accueil.gif" width="124" height="23" border="0"></a></td>
              <td valign="middle" align="center"><a href="Presentation.php"><img src="file:///C|/Program%20Files/EasyPHP1-8/www/images/Presentation.gif" width="124" height="23" border="0"></a></td>
              <td valign="middle" align="center"><a href="AccesPrive.php"><img src="file:///C|/Program%20Files/EasyPHP1-8/www/images/AccesPriveActif.gif" width="124" height="23" border="0"></a></td>
              <td valign="middle" align="center"><a href="Contact.php"><img src="file:///C|/Program%20Files/EasyPHP1-8/www/images/Contact.gif" width="124" height="23" border="0"></a></td>
            </tr>
   </table>
   <table cellspacing="40" bgcolor="#FFFFCC">
     <tr>
   <td>
    <form name="Utilisateurs" method="post">
       <div align = "center">
       <center>
       <table bgcolor="#FFFFCC">
           <tr>
              <td>Login</td>  
              <td><input type="text" name="login"></td>
           </tr>
           <tr>
              <td>Password</td>
              <td><input type="password" name="pass"></td>
              <td><input type="Submit" value="Entrer"></td>
           </tr>
      </table>
       </center>
       </div>
    </form>
   </td>
          </tr>
       </table></td>
 </tr>
      <tr>
         <td valign="middle" align="center" colspan="4" width="80%"><img border="0" src="file:///C|/Program%20Files/EasyPHP1-8/www/images/Copyright01.gif" width="148" height="15"><a href=mailto:fg@y-team.ch><img border="0" src="file:///C|/Program%20Files/EasyPHP1-8/www/images/Copyright02.gif" width="62" height="15"></a></td>
      </tr>
    </table>
    </center>
    </div>
    </td>
  </tr>
  </table>
 
<SCRIPT>document.Utilisateurs.login.focus();</SCRIPT>  
 
</body>
</html>
<?
odbc_close( $cnx); // ferme la connection
?>

Reply

Marsh Posté le 02-06-2005 à 11:56:13    

Supprime les lignes vides.....on sais jamais

Reply

Marsh Posté le 02-06-2005 à 11:58:20    

cesarr89 a écrit :

Supprime les lignes vides.....on sais jamais


 
Ok, je vais essayer. Merci

Reply

Marsh Posté le 06-06-2005 à 08:42:00    

cesarr89 a écrit :

Supprime les lignes vides.....on sais jamais


 
Me revoilà au boulot après un long week-end...
Par contre, je n'ai toujours pas réussi à rediriger sur une autre page lorsqu'on entre le login et le mot de passe.
J'ai essayé d'enlever les lignes vides mais maintenant, ça ne charche plus la page AccesPrive.php... Il n'y a pas de message d'erreur, elle est en train de se charger mais n'arrive jamais au bout...

Reply

Marsh Posté le 06-06-2005 à 09:28:25    

Ca viendrais pas de la connection à la BD ?
Tu as vraiment supprimer toutes les lignes vides?

Reply

Marsh Posté le 06-06-2005 à 10:19:08    

cesarr89 a écrit :

Ca viendrais pas de la connection à la BD ?
Tu as vraiment supprimer toutes les lignes vides?


J'ai fait une page simplifiée pour juste tester ce point là mais ça fait toujours la même chose.
Je mets le code:
[<?  
   if(($_POST["pass"] == "toto" ) and ($_POST["login"] == "Serge" ))  
   {  
      header("Location: Etats.php" );  
   }  
   else  
   {  
      header("Location: AccesPrive.php" );  
   }
?>
<?  
   $bd="TanALLData"; // identifiant dsn
   $user="root"; // login    
   $password=""; // password    
   $cnx = odbc_connect( $bd , $user, $password );
   if( ! $cnx ) echo "Impossible de se connecter";
?>
<html>
<head>
<title>Accès Privé</title>
</head>
<body bgcolor="#000000">
 <table cellspacing="40" bgcolor="#FFFFCC">
 <tr>
    <td>
       <form name="Utilisateurs" method="post">
          <div align = "center">
          <center>
       <table bgcolor="#FFFFCC">
                <tr>
              <td>Login</td>  
              <td><input type="text" name="login"></td>
         </tr>
         <tr>
                 <td>Password</td>
                 <td><input type="password" name="pass"></td>
                 <td><input type="Submit" value="Entrer"></td>
         </tr>
         </table>
          </center>
          </div>
       </form>
    </td>
        </tr>
<SCRIPT>document.Utilisateurs.login.focus();</SCRIPT>  
</body>
</html>
<?
odbc_close( $cnx); // ferme la connection]

Reply

Marsh Posté le 06-06-2005 à 10:40:03    

fgiuliano a écrit :


<?  
   if(($_POST["pass"] == "toto" ) and ($_POST["login"] == "Serge" ))  
   {  
      header("Location: Etats.php" );  
   }  
   else  
   {  
      header("Location: Index.php" );  
   }
?>


 
Alors en fait, j'ai testé de soit rediriger sur une autre page soit d'enlever tout simplement le else et dans ces deux cas, il n'y a plus de problème. En fait, c'est lorsqu'il devait recharger la même pas que ça lui posait problème.
Je ne comprends pas vraiment pourquoi mais pour le moment ça marche comme ça, alors je vais regarder par la suite la réponse à ce pourquoi.
Merci pour l'aide.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed