web-dev-qa-db-fra.com

Redirection vers une nouvelle page après une connexion réussie

Je suis sûr que cette question a déjà été posée, mais j’ai cherché à fond une réponse, mais en vain. (Les seules réponses que j'ai vues impliquent ajax) Mais j'utilise seulement javascript, PHP et HTML.

J'ai une page login.php et j'ai déjà créé une page HTML qui doit être la page de destination juste après la connexion d'un utilisateur. Comment procéder?

Ce qui suit est mon code pour la page de connexion et la page de destination après la connexion est appelée transfer.html:

LOGIN.PHP

  <div id="content">
     <h3>Login to Internet Banking</h3>
     <form id="login" action="" method="post">
        <p>
          <label for="userid">UserID:</label>
          <input type="text" name="UserID" id="UserID"/>
        </p>
        <p>
          <label for="PIN">PIN:</label>
          <input type="password" name="PIN" id="PIN" />
        </p>

        <p>
          <input type="submit" name="btnSend" value="Login" class="submit_button" />

        </p>
      </form>
      <td>&nbsp;</td>
 <p>
        Not yet registered?
 <a href="registration.php">Click here to register</a>
 </p>

  <div id="wrap">
        <!-- start PHP code -->
        <?php

            mysql_connect("localhost", "root", "") or die(mysql_error()); // Connect to database server(localhost) with UserID and PIN.
            mysql_select_db("registrations") or die(mysql_error()); // Select registration database.

            if(isset($_POST['name']) && !empty($_POST['name']) AND isset($_POST['PIN']) && !empty($_POST['PIN'])){
                $UserID = mysql_escape_string($_POST['name']);
                $PIN = mysql_escape_string(md5($_POST['PIN']));

                $search = mysql_query("SELECT UserID, PIN, active FROM users WHERE UserID='".$UserID."' AND PIN='".$PIN."' AND active='1'") or die(mysql_error()); 
                $match  = mysql_num_rows($search);

                if($match > 0){
                    $msg = 'Login Complete! Thanks';
                }else{
                    $msg = 'Login Failed!<br /> Please make sure that you enter the correct details and that you have activated your account.';
                }
            }


        ?>
        <!-- stop PHP Code -->
        <?php 
            if(isset($msg)){ // Check if $msg is not empty
                echo '<div class="statusmsg">'.$msg.'</div>'; // Display our message and add a div around it with the class statusmsg
            } ?>

    </div>
        </div>
5
Kaos

Tout d’abord, déplacez tout votre code PHP vers le haut. Sans cela, mon code ci-dessous ne fonctionnera pas.

Pour faire la redirection, utilisez:

header('Location: http://www.example.com/');

Aussi, s'il vous plaît tenir compte de mon conseil. Comme ce n’est pas la première question aujourd’hui et que toutes vos questions portent sur les bases, vous devriez lire un bon livre PHP pour comprendre comment les choses fonctionnent.

Vous trouverez ici des liens utiles vers des livres gratuits: https://stackoverflow.com/tags/php/info

15
Serge Kuharev

Redirection Javascript générée avec le code php:

 if($match > 0){
     $msg = 'Login Complete! Thanks';
     echo "<script> window.location.assign('index.php'); </script>";
 }
 else{
     $msg = 'Login Failed!<br /> Please make sure that you enter the correct  details and that you have activated your account.';
 }

Réacheminement php uniquement:

<?php
    header("Location: index.php"); 
    exit;
?>
8
Hackerman

Essayez en-tête ("Location: home.php"); au lieu d'afficher $ msg = 'Login Complete! Merci '; J'espère que ça vous aidera.

0
Tapas Pal

Vous devez définir l'en-tête location comme suit:

header('Location: http://www.example.com/');

Bien sûr, remplacer http://www.example.com par l'URL de votre page de destination.

Ajoutez ceci lorsque vous avez fini de vous connecter.

Remarque : Lors de la redirection, l'utilisateur sera immédiatement redirigé afin que votre message ne s'affiche probablement pas.

De plus, vous devez déplacer votre code PHP en haut du fichier pour que cette solution fonctionne.

Par ailleurs, veuillez lire mon commentaire ci-dessus concernant l’utilisation des instructions mysql obsolètes et envisager d’utiliser les instructions mysqli ou PDO nouvelles, plus sûres et améliorées.

0
War10ck

Peut être utilisé comme ça

if($match > 0){
 $msg = 'Login Complete! Thanks';
 echo "<a href='".$link_address."'>link</a>";
 }
else{
 $msg = 'Login Failed!<br /> Please make sure that you enter the correct  details and that you have activated your account.';
}
0
vikash