PHP - Incrémenter Hits et afficher fichier

Résolu/Fermé
th2 - 5 juin 2010 à 15:21
 th2 - 5 juin 2010 à 15:52
Bonjour,

J'ai un petit soucis. Je voudrais incrémenter une variable "hits" et afficher un fichier précis à chaque fois mais je n'ai aucune idée de comment faire cela d'une façon sécurisée.

Voici mon code (j'ai plusieurs pages de ce type):

<a href="index.php?pageid=papers" target="_top">:: Papers ::</a>
<table class="list" width="90%">
  <tr class="toplist">
    <td width="9%"> :: Date</td>
    <td width="66%"> :: Title</td>
    <td width="10%"> :: Hits</td>
    <td width="15%"> :: Author</td>
  </tr>
<?php
$db = mysql_connect($Site['MYSQLHost'], $Site['MYSQLUser'], $Site['MYSQLPass']);
mysql_select_db($Site['MYSQLDatabase'],$db);


$sql = 'SELECT COUNT(*) AS NBentrees FROM p4per';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$Data =  mysql_fetch_assoc($req);

$NBpages  = ceil($req / $Site['LinesPerTable']);
$LastPage = $NBpages;

if (isset($_GET['page']))
{
$page = $_GET['page'];
if (!is_numeric($page))
{
header('Location: index.php?pageid=hacker');
}
}
else
{
		$page = 1;
}
$Limit = ($page - 1) * $Site['LinesPerTable'];

$sql = 'SELECT id,date,title,hit,author FROM p4per ORDER BY date DESC LIMIT '.$Limit.','.$Site['LinesPerTable'];
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_assoc($req))
    {
    	echo '<tr class="listline"><td>'.$data['date'].'</td><td><a href="files/papers/'.$data['id'].'.txt" style="font-variant: normal;" target="_top">'.$data['title'].'</a></td><td>'.$data['hit'].'</td><td>'.$data['author'].'</td></tr>';
    }
mysql_close();
?>
</table>
<?php
echo '<br /><a href="index.php?pageid=papers&page=1" target="_top"><<First </a>';
for ($i = 1 ; $i <= $NBpages ; $i++)
{
    echo '<a href="index.php?pageid=papers&page='.$i.'" target="_top">['.$i .']</a> ';
}
echo '<a href="index.php?pageid=papers&page='.$LastPage.'" target="_top"> Last>></a><br />';
?>


Donc pour résumer, je voudrais incrémenter les hits puis afficher le fichier texte ($id.txt)

Merci de m'aider.

A voir également:

2 réponses

thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
5 juin 2010 à 15:49
salut,
l'idée pour se genre de truc c'est d'avoir un script a part pour la gestion de l'affichage ainsi l'incrementation du hit donc dans tes liens tu aura quelque chose comme ca
<a href='hitsmanager.php?id=md5($idfichier)'>nom fichier</a>

dans hitsmanager.php tu aura quelque chose comme ca
//recuperation de l'id
$id_fichier = $_GET[id];
//recuperation du fichier correspondant
$sql = "SELECT * FROM tablefichier WHERE id='".$id_ficher."'";
.......//le reste recuperation des differents 
//maintenant l'update du nombre de hit
mysql_query("UPDATE table SET hits = hits+1 WHERE id='".$id_fichier."'");
//l'affichage
header('content-type: text/html; charset=utf-8');//pour le html
//ou
header('content-type: text/plain; charset=utf-8');//text normale
readfile($file); //$file tu doit le construire suivant le nom du fichier

attention !! ici j'ai utiliser md5 pour crypter l'id des fichier en md5 ceci suppose que tu a ces id crypter dans ta base sinon tu pour un cryptage temporaire tu peut utilise base64_encode() et base64_decode() a la reception et tout autre fonction de cryptage du genre


CORDIALEMENT
1
Merci beaucoup !
0