IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] ouverture session


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 106
    Points : 37
    Points
    37
    Par défaut [Sécurité] ouverture session
    bonjour a tous,

    mon ouverture de session ce passe correctement en local, la je l'ai mis sur le serveur et ca ne marche plus!

    il me met se message :

    Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.
    Please contact the server administrator, php4-2@invalid and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.

    pouvez vous m'aider?
    merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 106
    Points : 37
    Points
    37
    Par défaut
    et voila le script que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
     
    <?php
     
    session_start();
    $loginOK = false;
     
    if ( isset($_POST) and (!empty($_POST['login'])) and (!empty($_POST['password'])) )
    {
     
    	extract($_POST);
     
    	include('connexion.php');
     
    	$req = mysql_query ( "select * 
    	                      from connexion where login ='".$_POST['login']."'"); 
     
    	$sql = $req;					  
     
     
    	    if ( mysql_num_rows($sql) > 0 )
            {
     
    		    $data = mysql_fetch_assoc($sql);
     
     
    			   if ($password == $data['mdp'])
    			   {
    			       $loginOK = true;
    	           }
     
    		}	   
    }
     
    if ($loginOK == true)
    {
     
        include ('connexion.php');
     
    	$req1 = mysql_query ( "select * from connexion where login ='".$_POST['login']."'");
         $donnees=mysql_fetch_assoc($req1);
       while($donnees['categorie']=='administrateur')
     
     
         {  
                 header('Location: affichage2.php');
     
         }		
     
           while($donnees['categorie']=='grossiste')
    	     {
    		   echo 'vous n\'etes pas administrateur.';
    	      }     
    }  
    ?>

  3. #3
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    salut,
    t sur que les sessions sont activées sur ton serveur?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 106
    Points : 37
    Points
    37
    Par défaut
    oui tu peux la trouvez ci-dessous :
    http://online.net/support/fr/doc/php4/phpinfo.html

  5. #5
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par corsamobile
    oui tu peux la trouvez ci-dessous :
    http://online.net/support/fr/doc/php4/phpinfo.html
    Il faut pas créer un répertoire sessions avant... certains hébergeur ne le font pas par défaut... .. .

    @ tchaOo°

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    et supprimes TOUS les espaces, retours à la ligne etc avant ton session_start

  7. #7
    Membre éclairé
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Points : 858
    Points
    858
    Par défaut
    Au passage... .. .

    Ca sert à rien de faire un isset sur $POST... ce qui t'interesse c'est $_POST['password'] et $_POST['login']... mais bon ça encore c'est pas trop grave... .. .

    SURTOUT PAS D'EXTRACT SUR LA VARIABLE $_POST... c'est un coup à créer des failles de sécu grosses comme des maisons... qui plus est tu réutilise $_POST['login'] juste après... où est l'interet... et il faudrait peut être traiter les variables soumise par l'internaute avant de les utiliser... part du principe que tout ce qui vient de l'internaute est non sur et traite le en concéquence... .. .

    Quel interet de faire...

    $sql = $req;

    Alors que tu ne leur fais pas subir de traitement différents en parallèle... .. .

    Pas de SELECT *... alors que tu veux que le pass et la categorie (gain de perf)... et pourquoi deux requetes sql similaires... une seule suffit... .. .

    A voir ton code tu stock les pass en clair dans la base de données... ça serait pas plus mal de les hacher avec md5()... .. .

    ton $loginOK est un peu inutile non... .. ?

    Pourquoi une boucle sur une comparaison...

    while($donnees['categorie']=='grossiste')
    {
    echo 'vous n\'etes pas administrateur.';
    }

    ?????????????????????????????????????????????????????????

    C'est pas plutot un if que tu voulais faire... .. .

    Le mieux plutot que d'utiliser administrateur ou autre comme catégorie serait que tu utilise un chiffre... ça sera plus simple et en plus prendra un peu moins de place dans la bdd (un peu moins de place plus un peu moins de place)... imaginons que tu as que deux catégories tu fais admin = 1 fournisseur = 0 et pour tester tu fais...

    if(!empty($datas['categorie'])){
    // c'est un admin
    } else {
    // c'est un fournisseur
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    <?php
    // on vérifi si password et login existent et ne sont pas vide
    if (isset($_POST['password']) && isset($_POST['login']) && !empty($_POST['login']) && !empty($_POST['password'])) {
        // on traite ce qui est soumis en virant toutes les hypothétiques 
       // balises html ou php et en échapant les charactères tel que les 
       // quotes si besoin est
       if(get_magic_quotes_gpc()===1){
            $login = strip_tags(trim($_POST['login']));
            $password = strip_tags(trim($_POST['password']));
       } else {
           $login = addslashes(strip_tags(trim($_POST['login'])));
            $password = addslashes(strip_tags(trim($_POST['password'])));
       }
     
       // on inclue le fichier de connection
       include('connexion.php');
     
       // on fait la requete mais on 
      // selectionne juste ce dont on a besoin
       $sql = mysql_query( "SELECT mdp,categorie FROM connexion WHERE login ='".$login."'");
       // on ferme la connection vu que l'on a ce que l'on veut 		
       mysql_close();
     
       // s'il y a un enregistrement
       if (mysql_num_rows($sql) > 0 ) {
     
          // on ordonne les données
          $datas = mysql_fetch_assoc($sql);
     
          // on compare les pass
          //enleve md5() si tu ne veux pas l'utiliser
          if (md5($password) == $data['mdp']) {
             // c'est ok on lance la session
             session_start();
             $_SESSION['login'] = $login;
             $_SESSION['categorie'] = $datas['categorie'];
                if($datas['categorie'] == 'administrateur') {  
                     header('Location: affichage2.php');		    
                } else {
                    // fournisseur on redirige
                    header('Location: www.monsite.ext/index.php');
                }   
          } else {
              // pass mauvais on redirige
             header('Location: www.monsite.ext/index.php');
          }	   
    } else {
        // $_POST['password'] et/ou $_POST['login'] vide ou
       // inexistante on redirige
        header('Location: www.monsite.ext/index.php');
    }	  
    ?>
    Voila... c'est pas encore le top mais c'est déja bien mieux... .. .

    @ tchaOo°

Discussions similaires

  1. ouverture session et redirection
    Par breva dans le forum Langage
    Réponses: 1
    Dernier message: 13/04/2007, 12h06
  2. Script Ouverture session TSE 2003
    Par dd16 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 02/04/2007, 17h58
  3. ouverture session TSE
    Par yussuf dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 12/03/2007, 09h45
  4. Réponses: 2
    Dernier message: 05/10/2004, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo