lien special

Petit nouveau ! | 9 Messages

28 mai 2007, 15:57

bonjour,

j'aimerais bien faire un lien vers un fichier mais qui en plus incrémente un compteur à chaque fois que le lien est clické...

j'avais d'abord penser faire une bète function php avec passage du fichier par URL, ce qui permet à la fois de lancer le fichier et le compteur (je pense en tt cas)

mais j'aime pas beaucoup cette solution, parceque les gens ne savent plus prendre le fichier en faisant "click droit>enregistrer"...
y a t'il une autre solution?
qui soit transparente pour l'utilisateur?

merci d'avance
loicus

ViPHP
ViPHP | 928 Messages

28 mai 2007, 16:31

Solution simple :
- Une table SQL qui contient comme champs : id (clef primaire), nom_fichier (le nom du fichier sur ton serveur), compteur (le compteur de click)
- Lorsque tu affiches le fichier à télécharger tu fais un lien du genre : download.php?id=xx (xx = un entier, qui correspondra à une entrée dans ta table SQL)
- Dans ton fichier download.php :
<?php
// Récupération de l'ID
$id = (isset($_GET['id'])) ? intval($_GET['id']) : NULL;
if (is_null($id))
{
	die('Erreur ...');
}

// Vérification de l'existance du fichier, récupération de ses informations
$sql = 'SELECT nom_fichier
		FROM ta_table_sql
		WHERE id = ' . $id;
$result = mysql_query($sql) OR die(mysql_error());
if (!$row = mysql_fetch_assoc($result))
{
	die('Fichier inexistant');
}
mysql_free_result($result);

// Compteur
$sql = 'UPDATE ta_table_sql
		SET compteur = compteur + 1
		WHERE id = ' . $id;
mysql_query($sql) OR die(mysql_error());

// Lancement du download
$filename = 'chemin/vers/fichier/' . $row['nom_fichier'];
header('Content-Type: application/octetstream; name: ' . $row['nom_fichier']);
header('Content-Disposition: inline; filename="' . $row['nom_fichier'] . '"');
echo file_get_contents($filename);
ob_end_flush();
exit

?>

Petit nouveau ! | 9 Messages

28 mai 2007, 18:31

c'est justement ce que je ne veux pas....

parceque l'utilisateur ne sait plus ouvrir le fichier en faisant click_droit->enregistrer

donc ca exclu de passer par une page du type download.php

Petit nouveau ! | 9 Messages

28 mai 2007, 19:55

j'ai trouver quelque chose comme ca :

Code : Tout sélectionner

<a href="../../../C++/Fourier.JPG" onclick="<SCRIPT LANGUAGE="JavaScript" SRC="ClickFile.php?File=Title_2" ></SCRIPT>">Title_2</a>
mais la syntaxe n'est pas bonne...

comment l'écrire correctement?
je cherche sur le net, mais sans succes

merci d'avance
loicus

ViPHP
ViPHP | 928 Messages

29 mai 2007, 09:33

Normalement si, l'utilisateur saura utiliser le click droit, je n'ai jamais eu de problèmes à ce sujet.

L'autre solution : utiliser AJAX sur le onclick du lien pour incrémenter un compteur.

Petit nouveau ! | 9 Messages

29 mai 2007, 13:28

tu as un site ou le code que tu m'as donné est implémenté?
que j'essaye...

loicus

EDIT : j'ai testé....

ca marche nikel
merci beaucoup