Plusieurs choix pour mon formulaire
Marc
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je souhaite dans mon formulaire que lorsqu'une personne se connecte "login/mdp", ça recherche son type de contrat dans la base de donnée sql et ainsi affiche seulement la page nécessaire.
Par exemple si Mr Tec se connecte ça ira directement sur la page techniciens.
Mais ça n'a pas l'air de marcher:
Je souhaite dans mon formulaire que lorsqu'une personne se connecte "login/mdp", ça recherche son type de contrat dans la base de donnée sql et ainsi affiche seulement la page nécessaire.
Par exemple si Mr Tec se connecte ça ira directement sur la page techniciens.
Mais ça n'a pas l'air de marcher:
<?php
require("conf.php");
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['password'])) {
extract($_POST);
// on recupère le password de la table qui correspond au login du visiteur
$sql = "select password from users where login='".$login."'";
$con = "select contrat from users where login='".$login."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['password'] != $password) {
echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="connect.php" </SCRIPT>';
exit;
}
else if ($con == tec) {
session_start();
$_SESSION['login'] = $login;
echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="tec_s3a/login_tec.php" </SCRIPT>';
}
else if ($con == ce) {
session_start();
$_SESSION['login'] = $login;
echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="CE/login_ce.php" </SCRIPT>';
}
else if ($con == ca) {
session_start();
$_SESSION['login'] = $login;
echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="ca/login_ca.php" </SCRIPT>';
}
else if ($con == admin) {
session_start();
$_SESSION['login'] = $login;
echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="admin/login_admin.php" </SCRIPT>';
}
else if ($con == administration) {
session_start();
$_SESSION['login'] = $login;
echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="administation/login_administration.php" </SCRIPT>';
}
else if ($con == inter) {
session_start();
$_SESSION['login'] = $login;
echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="inter/inter.php" </SCRIPT>';
}
else {
echo '<SCRIPT LANGUAGE="JavaScript">
document.location.href="connect1.php" </SCRIPT>';
exit;
}
}
?>
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI Merci d'y penser dans tes prochains messages. |
2 réponses
-
Bonjour,
Faire une requête pour allez cherche le mot de passe et le vérifier, c'est un bon début pour la connexion, mais vous ne cherché aucune autre info concernant le login. Il faudrait que vous alliez cherché le type de contrat dans la base de donnée une fois que la personne s'est connecté .
En gros :
Vérifier le mot de passe => Si réussi :
-chercher le type de contrat (Requête SQL )
-Faire votre If /else if ( Un switch case serait préférable à mon avis)-
-
Oui mais la requête n'est jamais exécuté, a aucun moment vous faite un mysql_query avec en requête $con
Regardais bien vous stocké la requete SQL dans $con, et non le retour d'un fetch assoc par exemple.
PS: Faite attention , mysql est déprécié, Il serait sans doute plus facile d'utilisé PDO ou Mysqli -
-
Déprécié ne veut pas dire non fonctionnel.
Déprécié signifie juste que du jour au lendemain ça peut ne pas marché , et ce n'est pas ce qui est le plus optimisé en terme de rapidité d’exécution, et c'est surtout pas apprécié en règle générale.
Et PDO et mysqli(ce dernier est une version plus évolué à mysql) ont plus de fonctionnalité qui peuvent être utile comme la possibilité de préparer ses requête avant de les exécuter avec des variable que tu utilise dans ton code ( et écris de manière plus propre) .
-
-
Bonjour,
voici ton code remis en forme et corrigé<?php //Affichage des erreurs PHP error_reporting(E_ALL); //démarrage des sessions (on le fait UNE FOIS au début de la page.. pas ailleurs !!! ) session_start(); //Fichier de config/connexion à la bdd require_once "conf.php"; //récupération "propre" des variables AVANT de les utiliser ! $login = !empty($_POST['login']) ? $_POST['login'] : NULL; $password = isset($_POST['password']) ? $_POST['password'] : NULL; //Traitement du formulaire : if($login && $password) { $sql = "select password,contrat from users where login='".$login."'"; $result = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); $nbResult = $num_rows = mysql_num_rows($result); $data = mysql_fetch_assoc($result); if($data['password'] != $password || $nbResult==0) { $url = 'connect.php'; echo '<script type="text/javascript">document.location.href="'.$url.'" </script>'; exit(); }else{ $con = $data['contrat']; $_SESSION['login'] = $login; switch($con){ case "tec": $url = "tec_s3a/login_tec.php"; break; case "ce": $url = "CE/login_ce.php"; break; case "ca": $url = "ca/login_ca.php"; break; case "admin": $url = "admin/login_admin.php"; break; case "administration": $url = "administation/login_administration.php"; break; case "inter": $url = "inter/inter.php"; break; default: unset($_SESSION['login']); $url = "connect1.php"; break; } echo '<script type="text/javascript">document.location.href="'.$url.'" </script>'; exit(); } } ?>
NB: Mais il serait bien de le passer à PDO ou mysqli comme indiqué dans les messages précédents.
NB² : Parmis les modifications apportées à ton code.. tu verras :
- 1 Seule requête et non deux
- L'utilisation d'un SWITCH au lieu de if/elseif..; à répétition
- La simplification du code en évitant d'utiliser 20 fois les mêmes instructions partout dans ton code... en utilisant à la place une variable et en appellant la fonction qu'une fois ( pour la redirection par exemple ou l'initialisation de la variable de session.... )
Voila pour l'essentiel.... je te laisse poursuivre.
Cordialement,
Jordane