Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

[PHP] Problème avec switch




  1. #1
    drazz

    [PHP] Problème avec switch

    Bonjour,

    Tout d'abord voici le code :

    Code:
    <?php
    //recupération des identifiants
    $login = $_POST['login'];
    $password = $_POST['password'];
    
    //initialisation des variables pour la connection à la BDD
    include("./initialisation.php");
    
    //connection à la BDD
    $connection = mysql_connect("127.0.0.1",$user,$password_bdd);
    $db_selected = mysql_select_db($database, $connection);
    
    if(!$connection) {
    	//redirection vers la page d'erreur
    	header("Location: http://" . $host . "/site_note/index.php?page=erreur");
    } else {
    	//recherche du login saisi
    	$req_verification_login = "select login from internaute where login=\"$login\";";
    	$verification_login = mysql_query($req_verification_login);
    
    	while($resultat_verif_login = mysql_fetch_array($verification_login)){
    		$result_v_l = $resultat_verif_login["login"];
    
    		//ici que 2 solutions ... mais le if ne marchait pas ... va savoir pourquoi :o
    		switch($result_v_l){	
    		case $login :
    			//recherche du password associé au login saisi
    			$req_verification_password = "select password from internaute where login=\"$login\";";	
    			$verification_password = mysql_query($req_verification_password);
    
    			while($resultat_verif_password = mysql_fetch_array($verification_password)){
    				$result_v_p = $resultat_verif_password["password"];
    
    				//ici que 2 solutions ... mais le if ne marchait pas ... va savoir pourquoi :o
    				switch($result_v_p){
    				case $password :
    					//selection de toutes les informations de l'utilisateur
    					$req_selection_infos = "select * from internaute where login=\"$login\"";
    					$selection_infos = mysql_query($req_selection_infos);
    
    					while($select_infos = mysql_fetch_array($selection_infos)){
    						//début session
    						session_start();
    				
    						//initialisation des variables de session
    						$_SESSION['designation'] = $select_infos["designation"];
    						$_SESSION['nom'] = $select_infos["nom"];
    						$_SESSION['prenom'] = $select_infos["prenom"];		
    						$_SESSION['email'] = $select_infos["email"];
    				
    						//redirection vers la page d'acceuil
    						header("Location: http://" . $_SERVER['HTTP_HOST'] . "/site_note/index.php?page=acceuil");
    					}
    					break;
    
    				default :
    					//redirection vers la page du mauvais password
    					header("Location: http://" . $_SERVER['HTTP_HOST'] . "/site_note/index.php?page=wrongpass");	
    					break;
    				}
    			}
    			break;
    
    		default :
    			//redirection vers la page du mauvais login
    			header("Location: http://" . $_SERVER['HTTP_HOST'] . "/site_note/index.php?page=wronglogin");
    			break;
    		}
    	}
    }
    
    //déconnection de la BDD
    $deconnection = mysql_close($connection);
    Mon problème se situe au niveau du "switch" pour le login ...
    En effet tout ce qui se trouve dans le "default" ne s'exécute pas ! Il me donne une page blanche ! Aucun message d'erreur ... il ne redirige rien ... bref incompréhension totale !
    Par contre le contenu de "case $login" marche normelement.

    A noter que le switch imbriqué pour le password qui possède la même logique, marche à la perfection.

    Oui je sais il n'y a que deux possibilités j'aurais pu utiliser un "if else". C'était d'ailleurs mon premier choix. Cependant le "if" ne marche pas, "page blanche" comme le "default" ...

    Voilà, quelqu'un pourrait il m'éclairer ?

    -----


  2. Publicité
  3. #2
    Towl

    Re : [PHP] Problème avec switch

    Hum, après un rapide coup d'oeil (au saut du lit, donc pas forcément éclairé ) je ne vois pas trop pourquoi il marche pas.
    Sinon, 2 remarques :
    - Ton code ne fait aucune vérification des données utilisateurs (c'est mal, TRES mal [1] )
    - en général, on fait plutot une vérification sur le couple login/pass en un coup : "SELECT * FROM users WHERE login = '" . mysql_real_escape_string(addsl ashes($user)) . "' AND password = ".mysql_real_escape_string(add slashes($user)) . "';" et tu tests si tu as 0 ou 1 reponse (0 => mauvais login / pass).

    [1] Alors pourquoi c'est mal de ne pas vérifier les données utilisateurs : Et bien car il ne faut jamais avoir confiance en lui. Un exemple :
    si je rentre login = " Towl '; DROP DATABASE " je te supprimerais toute ta BDD (le code présent ne marche pas en l'état actuel, mais c'est pour te faire comprendre l'idée)
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  4. #3
    xlasserre

    Re : [PHP] Problème avec switch

    Salut,
    Tout a l'air correct ; mais la variable $login est-elle bien vide ?
    juste une idée...


  5. #4
    drazz

    Re : [PHP] Problème avec switch

    Citation Envoyé par Towl Voir le message
    Hum, après un rapide coup d'oeil (au saut du lit, donc pas forcément éclairé ) je ne vois pas trop pourquoi il marche pas.
    Sinon, 2 remarques :
    - Ton code ne fait aucune vérification des données utilisateurs (c'est mal, TRES mal [1] )
    - en général, on fait plutot une vérification sur le couple login/pass en un coup : "SELECT * FROM users WHERE login = '" . mysql_real_escape_string(addsl ashes($user)) . "' AND password = ".mysql_real_escape_string(add slashes($user)) . "';" et tu tests si tu as 0 ou 1 reponse (0 => mauvais login / pass).

    [1] Alors pourquoi c'est mal de ne pas vérifier les données utilisateurs : Et bien car il ne faut jamais avoir confiance en lui. Un exemple :
    si je rentre login = " Towl '; DROP DATABASE " je te supprimerais toute ta BDD (le code présent ne marche pas en l'état actuel, mais c'est pour te faire comprendre l'idée)
    Mmmh ... Je ne vois pas trop ce que celà change au "niveau sécurité" de vérifier le login et mot de passe en même temps.
    Par contre effectivement, je comprends parfaitement l'idée pour l'injection de requêtes SQL. Je m'en vais de ce pas modifier tout ce code
    Merci pour ton intervention.

    PS : En ce qui concerne mon problème d'origine, il est résolu

  6. #5
    xlasserre

    Re : [PHP] Problème avec switch

    Dommage, j'aurais bien aimé savoir où était le problème d'origine ?!!

  7. A voir en vidéo sur Futura
  8. #6
    drazz

    Re : [PHP] Problème avec switch

    Citation Envoyé par xlasserre Voir le message
    Dommage, j'aurais bien aimé savoir où était le problème d'origine ?!!
    Bah en fait je ne sais pas trop non plus
    En fait (après conseils sur un autre forum), j'ai changé tous mes fetch_array en fetch_row puis remplacé mes "switch" en "if". Là le le "if" marche normalement, miracle.
    Par contre lorsque l'on saisit rien et qu'on envoi donc une chaine vide, il me redirige vers la page d'acceuil ... or logiquement il faut qu'il le redirige vers la page d'erreur.
    M'enfin l'essentiel c'est que le 3/4 du boulot soit fait !

  9. #7
    drazz

    Re : [PHP] Problème avec switch

    Nerf l'edit qui ne marche pas après 5 min ...

    M'enfin ... up donc !
    Problème du champ vide résolu ! (via l'autre forum)
    Un petit "if (mysql_num_rows($verification_ login) > 0)" et ca marche.

    Merci à tous.

  10. Publicité
  11. #8
    Towl

    Re : [PHP] Problème avec switch

    L'avantage de faire une vérif login / pass en une requete, c'est juste que tu fais une requete au lieux de 2, donc tu es plus gentil avec ta BDD (et ca c'est bien, ca se bichonne une BDD )
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

Sur le même thème :

Discussions similaires

  1. PHP : probleme avec ImageJpeg()
    Par guigui-x dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 12/05/2007, 18h52
  2. PB de switch avec témoin led...
    Par Quark dans le forum Électronique
    Réponses: 12
    Dernier message: 24/04/2007, 15h57
  3. Probleme de Switch...
    Par guigui-x dans le forum Internet - Réseau - Sécurité générale
    Réponses: 4
    Dernier message: 02/10/2006, 19h45
  4. Insérer une page php avec variables (ex : page.php?nom=jean) grâce au javascript
    Par Bossisman dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 21/05/2005, 17h37
  5. PHP : problème de passage de paramètres avec GET
    Par jepoirrier dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 19/05/2005, 21h13