mega contatore

stavo creando un contatore di click per un mio amico ... fin quando si trattava di 1 solo link tutto andava bene...

ma ora che ci sono diversi link

ho bisogno di fare questo:

la pagina click.php scrive la pagina counter.php e reindirizza a un url

quindi la pagina counter.php dovrà avere:

$http://www.asd.asd.com/download/arc.zip = 250;

$http://www.asd.asd.com/download/arc.rar = 52;

quindi l'url diventa il nome dell'array che contiene il numero di click.l'url lo cattura la funzione che crea il file e lo scrive

tramite $_GET

l'url dovrebbe essere così per aggiungere 1 al contatore e andare all'url: index.php?do=click&url:http://www.asd.asd.com/download/arc.rar

mi sono spiegato bene gianni???

il mio problema è non so come aggiungere dati alla pagina senza eliminare il codice vecchio usanfo fwrite e come creare un array che abbia $http://www.asd.asd.com/download/arc.rar = click,

ecc

e creare una nuova chiave dell'array per ogni url nuovo

es se metto &url=http://LOL.LOL.LOL

crea

$url_click = array(

http://www.asd.asd.com/download/arc.rar = 100,  // questo è l'array vecchio

$http://LOL.LOL.LOL = 0,

);

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

puoi usare un DB?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

io vorrei usarlo e se lo usassi sarebbe facile con le query :D ma non posso :( grazie anticipatamente se puoi aiutarmi O0

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

quante pagine sono da monitorare? Quanto trafficato è il sito?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

è un sito nuovo quindi poco

tu dici di fare una funzione per ogni link quindi un file contatore per ogni link?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

unico file contatore da includere in tutte le pagine.

Si potrebbe creare un array associativo con tutti i dati del tipo "nome_pagina" => numero visite.

L'array potrebbe essere memorizzato sul file di testo in diversi modi, ad esempio dati su più righe separati da virgole.

Si potrebbe provare anche a serializzare direttamente l'array.

Il file contatore deve semplicemente prelevare la variabile $_SERVER['PHP_SELF'] ed aggiornare l'array.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

no i link sono anche esterni al sito

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
no i link sono anche esterni al sito

in che senso? non sono pagine del sito? sono files?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

infatti il click lo segna la pagina dove avviene non la pagina finale ad esempio

dal mio sito faccio scarica da : www.mirror.com/file/lollo.rar

e quando clicco mi apre una nuova finestra con il file e segna +1 al contatore

<?php

function click()

{        

$counter = "count.php";

if (file_exists($counter))

{

require($counter);

        $clicks = $click + 1;

        $count = "<?php \$click = $clicks; ?>";    

        $file = fopen("$counter","w");

        $conf = fwrite($file,("$count"));

        fclose($file);

        echo $clicks;

}

else

{

        $count = "<?php \$click = 0; ?>";    

        $file = fopen("$counter","w");

        $conf = fwrite($file,("$count"));

        fclose($file);

        echo $clicks;

}

}

?>

<a href="<?php $PHP_SELF ?>?click" >aumenta click di 1</a>

  <?php

    $action = $_SERVER['QUERY_STRING'];

    switch($action)

    

        {

        

             case "click":                               

                click();

            break;

                        }

?>

questo era il contatore per 1 solo link [si deve solo aggiungere il redirect]

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

potresti usare la stessa tecnica di php-stats, ovvero assegnare un id ad ogni link da monitorare.

Dovresti però memorizzare tutte le associazioni ID -> URL, in modo da sapere verso dove effettuare il redirect.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

okma se volessi aggiungere un link tramite form e alla fine metterlo in un array?devo farlo perchè il mio amico non sa proprio dove mettere le  mani in php e quindi vorrei mettere ogni link aggiunto via form in un array nella pagina counter.php ma non so come fare se fossi così gentile da spiegarmelo gianni posso farlo da solo  :)

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Ho buttato giù un po' di codice per memorizzare in un array delle stringhe inviate in un form. L'array viene poi memorizzato in un file di testo attraverso la serializzazione.

E' uno script realizzato in 5 minuti, quindi non pretendere che sia perfetto ma pù servirti come spunto.

<?php
error_reporting(E_ALL);
$nome_file = 'links.txt';
if(!file_exists($nome_file))
{
   $handle = fopen($nome_file,'wb');
   fwrite($handle,serialize(array()));
   fclose($handle);
}
$links = unserialize(file_get_contents('links.txt'));

if($_POST)
{
   $_POST['link'] = stripslashes(trim($_POST['link']));
   if($_POST['link'] && !in_array($_POST['link'], $links)) $links[] = $_POST['link'];
   $handle = fopen($nome_file,'wb');
   fwrite($handle,serialize($links));
   fclose($handle);
   header('location: '.$_SERVER['PHP_SELF']);
   exit();
}

?>
<form action="" method="POST">
<input name="link" type="text">
<input name="submit" type="submit" value="invia">
</form>
<pre>
<?php
print_r($links)
?>
</pre>

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

grazie gianni

l'utput del file .txt è questo

Array

(

    [0] => http://www.asd.com

    [1] => www.asd.it

)

posso invertire gli array con FLIP e usare il numero per contare i click e il conetuto come URL e nome?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Ti propongo una variante dello scipt precedente che usa un array più complesso. Sarebbe stato comodo usare un array associativo in modo da usare le chiavi dell'array per conservare gli URL e i valori associati per memorizzare il numero di click. Ma non si può poiché gli URL contengono sempre dei caratteri non leciti per una chiave di array.

Allora ho pensato di poter aggirare il problema costruendo degli hash md5 per ogni URL e usare questo come chiave dell'array. Per ciascuna chiave poi memorizzi sia l'URL vero e proprio sia il numero di click.

Prima di provare questo script cancella il precedente file di testo.

<?php
error_reporting(E_ALL);
$nome_file = 'links.txt';
if(!file_exists($nome_file))
{
   $handle = fopen($nome_file,'wb');
   fwrite($handle,serialize(array()));
   fclose($handle);
}
$links = unserialize(file_get_contents('links.txt'));

if($_POST)
{
   $_POST['link'] = stripslashes(trim($_POST['link']));
   $hash = md5($_POST['link']);
   if($_POST['link'] && !in_array($hash, $links))
   {
      $links[$hash] = array('URL'=>$_POST['link'], 'click'=>0);
   }
   $handle = fopen($nome_file,'wb');
   fwrite($handle,serialize($links));
   fclose($handle);
   header('location: '.$_SERVER['PHP_SELF']);
   exit();
}

?>
<form action="" method="POST">
<input name="link" type="text">
<input name="submit" type="submit" value="invia">
</form>
<pre>
<?php
print_r($links)
?>
</pre>
risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda