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

PHP & Base de données Discussion :

Conversion du code Dreamweaver en Mysqli [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Conversion du code Dreamweaver en Mysqli
    Bonjour
    J’utilise Dreamveaver pour réaliser un site sur lequel les accès sont gérés par un nom d’utilisateur, un mot de passe et un groupe d’utilisateur. En fonction du groupe, le site ouvre la page appropriée.
    Le nom et le mot de passe sont saisis sur une page d’accès et le groupe d’utilisateur est gérer par l’administrateur sur une table « personnels ».
    Le code généré par Dreamveaver fonctionne très bien
    Page d’accès



    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
      <?php
    // *** Validate request to login to this site.
    if (!isset($_SESSION)) {
      session_start();
    }
     
    $loginFormAction = $_SERVER['PHP_SELF'];
    if (isset($_GET['accesscheck'])) {
      $_SESSION['PrevUrl'] = $_GET['accesscheck'];
    }
     
    if (isset($_POST['select'])) {
      $loginUsername=$_POST['select'];
      $password=$_POST['textfield2'];
      $MM_fldUserAuthorization = "groupe";
      $MM_redirectLoginSuccess = "acces_prive.php?nomuti=$loginUsername";
      $MM_redirectLoginFailed = " acces_prive2.php?nomuti=$loginUsername";
      $MM_redirecttoReferrer = false;
      mysql_select_db($database_zez, $lpu);
     
      $LoginRS__query=sprintf("SELECT nomuti, motpass, groupe FROM personnels WHERE nomuti=%s AND motpass=%s",
      GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
     
      $LoginRS = mysql_query($LoginRS__query, $lyc) or die(mysql_error());
      $loginFoundUser = mysql_num_rows($LoginRS);
      if ($loginFoundUser) {
     
        $loginStrGroup  = mysql_result($LoginRS,0,$MM_fldUserAuthorization);
     
    	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
        //declare two session variables and assign them
        $_SESSION['MM_Username'] = $loginUsername;
        $_SESSION['MM_UserGroup'] = $loginStrGroup;	    
     
        if (isset($_SESSION['PrevUrl']) && false) {
          $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
        }
        header("Location: " . $MM_redirectLoginSuccess );
      }
      else {
        header("Location: ". $MM_redirectLoginFailed );
      }
    }
    Lorsque le nom d’utilisateur et le mot de passe sont bons, la Page avec restriction d’accès s’ouvre et vérifie si la page est accessible au groupe, sinon, elle se ferme et envoie sur une autre page

    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
     
     
    <?php
    if (!isset($_SESSION)) {
      session_start();
    }
    $MM_authorizedUsers = "Oui";
    $MM_donotCheckaccess = "false";
     
    // *** Restrict Access To Page: Grant or deny access to this page
    function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { 
      // For security, start by assuming the visitor is NOT authorized. 
      $isValid = False; 
     
      // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
      // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
      if (!empty($UserName)) { 
        // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
        // Parse the strings into arrays. 
        $arrUsers = Explode(",", $strUsers); 
        $arrGroups = Explode(",", $strGroups); 
        if (in_array($UserName, $arrUsers)) { 
          $isValid = true; 
        } 
        // Or, you may restrict access to only certain users based on their username. 
        if (in_array($UserGroup, $arrGroups)) { 
          $isValid = true; 
        } 
        if (($strUsers == "") && false) { 
          $isValid = true; 
        } 
      } 
      return $isValid; 
    }?>
    Dreamweaver, quel que soit sa version, utilise des requêtes MUSQL. J’ai fait passé l’ensemble du site en MYQSLI à l’aide de « Convert vers mysqli ».
    Tout ce passe bien pour l’ensemble des pages, je n’ai repris que quelques lignes de codes.
    Par contre le contrôle d’accès me pose problème. Si je demande un nom d’utilisateur et un mot de passe, sans tenir compte de groupe, tout ce passe bien, mais dès que je veux demander à Dreamweaver de tenir compte du groupe auquel appartient la personne qui se connecte afin de l’envoyer sur la bonne page, cela ne fonctionne pas. Je reste sur la page de connexion.

    Quelqu’un peut–il m’aider.

    Merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Il faudrait nous montrer le code avec mysqli qui ne fonctionne pas
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Code
    Voila le code qui ne marche pas

    Page d’accès
    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
    <?php
    // *** Validate request to login to this site.
    if (!isset($_SESSION)) {
      session_start();
    }
     
    $loginFormAction = $_SERVER['PHP_SELF'];
    if (isset($_GET['accesscheck'])) {
      $_SESSION['PrevUrl'] = $_GET['accesscheck'];
    }
     
    if (isset($_POST['select'])) {
      $loginUsername=$_POST['select'];
      $password=$_POST['textfield2'];
      $MM_fldUserAuthorization = "groupe";
      $MM_redirectLoginSuccess = "acces_prive.php?nomuti=$loginUsername";
      $MM_redirectLoginFailed = "acces_prive2.php?nomuti=$loginUsername";
      $MM_redirecttoReferrer = false;
      ((bool)mysqli_query( $loc, "USE " . $database));
     
      $LoginRS__query=sprintf("SELECT nomuti, motpass, groupe FROM personnels WHERE nomuti=%s AND motpass=%s",
      GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
     
      $LoginRS = mysqli_query( $lyc, $LoginRS__query) or die(((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));
      $loginFoundUser = mysqli_num_rows($LoginRS);
      if ($loginFoundUser) {
     
        $loginStrGroup  = mysql_result($LoginRS,0,'groupe');
     
    	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
        //declare two session variables and assign them
        $_SESSION['MM_Username'] = $loginUsername;
        $_SESSION['MM_UserGroup'] = $loginStrGroup;	    
     
        if (isset($_SESSION['PrevUrl']) && false) {
          $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
        }
        header("Location: " . $MM_redirectLoginSuccess );
      }
      else {
        header("Location: ". $MM_redirectLoginFailed );
      }
    }
    Lorsque le nom d’utilisateur et le mot de passe sont bons, la Page avec restriction d’accès s’ouvre et vérifie si la page est accessible au groupe, sinon, elle se ferme et envoie sur une autre page

    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
    <?php
    if (!isset($_SESSION)) {
      session_start();
    }
    $MM_authorizedUsers = "Oui";
    $MM_donotCheckaccess = "false";
     
    // *** Restrict Access To Page: Grant or deny access to this page
    function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { 
      // For security, start by assuming the visitor is NOT authorized. 
      $isValid = False; 
     
      // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
      // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
      if (!empty($UserName)) { 
        // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
        // Parse the strings into arrays. 
        $arrUsers = Explode(",", $strUsers); 
        $arrGroups = Explode(",", $strGroups); 
        if (in_array($UserName, $arrUsers)) { 
          $isValid = true; 
        } 
        // Or, you may restrict access to only certain users based on their username. 
        if (in_array($UserGroup, $arrGroups)) { 
          $isValid = true; 
        } 
        if (($strUsers == "") && false) { 
          $isValid = true; 
        } 
      } 
      return $isValid; 
    }
     
    $col1 = "-1";
    if (isset($_GET['nomuti'])) {
      $col1 = $_GET['nomuti'];
    }
     
     
    $MM_restrictGoTo = "connect2.php?nomuti=$col1";
    if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
      $MM_qsChar = "?";
      $MM_referrer = $_SERVER['PHP_SELF'];
      if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
      if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0) 
      $MM_referrer .= "?" . $_SERVER['QUERY_STRING'];
      $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
      header("Location: ". $MM_restrictGoTo); 
      exit;
    }
    ?>
    Merci de votre intêret pour mon problème

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    une bonne façon d'apprendre, et comprendre, est de mettre des commentaires à chaque action dans le code.
    = faire des phrases, indiquer quelle est l'action, leur enchainement, à quoi sert telle ou telle variable,...

    Je pense aussi qu'en faisant comme ça, tu as des chances de trouver toi-même où se situe l'erreur.


    Au pire, ça nous permettra, à nous, de comprendre plus facilement le code.

  5. #5
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    une bonne façon d'apprendre, et comprendre, est de mettre des commentaires à chaque action dans le code.
    = faire des phrases, indiquer quelle est l'action, leur enchaînement, à quoi sert telle ou telle variable,...

    Je pense aussi qu'en faisant comme ça, tu as des chances de trouver toi-même où se situe l'erreur.


    Au pire, ça nous permettra, à nous, de comprendre plus facilement le code.


    C'est vrai, vous avez totalement raison si je suis l'auteur du code.
    Mais comme indiqué plus haut dans la discussion, ce code est généré par Dreamveaver et les commentaires sont ajoutées directement par Dreamveaver, je ne sais donc pas à quoi cela corresponds dans le détail et si je suis sur ce forum c'est justement pour essayer de comprendre.
    Je ne pourrai donc pas ajoutés de commentaires à un code que j'ai du mal à comprendre.
    Quant à la proposition de trouver moi même l'erreur, cela fait deux ans que je cherche.
    Merci cependant d'avoir pris le temps de me répondre.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le problème est que des explications ne sont pas très claires et que le code produit par dreamweaver non plus.

    Tu nous parles d'un passage vers mysqli mais dans le code il y a des fonctions mysql_.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Oui ta conversion a buggué quelque part, par exemple ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $LoginRS = mysqli_query( $lyc, $LoginRS__query) or die(((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));
      $loginFoundUser = mysqli_num_rows($LoginRS);
      if ($loginFoundUser) {
     
        $loginStrGroup  = mysql_result($LoginRS,0,'groupe');
    Que fait ici ce mysql_result ?

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    M'est avis que la conversion automatique ne trouve pas d'équivalent Mysqli à mysql_result.
    Personnellement, je remplacerais cette ligne par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $loginRow = mysqli_fetch_assoc($LoginRS);
    $loginStrGroup = $loginRow['groupe'];
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Celira Voir le message
    M'est avis que la conversion automatique ne trouve pas d'équivalent Mysqli à mysql_result.
    Personnellement, je remplacerais cette ligne par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $loginRow = mysqli_fetch_assoc($LoginRS);
    $loginStrGroup = $loginRow['groupe'];

    J'ai fais comme vous me le préciser, et çà marche.
    Je ne vous serai jamais trop reconnaissant.
    Un grand merci à tous et tout particulièrement à Célira pour sa solution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SGBD] PHP 5 & mysqli.dll
    Par trattos dans le forum Installation
    Réponses: 11
    Dernier message: 24/11/2008, 09h54
  2. mysqli et php 4
    Par jeyce dans le forum Installation
    Réponses: 1
    Dernier message: 16/09/2006, 01h26
  3. [Mail] Prob : PHP / FLASH / MYSQLi
    Par Joe Le Mort dans le forum Langage
    Réponses: 5
    Dernier message: 24/07/2006, 09h34
  4. [SGBD] PHP et mysqli - MySQL 4.1
    Par meda dans le forum Outils
    Réponses: 5
    Dernier message: 09/01/2005, 17h56

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