CHMOD sur free??

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : CHMOD sur free??

par pjl » 29 sept. 2005, 17:10

ouaip, c'est vrai qu'il été temps de mettre ce sujet en résolu, on dois pas etre loin du post le plus long :lol:
Oh non, y'en a un plus long que celà et pas résolu et un autre dont on est sans nouvelle qui a été coupé en 3 ou 4 posts.

par Truc » 29 sept. 2005, 14:55

ouaip, c'est vrai qu'il été temps de mettre ce sujet en résolu, on dois pas etre loin du post le plus long :lol:

par Cypher_PHP » 29 sept. 2005, 14:47

c'était moi en haut j'oubliais de me connecter

voici le code du script (bon) pour FREE:


<? 
// Connexion à MySQL 
mysql_connect("sql.free.fr", "xxxxxx", "xxxxxx"); 
mysql_select_db("gb_recordconnect"); 
//$dbtable= "gb_recordconnect";

// ------- 
// 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(ip) AS nbre_entrees FROM gb_recordconnect 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 gb_recordconnect VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')'); 
} 
else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp 
{ 
    mysql_query('UPDATE gb_recordconnect 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 * 1); // 60 * 5 = nombre de secondes écoulées en 5 minutes 
mysql_query('DELETE FROM gb_recordconnect 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(ip) AS nbre_entrees FROM gb_recordconnect'); 
$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 sur mon site !</p>'; 

// Recherche du nombre de gb_recordconnect 
//ajuste les données de la requete id et table 

$query="SELECT COUNT(ip) FROM gb_recordconnect"; 
$sql_result = mysql_query($query); 
$nb_actuel=mysql_result($sql_result, 0,0); 

//traitement du fichier -> lecture du record 
$fichier_text="record.txt"; 
$f=fopen($fichier_text,"r+"); 
$record = fread ($f, filesize ($fichier_text));



if($record<$nb_actuel)  //si la valeur lue dans le fichier est inferieure alors on écrase le fichier avec la nouvelle valeur 
  { 
       rewind ($f); 
       fwrite($f, $nb_actuel); 
       $record=$nb_actuel; 
        
   } 
fclose($f); 
echo "Le record de connectés est: ".$record['maxrecord'];

?> 

par mere-teresa » 29 sept. 2005, 14:47

Si tu as réussi : mets le flag Résolu.

par Invité » 29 sept. 2005, 14:45

ah enfin
j'ai réussi

pour les points virgules, j'étais étourdi

et pour le reste, ca a été un peu difficile car j'ai pas vrt les notions approfondis de PHP

merci quand meme pour tout et surtout ta patience

par Truc » 29 sept. 2005, 13:01

Ton code n'est pas cohérant, tu devrai meme avoir une erreur mysql avec ceci:
echo $row['ip'];
$row n'est pas définit dans la boucle puisque tu affecte le mysql_fetch_array() à $nb_actuel et non $row :wink:

pour eviter la boucle (inutile) tu aurai pu reprendre la requete de mon code a savoir:
$query="SELECT COUNT(ip) FROM table";
$sql_result = mysql_query($query);
$nb_actuel=mysql_result($result, 0,0); 
comme ça tu as le nombre d'IP de la table directement
dans $nb_actuel. Tu as voulu aller un peu vite eet du
coup tu as mélangé des variables :wink:

Pareil pour le test de la valeur du fichier et du nombre
acctuel, dans ton code il ne se passe pas grand chose
normal puisque $nb_actuel ne vaut rien !!

Attention un point virgule en trop s'est glissé dans ton
code la ligne apres la lecture de la valeur du fichier!!!

Voila je ne te donne pas la soluce tout de suite mais
avec les éléments que je viens de te donner tu arrivera
a arrager ton code :D

par Cypher_PHP » 29 sept. 2005, 07:02

et les resultats:

un seul ip enregistré dans la base de données puisque je suis connecté dessus

et dans le fichier le chiffre est 1

mais il y a avait bcp de connectés!!

par Cypher_PHP » 29 sept. 2005, 06:42

salut

voici le code php:
<? 
// Connexion à MySQL 
mysql_connect("sql.free.fr", "xxxxx", "xxxxx"); 
mysql_select_db("gb_recordconnect"); 
//$dbtable= "gb_recordconnect";

// ------- 
// 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(ip) AS nbre_entrees FROM gb_recordconnect 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 gb_recordconnect VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')'); 
} 
else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp 
{ 
    mysql_query('UPDATE gb_recordconnect 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 * 1); // 60 * 5 = nombre de secondes écoulées en 5 minutes 
mysql_query('DELETE FROM gb_recordconnect 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(ip) AS nbre_entrees FROM gb_recordconnect'); 
$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 sur mon site !</p>'; 

// Recherche du nombre de gb_recordconnect 
//ajuste les données de la requete id et table 
$query		= "SELECT COUNT(ip) as maxrecord FROM gb_recordconnect"; 
$sql_result = mysql_query($query); 
while ($nb_actuel 	= mysql_fetch_assoc($sql_result))
{
echo $row['ip'];
}
mysql_free_result($sql_result);

//traitement du fichier -> lecture du record 
$fichier_text="record.txt"; 
$f=fopen($fichier_text,"r+"); 
$record = fread ($f, filesize ($fichier_text));
; 



if($record<$nb_actuel)  //si la valeur lue dans le fichier est inferieure alors on écrase le fichier avec la nouvelle valeur 
  { 
       rewind ($f); 
       fwrite($f, $nb_actuel); 
       $record=$nb_actuel; 
        
   } 
fclose($f); 
echo "Le record de connectés est: ".$record['maxrecord'];

?> 

par Truc » 29 sept. 2005, 01:25

oui ca y est
j'ai compris?
Tu peut remontrer comment tu a fait pour récupèrer les données de la BD ?

par Cypher_PHP » 28 sept. 2005, 21:50

oui ca y est
j'ai compris

mais les chiffres sont restées immobiles et inchangées

bizarre?

par pjl » 28 sept. 2005, 21:03

regarde la doc : http://fr3.php.net/manual/fr/function.m ... -assoc.php

ensuite regarde la manière dont tu utilises mysql_fetch_assoc.

Tu vas voir de suite ton erreur.

par Cypher_PHP » 28 sept. 2005, 20:02

désolé
tjrsq pas compris
j'ai pas un bon francais puisque je suis sourd
j'espere que tu me comprends

par pjl » 28 sept. 2005, 18:11

regarde la doc pour mysql_fetch_assoc, tu verras de suite ou est ton erreur et je t'encourage fortement à faire ce que j'ai écrit au dessus, tu gagneras beaucoup de temps en faisant tes scripts.

par Cypher_PHP » 28 sept. 2005, 18:04

le plus simple est de vous montrer mon script
<? 
// Connexion à MySQL 
mysql_connect("sql.free.fr", "xxxxxxxxxxxx", "xxxxx"); 
mysql_select_db("gb_recordconnect"); 
//$dbtable= "gb_recordconnect";

// ------- 
// 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 gb_recordconnect 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 gb_recordconnect'); 
$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 sur mon site !</p>'; 

// Recherche du nombre de connectes 
//ajuste les données de la requete id et table 
$query="SELECT COUNT(ip) as maxrecord FROM gb_recordconnect"; 
$sql_result = mysql_query($query); 
$nb_actuel=mysql_fetch_assoc($sql_result);

//traitement du fichier -> lecture du record 
$fichier_text="record.txt"; 
$f=fopen($fichier_text,"r+"); 
$record = fread ($f, filesize ($fichier_text)); 


if($record<$nb_actuel)  //si la valeur lue dans le fichier est inferieure alors on écrase le fichier avec la nouvelle valeur 
  { 
       rewind ($f); 
       fwrite($f, $nb_actuel); 
       $record=$nb_actuel; 
        
   } 
fclose($f); 
echo "Le record de connectés est: ".$record['Record'];
?> 

par pjl » 28 sept. 2005, 15:30

tu n'as pas le résultat obtenu, ca signifie qu'il y a un problème quelque part et pour aider à identifer le problème, je préconise que ton script affiche temporérement les données avant de les écrire dans le fichier.