[RESOLU] adapter fichier PHP pour PHP 5.6

Petit nouveau ! | 3 Messages

24 janv. 2016, 17:15

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 ne fonctionne plus (les fonctions utilisés sont dépassés)

Ca me permettait d'afficher le nom de visiteur connecté sur le site.

Code : Tout sélectionner

<? /* 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 rempalcé par ceci

Code : Tout sélectionner

$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

Mammouth du PHP | 2703 Messages

24 janv. 2016, 19:24

mysql_escape_string($ip)
->
mysqli_real_escape_string($mysqli, $ip)

Mammouth du PHP | 881 Messages

25 janv. 2016, 14:49

Tu dois aussi remplacer tous tes <? par des <?php
Soyez artisans de paix

Petit nouveau ! | 3 Messages

26 janv. 2016, 22:36

Bonjour,

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

En revanche, le code doit être très "cochon"...

Code : Tout sélectionner

<? /* 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

Mammouth du PHP | 881 Messages

26 janv. 2016, 22:54

Bravo, ça fonctionne!

Il ne te reste qu'à
1) Indiquer le sujet comme « Résolu »
2) changer le <? par des <?php
Soyez artisans de paix

Petit nouveau ! | 3 Messages

27 janv. 2016, 20:49

Bonjour,

je ne peux pas mettre résolu
j'ai crée le post avant de créer mon compte
(kornfr Invité n'ayant pas de compte PHPfrance)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

28 janv. 2016, 00:19

J'ai mis résolu (et t'ai réattribué la paternité du 1er post ;) ), bienvenue sur PHPfrance !
Quand tout le reste a échoué, lisez le mode d'emploi...