conta click

Ciao a tutti,

ho l'esigenza di realizzare:

1) un contatore di click riferito a link esterni: all'interno di www.miosito.it ho un link ad un altro sito www.altrosito.com e devo contare quanti click vengono fatti sul link esterno.

Ho provato a fare delle prove ma mi da sempre errore.

Ho messo nel link del mio sito questa scritta:

<a href="counter.php?link=www.altrosito.com">

Il problema è questo: non riesco a fare la ridirezione dell'url al sito.

Il contatore conta esattamente ma ho sempre questo errore

Warning: Cannot modify header information - headers already sent by......

il problema me lo da proprio nell'ultima riga.

Come posso fare per correggere questo errore????

???

<?php

include("config.php");

$link=$_GET['link'];

// Connessione a database

$myconn=mysql_connect($host,$user,$password) or die("Errore di connessione");

mysql_select_db($db_name,$myconn);

// Controllo del link visionato

$query="SELECT * FROM $name_tab";

$result=mysql_query($query,$myconn);

$numrows=mysql_num_rows($result);

for ($i=0;$i<$numrows;$i++)

{

$ar_result=mysql_fetch_row($result);

$id=$ar_result[0];

$data=$ar_result[1];

$titolo=$ar_result[2];

$click=$ar_result[3];

$url=$ar_result[4];

if ($link==$url)

{

$click++;

$update="UPDATE $name_tab SET data='$data',titolo='$titolo',nr_click='$click',url='$url' WHERE id='$id'";

$res_update=mysql_query($update,$myconn);

}

}

// Redirect verso il link desiderato

header("location: $link");

?>

Per realizzare un contatore di click riferito a link dinamici:  www.miosito.it/descrizione.php?id=200

www.miosito.it/descrizione.php?id=456

come posso procedere???

Grazie mille!!

inviato 10 anni fa
stellina
X 0 X

Il problema è facilmente risolvibile  ;)

La funzione header non ha alcun effetto, e produce l'errore che hai riportato, se lo script ha generato un output, ovvero se ha mandato al borwser anche un solo carattere. Anche uno spazio o un "a capo" costituiscono output! Devi quindi verificare che gli script non abbiano spazi o "a capo" tra l'inizio del file ed il tag <?php e tra il tag ?> e la fine del file.

Se infatti il tuo script non produce messaggi (attenzione ai messaggi di errore come NOTICE e WARNING) allora è molto probabile che sia lì l'output "invisibile"

Ti faccio notare che il metodo che usi per recuperare l'ID della pagina visitata ed incrementare il contatore è altamente inefficiente  :o

Per fare tutto ciò ti basta una sola query:

<?php

include("config.php");

$link=$_GET['link'];

// Connessione a database
$myconn=mysql_connect($host,$user,$password) or die("Errore di connessione");
mysql_select_db($db_name,$myconn);


$update="UPDATE $name_tab SET nr_click=nr_click+1 WHERE url='$link'";
$res_update=mysql_query($update,$myconn);

// Redirect verso il link desiderato
header("location: $link");
?>

Se il link usa direttamente un ID allora basta cambiare la query in:

$id = $_GET['id'];

$update="UPDATE $name_tab SET nr_click=nr_click+1 WHERE id='$id'";

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ciao,

ho seguito le tue indicazioni e mi riporta l'errore

Not Found

The requested URL /www.altrosito.com was not found on this server.

perchè?? :bye:

risposto 10 anni fa
stellina
X 0 X

Il problema risiede in ciò che passi attraverso la variabile $_GET['link'] e nel suo utilizzo nella header("location: $link");

Nell'header "location" va inserito un percorso corretto, relativo o assoluto.

Nel caso la pagina a cui si sta per reindirizzare l'utente sia esterna al sito credo sia necessario utilizzare un percorso assoluto. Quindi la funzione andrebbe utilizzata così:

header("location: http://www.altrosito.com");

e nel tuo caso quindi:

header("location: http://$link");

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

grazie era proprio quello il problema!!

 ;)

risposto 10 anni fa
stellina
X 0 X

Se il link usa direttamente un ID allora basta cambiare la query in:

$id = $_GET['id'];

$update="UPDATE $name_tab SET nr_click=nr_click+1 WHERE id='$id'";

In merito a questo punto devo dire che il concetto è chiaro. Provandolo però non funziona. Non mi aggiorna il numero di click.

 ???

risposto 10 anni fa
stellina
X 0 X

Riporta la script che stai usando

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

questo è il link

echo "<a href='counter_din_id.php?link=www.miosito.it/descrizione.php?id=$id' target=_blank>$foto</a><br>";

La tabella track_dinamici ha i seguenti campi:

id,data, titolo, nr_click, url

E questo è il codice di counter_din_id

$id=$_GET['id'];
$myconn=mysql_connect($host,$user,$password) or die("Errore di connessione");
mysql_select_db($db_name,$myconn);
$update="UPDATE track_dinamici SET nr_click=nr_click+1 WHERE id='$id'";
$res_update=mysql_query($update,$myconn);
header("location: http://$link");

Se ho circa 3000 id devo riscrivere ognio volta l'url ogni volta con un id diverso????

risposto 10 anni fa
stellina
modificato 10 anni fa
X 0 X

Se usi l'id allora non ha molto senso passare anche il link nell'URL. Questo lo ricavi con una semplice select!

Ti consiglio di procedere in questo modo:

1) ricavi l'id dall'URL

$id=$_GET['id'];

2) fai una select per ottenere il link associato all'id

SELECT link FROM track_dinamici WHERE id=$id

3) fai la fetch per estrarre il risultato e mettilo in una variabile $link

4) fai una update per aggiornare il numero di click

UPDATE track_dinamici SET nr_click=nr_click+1 WHERE id='$id'

4) lanci la funzione header "location" utilizzando la variabile $link

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

grazie per i suggerimenti,

gli url devono per forza essere inseriti nel db??? Ora ne dovrei inderire piùdi 3000

 :(

risposto 10 anni fa
stellina
X 0 X

Se non gli inserisci come farai a capire il legame tra gli id, i click e gli url? Nella tabella avresti un elenco di id ed il numero di click, ma a quale url appartengono?

Come vedi questa associazione da qualche parte deve stare e forse il DB è il migior posto  ;)

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda