par
fabrice88250 » 28 janv. 2019, 17:09
merci pour l'aide mais je rame un peu désolé.
j'ai reprise intégralement le code (c'est un compteur de visite) mais je n'ai aucunes données qui s'affichent en essayant de faire les modifications pour passer en sqli....
j'en suis là...
en ancienne version sql le compteur fonctionne bien (il tourne encore) mais en version sqli plus rien...
Code : Tout sélectionner
<?php
// Chemin absolu vers le fichier config.inc.php
$chemin = __FILE__;
$chemin = str_replace('compteur.php', '', $chemin);
// On vérifie que le fichier config.inc.php existe bien
if (!file_exists($chemin . 'config.inc.php')) {
echo 'Le fichier config.inc.php manque à l\'appel !';
} else {
require_once($chemin . 'config.inc.php');
// Connexion à la base de données
$base = mysqli_connect($host_name, $user_name, $password, $database);
@mysqli_select_db($base_nom, $base);
/***********************
* Traitement des dates *
***********************/
// On stocke dans $maintenant la date courante
$jour = date('j');
$mois = date('n');
$annee = date('Y');
$aujourdhui = mktime(0, 0, 0, $mois, $jour, $annee); // date d'aujourd'hui à minuit au format timestamp
$maintenant = time(); // date de l'instant présent au format timestamp
/***************************
* Vérifications préalables *
***************************/
// On vérifie si on a dépassé le nombre de jours pendant lesquels les IP sont conservées
$requete = "SELECT * FROM $base_table WHERE ip = 'reference'";
$resultat = $connect->query($requete);
$data = mysqli_fetch_assoc($resultat);
// On stocke dans $total le nombre de visites total
$total = $data['total'];
// On récupère la dernière date à laquelle les IP ont été effacées
$ip_suppr = $data['prem_visite'];
// Si la durée de conservation des IP est dépassée
if ( ($maintenant-$ip_suppr) > ($garder_ip*24*60*60) ) {
// On vide tout sauf la première ligne de référence
$requete = "DELETE FROM $base_table WHERE ip != 'reference'";
$resultat = $connect->query($requete);
// Et on remplace la date de référence par la date d'aujourd'hui à minuit
$requete = "UPDATE $base_table SET prem_visite = '$aujourdhui' WHERE ip = 'reference'"; // On met la clause WHERE au cas où les IP n'ont pas pu être effacées
$resultat = $connect->query($requete);
}
// On récupère la date du dernier jour stocké dans la base
$date_stockee = $data['la_date'];
// Si on a changé de jour, on remet le nombre de visites quotidiennes à 0
if ( ($aujourdhui != $date_stockee) ) {
// Le nombre de visites de chaque visiteur de la base est remis à 0
$requete = "UPDATE $base_table SET total = '0' WHERE ip != 'reference'";
$resultat = $connect->query($requete);
// La date stockée est mise à jour à la date d'aujourd'hui
$requete = "UPDATE $base_table SET la_date = '$aujourdhui' WHERE ip = 'reference'";
$resultat = $connect->query($requete);
}
/**********************************
* Fonction de vérification des IP *
**********************************/
// On définit une fonction qui vérifie si l'IP ext exclue du comptage ou pas
function verif_ip($valeur, $tableau) {
$i = 0;
while ($i < count($tableau)) {
$resultatultat = strpos($valeur, $tableau[$i]);
if ($resultatultat === false) {
$i++;
} elseif (strpos($valeur, $tableau[$i]) == 0) {
return true;
} else {
$i++;
}
}
return false;
}
/*************************
* Traitement des visites *
*************************/
// Récupération de l'adresse IP du visiteur dans $ip
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
// Et du host correspondant à cette IP
$hostname = gethostbyaddr($ip);
// Si l'IP n'est pas dans la liste de celles à exclure
if ( verif_ip($ip, $exclure_ip) != true) {
// On compte le nombre d'entrées correspondant à l'IP de notre visiteur
$resultat = $connect->query("SELECT count(*) FROM $base_table WHERE ip='$ip'");
//$ip_connue = mysql_result($resultat, 0, 0);
mysqli_data_seek($resultat, 0);
$row = mysqli_fetch_array($resultat);
$$ip_connue = $row[0];
// Si aucune IP ne correspond, le visiteur est donc nouveau dans la base de données
if ($ip_connue == 0) {
// Alors on ajoute son heure de connexion, son IP, et on initialise son nombre de visites à 1
$requete = "INSERT INTO $base_table (prem_visite, la_date, total, ip, hostname) VALUES ('$maintenant', '$maintenant', 1, '$ip', '$hostname')";
$resultat = $connect->query($requete);
// Et on incrémente le nombre de visiteurs
$total++;
$requete = "UPDATE $base_table SET total = '$total' WHERE ip = 'reference'";
$resultat = $connect->query($requete);
}
/*
Sinon le visiteur est déjà dans la base, alors :
- soit il est déjà venu dans la même période d'unicité d'un visiteur
- soit la période est dépassée, alors le visiteur est considéré comme nouveau
*/
else {
// On récupère toutes les données qui lui correspondent
$requete = "SELECT * FROM $base_table WHERE ip = '$ip'";
$resultat = $connect->query($requete);
$data = mysql_fetch_assoc($resultat);
// On récupère la date de ses première et dernière visites
$prem_visite = $data['prem_visite'];
$der_visite = $data['la_date'];
// Si la période est dépassée
if ( ($maintenant - $prem_visite) > ($periode*60*60) ) {
// Incrémentation du compteur total
$total++;
$requete = "UPDATE $base_table SET total = '$total' WHERE ip = 'reference'";
$resultat = $connect->query($requete);
// On compte le visiteur comme nouveau, même si c'est dans la même journée
$nb_visites = $data['total'] + 1;
$requete = "UPDATE $base_table SET prem_visite = '$maintenant' , la_date = '$maintenant', total = $nb_visites WHERE ip = '$ip'";
$resultat = $connect->query($requete);
}
// Sinon on est dans la même période d'unicité
else {
// On met uniquement à jour l'heure de son dernier passage
$requete = "UPDATE $base_table SET la_date = '$maintenant' WHERE ip = '$ip'";
$resultat = $connect->query($requete);
}
}
}
/***********************
* Stockage des données *
***********************/
// Nombre de visites total
$requete = "SELECT total FROM $base_table WHERE ip = 'reference'";
$resultat = $connect->query($requete);
$v_total = mysqli_fetch_row($resultat);
$v_total = $v_total[0];
// Nombres de visiteurs quotidiens
$requete = "SELECT sum(total) FROM $base_table WHERE ip != 'reference'";
$resultat = $connect->query($requete);
//ancien $v_auj = mysql_result($resultat, 0, 0);
mysqli_data_seek($resultat, 0);
$row = mysqli_fetch_array($resultat);
$v_auj = $row[0];
// Nombre de visiteurs en ligne
$en_ligne = $maintenant - ($intervalle*60);
$requete = "SELECT count(*) FROM $base_table WHERE (ip != 'reference') AND (la_date >= '$en_ligne')";
$resultat = $connect->query($requete);
// ancien $v_connecte = mysql_result($resultat, 0, 0);
mysqli_data_seek($resultat, 0);
$row = mysqli_fetch_array($resultat);
$v_connecte = $row[0];
}
?>
merci pour l'aide mais je rame un peu désolé.
j'ai reprise intégralement le code (c'est un compteur de visite) mais je n'ai aucunes données qui s'affichent en essayant de faire les modifications pour passer en sqli....
j'en suis là...
en ancienne version sql le compteur fonctionne bien (il tourne encore) mais en version sqli plus rien...
[code]<?php
// Chemin absolu vers le fichier config.inc.php
$chemin = __FILE__;
$chemin = str_replace('compteur.php', '', $chemin);
// On vérifie que le fichier config.inc.php existe bien
if (!file_exists($chemin . 'config.inc.php')) {
echo 'Le fichier config.inc.php manque à l\'appel !';
} else {
require_once($chemin . 'config.inc.php');
// Connexion à la base de données
$base = mysqli_connect($host_name, $user_name, $password, $database);
@mysqli_select_db($base_nom, $base);
/***********************
* Traitement des dates *
***********************/
// On stocke dans $maintenant la date courante
$jour = date('j');
$mois = date('n');
$annee = date('Y');
$aujourdhui = mktime(0, 0, 0, $mois, $jour, $annee); // date d'aujourd'hui à minuit au format timestamp
$maintenant = time(); // date de l'instant présent au format timestamp
/***************************
* Vérifications préalables *
***************************/
// On vérifie si on a dépassé le nombre de jours pendant lesquels les IP sont conservées
$requete = "SELECT * FROM $base_table WHERE ip = 'reference'";
$resultat = $connect->query($requete);
$data = mysqli_fetch_assoc($resultat);
// On stocke dans $total le nombre de visites total
$total = $data['total'];
// On récupère la dernière date à laquelle les IP ont été effacées
$ip_suppr = $data['prem_visite'];
// Si la durée de conservation des IP est dépassée
if ( ($maintenant-$ip_suppr) > ($garder_ip*24*60*60) ) {
// On vide tout sauf la première ligne de référence
$requete = "DELETE FROM $base_table WHERE ip != 'reference'";
$resultat = $connect->query($requete);
// Et on remplace la date de référence par la date d'aujourd'hui à minuit
$requete = "UPDATE $base_table SET prem_visite = '$aujourdhui' WHERE ip = 'reference'"; // On met la clause WHERE au cas où les IP n'ont pas pu être effacées
$resultat = $connect->query($requete);
}
// On récupère la date du dernier jour stocké dans la base
$date_stockee = $data['la_date'];
// Si on a changé de jour, on remet le nombre de visites quotidiennes à 0
if ( ($aujourdhui != $date_stockee) ) {
// Le nombre de visites de chaque visiteur de la base est remis à 0
$requete = "UPDATE $base_table SET total = '0' WHERE ip != 'reference'";
$resultat = $connect->query($requete);
// La date stockée est mise à jour à la date d'aujourd'hui
$requete = "UPDATE $base_table SET la_date = '$aujourdhui' WHERE ip = 'reference'";
$resultat = $connect->query($requete);
}
/**********************************
* Fonction de vérification des IP *
**********************************/
// On définit une fonction qui vérifie si l'IP ext exclue du comptage ou pas
function verif_ip($valeur, $tableau) {
$i = 0;
while ($i < count($tableau)) {
$resultatultat = strpos($valeur, $tableau[$i]);
if ($resultatultat === false) {
$i++;
} elseif (strpos($valeur, $tableau[$i]) == 0) {
return true;
} else {
$i++;
}
}
return false;
}
/*************************
* Traitement des visites *
*************************/
// Récupération de l'adresse IP du visiteur dans $ip
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
// Et du host correspondant à cette IP
$hostname = gethostbyaddr($ip);
// Si l'IP n'est pas dans la liste de celles à exclure
if ( verif_ip($ip, $exclure_ip) != true) {
// On compte le nombre d'entrées correspondant à l'IP de notre visiteur
$resultat = $connect->query("SELECT count(*) FROM $base_table WHERE ip='$ip'");
//$ip_connue = mysql_result($resultat, 0, 0);
mysqli_data_seek($resultat, 0);
$row = mysqli_fetch_array($resultat);
$$ip_connue = $row[0];
// Si aucune IP ne correspond, le visiteur est donc nouveau dans la base de données
if ($ip_connue == 0) {
// Alors on ajoute son heure de connexion, son IP, et on initialise son nombre de visites à 1
$requete = "INSERT INTO $base_table (prem_visite, la_date, total, ip, hostname) VALUES ('$maintenant', '$maintenant', 1, '$ip', '$hostname')";
$resultat = $connect->query($requete);
// Et on incrémente le nombre de visiteurs
$total++;
$requete = "UPDATE $base_table SET total = '$total' WHERE ip = 'reference'";
$resultat = $connect->query($requete);
}
/*
Sinon le visiteur est déjà dans la base, alors :
- soit il est déjà venu dans la même période d'unicité d'un visiteur
- soit la période est dépassée, alors le visiteur est considéré comme nouveau
*/
else {
// On récupère toutes les données qui lui correspondent
$requete = "SELECT * FROM $base_table WHERE ip = '$ip'";
$resultat = $connect->query($requete);
$data = mysql_fetch_assoc($resultat);
// On récupère la date de ses première et dernière visites
$prem_visite = $data['prem_visite'];
$der_visite = $data['la_date'];
// Si la période est dépassée
if ( ($maintenant - $prem_visite) > ($periode*60*60) ) {
// Incrémentation du compteur total
$total++;
$requete = "UPDATE $base_table SET total = '$total' WHERE ip = 'reference'";
$resultat = $connect->query($requete);
// On compte le visiteur comme nouveau, même si c'est dans la même journée
$nb_visites = $data['total'] + 1;
$requete = "UPDATE $base_table SET prem_visite = '$maintenant' , la_date = '$maintenant', total = $nb_visites WHERE ip = '$ip'";
$resultat = $connect->query($requete);
}
// Sinon on est dans la même période d'unicité
else {
// On met uniquement à jour l'heure de son dernier passage
$requete = "UPDATE $base_table SET la_date = '$maintenant' WHERE ip = '$ip'";
$resultat = $connect->query($requete);
}
}
}
/***********************
* Stockage des données *
***********************/
// Nombre de visites total
$requete = "SELECT total FROM $base_table WHERE ip = 'reference'";
$resultat = $connect->query($requete);
$v_total = mysqli_fetch_row($resultat);
$v_total = $v_total[0];
// Nombres de visiteurs quotidiens
$requete = "SELECT sum(total) FROM $base_table WHERE ip != 'reference'";
$resultat = $connect->query($requete);
//ancien $v_auj = mysql_result($resultat, 0, 0);
mysqli_data_seek($resultat, 0);
$row = mysqli_fetch_array($resultat);
$v_auj = $row[0];
// Nombre de visiteurs en ligne
$en_ligne = $maintenant - ($intervalle*60);
$requete = "SELECT count(*) FROM $base_table WHERE (ip != 'reference') AND (la_date >= '$en_ligne')";
$resultat = $connect->query($requete);
// ancien $v_connecte = mysql_result($resultat, 0, 0);
mysqli_data_seek($resultat, 0);
$row = mysqli_fetch_array($resultat);
$v_connecte = $row[0];
}
?>[/code]