Page 1 sur 1
identification > redirection personnalisée
Posté : 16 févr. 2007, 22:30
par faboule
Bonjour,
Je cherche à réaliser une redirection personnalisée vers une page suivant le login et mot de passe rentrés sur une page indentification.
D'après ce que j'ai compris,
1/ il faut que je créé dans ma base une table avec mes identifiants login et mdp.
2/ mon script sur la page autehntification verifie les données rentrées par l'utilisateur, les compare avec celles de la base.
3/ suivant l'authentification, l'utilisateur est redirigé vers pageA.htm, ou pageB.php etc... Si l'autehntification echoue, il ya un message d'erreur..;
Bon, rien de bien sorcier à faire je pense. J'ai essayé de "trafficoter" des codes existants pour l'appliquer à mon cas, sans succès.
Si quelqu'un pouvait me donner, sinon le code , mais les bases de création de la page identification, ce serait sympa !
Merci,
Posté : 16 févr. 2007, 22:35
par Ajoloca
Bonjour,
La logique est bonne, c'est quoi qui te pose PB ?
La création de la table ?
Les scripts PHP ?
Posté : 16 févr. 2007, 22:37
par faboule
Salut,
La création du script PHP de la page d'authentification qui contient le formulaire avec les champs a renseigner...
Posté : 16 févr. 2007, 22:42
par Ajoloca
Re,
Voici un
petit tuto pour commencer, si par la suite tu rencontres des PB's n'hésite pas à revenir avec ton code pour que l'on puisse t'aider.
Posté : 16 févr. 2007, 22:44
par faboule
OK, merci !
je vais essayer avec ça.
Posté : 16 févr. 2007, 23:26
par faboule
j'ai trouvé ce bout de code fait par ZEUS, qui me conviendrai bien :
Code : Tout sélectionner
<form name="login" method="post">
<div align="center">
login
<input name="user_name" type="text">
<br>
<br>
password
<input name="password" type="text">
<br>
<input type="submit" name="Submit" value="Connecter" >
<br>
</div>
</form>
<?
//Si le formulaire a été validé
if (isset($_POST["Submit"])) {
$log= (isset($_POST["user_name"])) ? $_POST["user_name"] : "" ;
$pass= (isset($_POST["password"])) ? $_POST["password"] : "";
if($log == "dupont" && $pass == "monpass")
{
?>
<a href='partenaires.html'>acceder a votre page</A><?
} else {
echo('erreur de login ou de mot de passe');
?><a href='index.php?page=news'></a><?
}
}
?>
Je voudrai rajouter à ce code un autre identifiant, qui dirigerai vers une autre page.
Je voudrai aussi pouvoir rediriger directement l'utilisateur vers sa page.
Dois-je remplacer pour celà le <a href...<\a> par un GetUrl?
Merci.
Posté : 16 févr. 2007, 23:35
par Ajoloca
Re,
Comme tu le vois, le script de Zeus est un script exemple, maintenant c'est à toi de l'adapter en fonction de tes besoins.
Tu parlais d'une base de données, le script n'a pas cette prétention (c'est pas son but - fournir un code 100% fonctionnel et s'adaptant à toutes les situations).
Procède par étapes.
Crée to formulaire, récupère les valeurs.
Crée ta requête, teste-la avec des valeurs en dur.
Tente de les mettre en commun (formulaire et requête).
Une fois ces deux parties unies, gère la redirection, mais pas avant.
Posté : 17 févr. 2007, 10:28
par faboule
Ok, re !
Bon, j'ai créé ma table membres et mes champs login et pass sur ma base.
Dans le script PHP ci-dessous, je récupère ces valeurs et verifie que que ça marche, avec la fonction "echo"...Et ça marche.
Maintenant je voudrai : au lieu d' afficher le "echo", rediriger l'utilisateur vers une page.
Je voudrai aussi rajouter une condition : un deuxieme login et pass ouvre une autre page que la précédente.
ex : login : jean pass: dupont > ouvre page jeandupont.html
login : jacques pass : martin > ouvre la page jacquesmartin.php.
mmhh...je suis pas sûr d'être clair...
Merci.
<?php
// demarre une session
session_start();
// Connection au serveur mySQL
$sql_serveur = "sql"; // Serveur mySQL
$sql_base = "test"// Base de donnees mySQL
$sql_login = "testeur"; // Login de connection a mySQL
$sql_password = "password"; // Mot de passe pour mySQL
$nom_fichier = "redirect.php"; // Nom de votre page
// ex: index.php si ce script est sur la page index.php
@mysql_connect($sql_serveur, $sql_login, $sql_password) or die("Connection interrompue");
@mysql_select_db($sql_base);
?>
<html>
<head>
<title>Titre</title>
</head>
<body>
<?php
// variables du formulaire
$action = isset($_POST['action']) ? $_POST['action'] : '';
$login = isset($_POST['login']) ? $_POST['login'] : '';
$pass = isset($_POST['pass']) ? $_POST['pass'] : '';
// si le login et pass on été au préalable cryptés
// (en md5 dans l'exemple) dans votre base
// vous devez enlever les commentaires sur les 2 lignes suivante
// $login = md5($_POST['login']);
// $pass = md5($_POST['pass']);
// Si aucune action, le formulaire est afficher
if ($action !=1 ) {
echo 'Veuillez entrer votre Login et Mot de Passe:<br />';
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Login: <input type="password" name="login"><br />';
echo 'Passe: <input type="password" name="pass"><br />';
echo '<input type="submit" value="Connexion">';
echo '</form>';
}
// Sinon
if ($action == 1) {
$q = mysql_query("SELECT *
FROM accespartenaires
WHERE login='$login'
AND pass='$pass'");
$n = mysql_num_rows($q);
if ($n == 1 AND $login != "" AND $pass != "")
{
// Le login est placé dans la session
$_SESSION['login_session'] = $login;
// redirection
// ATTENTION A BIEN METTRE LA PAGE DE REDIRECTION ICI
echo 'cest les bons logs et pass';
/* header("index.php"); */
}
// Si le login ou le mot de passe sont incorrect
// affiche de nouveau le formulaire
else{
echo 'Veuillez entrer votre Login et Mot de Passe:<br />';
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Login: <input type="password" name="login"><br />';
echo 'Passe: <input type="password" name="pass"><br />';
echo '<input type="submit" value="Connexion">';
echo '</form>';
die('<font color="red">Informations incorrectes!');
}
}
?>
</body>
</html>
Posté : 17 févr. 2007, 10:46
par Ajoloca
Bonjour,
Je te conseillerai d'ajouter une colonne dans ta table qui contiendra la page vers laquelle sera dirigé le visiteur.
Pour rediriger vers une page regarde la fonction header().
Posté : 17 févr. 2007, 17:14
par faboule
Re,
Effectivement, je m'en suis sorti avec la fonction header(), merci !
J'ai abandonné l'accès à la base de données, et j'ai tout concentré mon code dans ce fichier.
Je vous livre donc mon code, si cela peut servir.
Merci encore pour ton aide ajoloca,
<?php
// variables du formulaire
$action = isset($_POST['action']) ? $_POST['action'] : '';
$login = isset($_POST['login']) ? $_POST['login'] : '';
$pass = isset($_POST['pass']) ? $_POST['pass'] : '';
// Si aucune action, le formulaire est afficher
if ($action !=1 ) {
echo 'Veuillez entrer votre Login et Mot de Passe:<br />';
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Login: <input name="login"><br />';
echo 'Passe: <input type="password" name="pass"><br />';
echo '<input type="submit" value="Connexion">';
echo '</form>'; }
// Sinon
if ($action == 1) {
if ($login == "dupont" && $pass == "lajoie")
{
header('Location: http://www.monsite.com/pageA.php');
}
elseif ($login == "dutruc" && $pass == "muche")
{
header('Location: http://www.monsite.com/repertoire/pageB.html');
}
// Si le login ou le mot de passe sont incorrect
// affiche de nouveau le formulaire
else{
echo 'Veuillez entrer votre Login et Mot de Passe:<br />';
echo '<form action="'.$nom_fichier.'" method="post">';
echo '<input type="hidden" name="action" value="1">';
echo 'Login: <input type="password" name="login"><br />';
echo 'Passe: <input type="password" name="pass"><br />';
echo '<input type="submit" value="Connexion">';
echo '</form>';
die('<font color="red">Informations incorrectes!');
}
}
?>
Posté : 20 févr. 2007, 19:32
par HD
salut
y a t il une autre solution à part header ? ça fait longtemps que je cherche mais j'ai encore rien trouvé pour une redirection alors que des éléments sont déjà affichées (adieu header), quand on ne veut pas utiliser de javascript (adieu refresh) et qu'on ne veut pas afficher un lien à cliquer (adieu html)
merci !