Plusieurs choix pour mon formulaire
Marc
-
jordane45 Messages postés 40051 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 40051 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. |
A voir également:
- Plusieurs choix pour mon formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Liste déroulante de choix excel - Guide
- Formulaire de reclamation instagram - Guide
- Confirmer le nouvel envoi du formulaire err_cache_miss - Forum Google Chrome
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)
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)
Bonjour,
voici ton code remis en forme et corrigé
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
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
Désolé de vous déranger.
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é 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) .