Connection base camouflée

Eléphant du PHP | 297 Messages

26 oct. 2006, 01:59

Bonjour,
Je suis en train de mettre en place un script sur mon site pour afficher le nombre de connecté.
J'en ai trouvé un plutot simple.
Il fonctionne avec une table...
Ca marche bien, par contre je voudrais que la connection a ma base se fasse sans que j'ai a inscrire mes codes sur les pages.
J'ai déja un repertoire avec les infos de connection pour d'autres pages lors de requetes...mais je ne vois pas comment modifier les codes de connection de ce sript.
merci de votre aide
voici le script
<?php
// Connexion à MySQL
mysql_connect("localhost", "base", "motdepasse");
mysql_select_db("base");

// -------
// ETAPE 1 : on vérifie si l'IP se trouve déjà dans la table
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "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'] . '\'');
}

// -------
// ETAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes

// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);

// -------
// ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);


// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
echo '<p>Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteurs connectés</p>';
?>

ViPHP
ViPHP | 1961 Messages

26 oct. 2006, 02:15

Bonsoir,

Tu n'as qu'à inclure ta page de connexion dans ce script.
En première ligne (enfin avant accès à la base)
include_once('chemin/fichier_connexion.php');
Et tu supprimes les deux lignes de connexion du script

// Script de connexion à MySQL
include_once('chemin/fichier_connexion.php');
/* Devenu inutile
mysql_connect("localhost", "base", "motdepasse");
mysql_select_db("base");
*/
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 297 Messages

26 oct. 2006, 02:42

salut,
merci, j'ai essayé mais ca me donne un message d'erreur d'acces a la base... :cry:

ViPHP
ViPHP | 1961 Messages

26 oct. 2006, 02:48

Re,

Montre ton code connexion (en masquant les MdP) et l'erreur
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 297 Messages

26 oct. 2006, 03:07

ok

j'ai en haut de ma page
<?php require_once('connect/mapageconnection.php'); ?>
ma page de connection
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_bout = "localhost";
$database_bout = "base";
$username_bout = "base";
$password_bout = "motdepasse";
$boutique = mysql_pconnect($hostname_bout, $username_bout, $password_bout) or trigger_error(mysql_error(),E_USER_ERROR); 
?>
voici le code erreur :

Code : Tout sélectionner

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home.2/terren/www/annuaires.php on line 550 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home.2/terren/www/annuaires.php on line 571 Il y a actuellement visiteurs connectés
ma page de connection fonctionne, car les autres requetes sont executées sans erreurs

ViPHP
ViPHP | 1961 Messages

26 oct. 2006, 03:17

Re,

Ton erreur vient d'une erreur de syntaxe.

Il te manque un argument à l'apel de la fonction "mysql_fetch_array()" aux lignes 550 et 571 du fichier /home.2/terren/www/annuaires.php

Mais il serait aussi judicieux de sélectionner ta base dans ton fichier de connexion (si tu n'accèdes qu'à une seule base dans ton appli) dans chaque fichier avant d'acèder à la base si plusieurs bases.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 297 Messages

26 oct. 2006, 03:28

merci pour les conseils et infos,
je vais m'y remettre demain...
ciao