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 :

corriger script / fonction deprecated


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2002
    Messages : 6
    Points : 21
    Points
    21
    Par défaut corriger script / fonction deprecated
    Bonjour,

    j'ai un script PHP que l'on m'avait donné il y a quelques années.
    Maintenant, OVH va me changer ma version de PHP. Malheureusement mon script m'affiche plein d'erreur(les fonctions utilisés sont dépassés)

    Ca me permettait d'afficher le nom de visiteur connecté sur le site.
    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
    <?
      /* paramêtres
      * et se connecter à la base de données
      */
               $hote="mon_server";
          $login="mon_login";
          $mdp="monmotdepasse";
          $bd="ma_base";
     
    $connexion= mysql_connect($hote,$login,$mdp);
    mysql_select_db($bd, $connexion);
     
      // rÈcupËre le nom complet (précédé du chemin) du fichier de la page en cours d'exÈcution
    $page=$PHP_SELF;
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = time();
    $timetoexpire=240;
    $ttl = $time - $timetoexpire;
     
        //supression ancienne entree de plus de $timetoexpire=240 et ip;
       $req_supp ='DELETE FROM dc_connected WHERE time <' .(integer) $ttl. ' OR ip ="'.mysql_escape_string($ip).'"';
       mysql_query($req_supp,$connexion) or die(mysql_error());
     
      //ajout entrée
      $req_ins="INSERT INTO dc_connected (ip,time,current_page) VALUES ('$ip','$time','$page')";
      mysql_query($req_ins,$connexion);
     
    //affichage
    $rq = "SELECT * FROM dc_connected";
    $result = mysql_query($rq,$connexion) or die(mysql_error());
    $detail = mysql_fetch_assoc($result);
    $nb_enreg = mysql_num_rows($result);
    if ($nb_enreg <= 1) {
              echo $nb_enreg." personne connectée <br />";
           } else {
              echo $nb_enreg." personnes connectées <br />";
           }
    ?>
    Pour la connexion j'ai remplacé par ceci
    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
    $mysqli = mysqli_init();
    if (!$mysqli) {
        die('mysqli_init failed');
    }
    if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
        die('Setting MYSQLI_INIT_COMMAND failed');
    }
    if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
        die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
    }
    if (!$mysqli->real_connect($hote, $login, $mdp, $bd)) {
        die('Connect Error (' . mysqli_connect_errno() . ') '
                . mysqli_connect_error());
    }
     
    $mysqli->select_db($bd);
     
      // rÈcupËre le nom complet (précédé du chemin) du fichier de la page en cours d'exÈcution
    $page=$PHP_SELF;
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = time();
    $timetoexpire=240;
    $ttl = $time - $timetoexpire;
     
        //supression ancienne entree de plus de $timetoexpire=240 et ip;
       $req_supp ='DELETE FROM dc_connected WHERE time <' .(integer) $ttl. ' OR ip ="'.mysql_escape_string($ip).'"';
       mysql_query($req_supp,$connexion) or die(mysql_error());
    En revanche, cela se complique pour le remplacement de la fonction Mysql_escape_string par real_escape_string (si j'ai bien compris)

    aurait il un âme charitable qui pourrait me donner un coup de main ?
    Merci

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    houlà, c'est pas gagné-gagné... allez je te file un de mes script qui va te simplifier drôlement la vie :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    <?php
     
    define('USER', "root");
    define('PASSWORD', "mot_de_passe");
    define('SERVER', "nom_du_serveur_de_base_de_donnees");
    define('BASE', "nom_de_la_base_de_donnees");
     
    function dbConnect($server, $user, $pwd, $base)
    {
        $link = mysqli_connect($server, $user, $pwd, $base);
     
        if ( ! $link)
        {
            echo "Désole, connexion au serveur impossible ou accès à la base impossible";
            die;
        }
     
        mysqli_set_charset($link, 'utf8');
     
        return $link;
    }
     
    if ( ! isset($db_link))
    {
        $db_link = dbConnect(SERVER, USER, PASSWORD, BASE);
    }
     
     
    function mysqli_result($resource, $row = 0, $col = 0)
    {
        mysqli_data_seek($resource, $row);
     
        return mysqli_fetch_row($resource)[$col];
    }
     
     
    function dbLastInsertId()
    {
        global $db_link;
     
        return mysqli_insert_id($db_link);
    }
     
     
    /**
     * @param  string   $sql
     * @param  resource $link
     * @return array()           Tableau de tableaux associatifs [[key => value]]
     */
    function dbData($sql, $link = null)
    {
        global $db_link;
     
        $cnx = ($link === null) ? $db_link : $link;
     
        $exec = mysqli_query($cnx, $sql);
     
        if ($exec === false)
        {
            echo "<b>Erreur dans l'exécution de la requête '".htmlspecialchars($sql)."'.</b><br>";
            echo "<b>Message de MySQL :</B> ". htmlspecialchars(mysqli_error($cnx));
            exit;
        }
     
        $data = [];
        while ($row = mysqli_fetch_assoc($exec))
            $data[] = $row;
     
        return $data;
     
        //return mysqli_fetch_assoc($exec, MYSQLI_ASSOC);
    }
     
    /**
     * @param  string   $sql
     * @param  resource $link
     * @return resource
     */
    function dbQuery($sql, $link = null)
    {
        global $db_link;
     
        $cnx  = ($link === null) ? $db_link : $link;
        $exec = mysqli_query($cnx, $sql);
     
        if ($exec === false)
        {
            echo "<b>Erreur dans l'exécution de la requête '".htmlspecialchars($sql)."'.</b><br>";
            echo "<b>Message de MySQL :</B> ". htmlspecialchars(mysqli_error($cnx));
            die;
        }
     
        return $exec;
    }
     
     
    /**
     * échappement des caractères
     *
     * @param scalar $p
     */
    function dbEscape($p)
    {
        global $db_link;
     
        return mysqli_real_escape_string($db_link, $p);
    }
    Tu créés un fichier nommé database.php et tu y colle ce code

    pour l'utiliser il suffit simplement de faire require_once 'database.php';ensuite voici quelques exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql  = "INSERT INTO dc_connected (ip, time, current_page) VALUES ('".dbEscape($ip)/"', '".dbEscape($time)."', '".dbEscape($page)"')";
    $exec = dbQuery($sql);
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql  = "SELECT * FROM dc_connected";
    $data = dbData($sql); // $data = array()
    Le script est autonome, il n'y a juste qu'à l'initialiser correctement

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2002
    Messages : 6
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    Merci,
    Voila j'ai corrigé et ca fonctionne.

    En revanche, le code doit être très "cochon"...
    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
    56
    57
    58
    59
    60
    61
    62
    <?
      /* paramêtres
      * et se connecter à la base de données
      */
      		$hote="serveur";
    		$login="utilisateur";
    		$mdp="mot-de-passe";
    		$bd="basededonnee";
     
     
     
     
    $mysqli = mysqli_init();
    if (!$mysqli) {
        die('mysqli_init failed');
    }
    if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
        die('Setting MYSQLI_INIT_COMMAND failed');
    }
    if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
        die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
    }
    if (!$mysqli->real_connect($hote, $login, $mdp, $bd)) {
        die('Connect Error (' . mysqli_connect_errno() . ') '
                . mysqli_connect_error());
    }
     
     
    //$mysqli->close();
     
    $mysqli->select_db($bd);
     
    //mysql_select_db($bd, $connexion);
     
      // rÈcupËre le nom complet (précédé du chemin) du fichier de la page en cours d'exÈcution
    $page=$PHP_SELF;
    $ip = $_SERVER['REMOTE_ADDR'];
    $time = time();
    $timetoexpire=240;
    $ttl = $time - $timetoexpire;
     
        //supression ancienne entree de plus de $timetoexpire=240 et ip;
    	$req_supp ='DELETE FROM dc_connected WHERE time <' .(integer) $ttl. ' OR ip ="'.mysqli_real_escape_string($mysqli, $ip).'"';
    	$mysqli->query($req_supp) or die(mysql_error());
     
     
      //ajout entrèe
      $req_ins="INSERT INTO dc_connected (ip,time,current_page) VALUES ('$ip','$time','$page')";
      $mysqli->query($req_ins);
     
     
    //affichage
    $rq = "SELECT * FROM dc_connected";
    $result = $mysqli->query($rq) or die(mysql_error());
    $detail = mysqli_fetch_assoc($result);
    $nb_enreg = mysqli_num_rows($result);
    if ($nb_enreg <= 1) {
        		echo $nb_enreg." personne connectée <br />";
    	    } else {
    		    echo $nb_enreg." personnes connectées <br />";
        	}
    ?>
    Si vous avez des conseils pour le nettoyer

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    bon je vois que mon script ne t'as servi à rien.
    Voici l'équivalent à ton code :
    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
    require_once 'database.php';
     
    // supression ancienne entree de plus de $timetoexpire=240 et ip;
    $time = time();
    $sql  = 'DELETE FROM `dc_connected` WHERE `time` < '.(int)($time - 240). ' OR `ip` = "'.dbEscape($_SERVER['REMOTE_ADDR']).'"';
    dbQuery($sql);  // dans cette fonction, si l'exécution échoue, tout s'arrête
     
    $sql = 'INSERT INTO `dc_connected` (`ip`, `time`, `current_page`) VALUES ("'.dbEscape($_SERVER['REMOTE_ADDR']).'", "'.dbEscape($time).'", "'.dbEscape($_SERVER['PHP_SELF']).'")';
    dbQuery($sql);
     
    //affichage
    $rq = "SELECT COUNT(*) AS `nbc` FROM `dc_connected`";
    $nb = (int)dbData($sql)[0]['nbc'];
    $s  = ($nb <= 1) ? '' : 's'; 
    echo $nb, ' personne', $s, ' connectée', $s;

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

Discussions similaires

  1. Script, fonctions et variables
    Par Luigicube dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 08/07/2008, 11h37
  2. Valider script fonction perl
    Par crochepatte dans le forum Langage
    Réponses: 2
    Dernier message: 24/08/2007, 15h55
  3. fonction deprecated par Visual Studio C++
    Par guidevelop dans le forum Visual C++
    Réponses: 2
    Dernier message: 06/11/2006, 11h35
  4. Réponses: 4
    Dernier message: 29/09/2006, 12h21
  5. terminer un script, fonction exit ?
    Par Matth_S dans le forum ASP
    Réponses: 2
    Dernier message: 16/08/2006, 15h24

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