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> </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>
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
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;
?>
Essayez en-tête ("Location: home.php"); au lieu d'afficher $ msg = 'Login Complete! Merci '; J'espère que ça vous aidera.
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.
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.';
}