"mysql close" obligatoire ?

Forums consacré à la conception de site web : W3C (HTML, CSS, XML, XSL etc.), langages de programmation (PHP, JavaScript, etc.), bases de données (MYSLQ ..), scripts, outils de développement.

Modérateur: Modérateurs

"mysql close" obligatoire ?

Messagede nelumbo » Mar Mai 29, 2007 7:36 pm

Bonsoir,

J'ai un petit script php me permettant de connaitre le nombre de visiteur sur le site. Il utilise un BD, il y' a donc une connexion ! Mais pas de fermeture dans le script, est ce normal ?

Code: Tout sélectionner
<?php

mysql_connect("######", "#######", "#######");
mysql_select_db("######");

"ip" est l'adresse ip du visiteur
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);

if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on va l'ajouter
{
    mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp
{
    mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}


$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);


$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);

echo '<p> ' . $donnees['nbre_entrees'] . ' visiteurs connectés</p>';
?>
Avatar de l’utilisateur
nelumbo
PR1
PR1
 
Messages: 193
Inscription: Mar Mar 06, 2007 3:20 pm

Publicité

Messagede dcz » Mar Mai 29, 2007 8:43 pm

Faudrait peut être aussi valider un brin $_SERVER['REMOTE_ADDR'] avant de le balancer dans la requête, sait on jamais.

Et oui, un petit mysql_close() ne fait pas de mal en fin de script. Il n'y a pas d'autre accès la la db sur ta page ?

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21406
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede nelumbo » Mer Mai 30, 2007 10:07 am

dcz a écrit:Faudrait peut être aussi valider un brin $_SERVER['REMOTE_ADDR'] avant de le balancer dans la requête, sait on jamais.


Tu peux me corriger ça ? :?

Et oui, un petit mysql_close() ne fait pas de mal en fin de script. Il n'y a pas d'autre accès la la db sur ta page ?


Si mais pas toujours sur la meme db.
Avatar de l’utilisateur
nelumbo
PR1
PR1
 
Messages: 193
Inscription: Mar Mar 06, 2007 3:20 pm

Messagede dcz » Ven Juin 01, 2007 10:11 am

Et bien, $_SERVER['REMOTE_ADDR'] c'est l'ip du client, mais encore faudrait-l s'assurer que c'est bien une un IP avant de l'envoyer dans une requête SQL.

Cette variable pourrait tout à fait prendre d'autre valeur qu'une IP valide dans certains cas, voir, un petit malin pourrait en profiter pour envoyer des valeur qui modifieraient ta requête et servirait à hacker ton site.
Et puis, il y a les IPV6 aussi.
Un petit
Code: Tout sélectionner
if (preg_match("`^(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$`", $_SERVER['REMOTE_ADDR'] )

avant d'envoyer ta requête t'assurerait d'avoir un ip V4 valide avant de lancer la requête.

Pour les connexion multiple, ça peut valoir de coup d'harmoniser un peu si c'est pas le cas, genre s'assurer que l'on ne se connecte pas deux fois à la même DB et bien toutes les fermer en fin de script, à moins que tu ais besoin de connections persistantes.

C'est pour ce genre de truc qu'une classe de fonction pour gérer la db est bien pratique.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21406
Inscription: Ven Avr 28, 2006 9:03 pm


Retourner vers Développement de site

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 13 invités