Tracking Pixel con Php

bollicine87

Nuovo Utente
17 Giu 2013
8
0
0
Seguendo questa guida thatsmith . com /2008/11/how-to-make-tracking-images-with-php sono riuscito a creare il pixel tag che mi serviva. Ora devo personalizzarlo, ma conosco pochissimo il php e non riesco a farlo funzionare come deve

Questo è lo script diciamo di base :

PHP:
<?php
header("content-type: image/png");echo gzinflate(base64_decode("6wzwc+flkuJiYGDg9fRwCQLSjCDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOSxMDB+E7cIBcl7uvq5rHNKaAIA"));
$db=new PDO('mysql:host=localhost;dbname=*********', *******',
'*******');
$db->prepare('INSERT INTO hits (id,ip,page,timestamp) VALUES (?,?,?,?)')->execute(array($_GET['id'],$_SERVER['REMOTE_ADDR'],
$_SERVER['HTTP_REFERER'],time()));
?>

Mi serve un ulteriore parametro ovvero "Orderid". Ho aggiunto un campo alla tabella Hits -orderid- appunto (campo testo). Come faccio ad inserire in questo script la riga di codice che riempe il campo "orderid"?

Grazie
 
Ultima modifica di un moderatore:
ciao
nel complesso mi sembra giusto

PHP:
<?php
header("content-type: image/png");
echo gzinflate(base64_decode("6wzwc+flkuJiYGDg9fRwCQLSj CDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOS xMDB+E7cIBcl7uvq5rHNKaAIA"));
$db=new PDO('mysql:host=****;dbname=**', '****','***!');
//usi un $_GET['id'] nella query, da dove salta fuori?
//se l'id è la primarykey autoincrement puoi fare a mano di metterlo
$orderid = (isset($_GET['orderid']) ? $_GET['orderid'] : null);
$level = (isset($_GET['level']) ? $_GET['level'] : null);

$db->prepare('INSERT INTO hits (id,ip,page,timestamp,orderid,level) VALUES (?,?,?,?,?,?)')->execute(array($_GET['id'],$_SERVER['REMOTE_ADDR'],
$_SERVER['HTTP_REFERER'],time(), $orderid, $level));
?>

non capisco cosa intendi per
HTML:
<img src="http://example/scripts/sale.php?AccountId=123456&OrderID=[[orderid]]&ProductID=98745&Level=[[level]]" width="1" height="1" >
se i valori delle querystringa sono quelli che ti devono risultare da una interrogazione della tabella
non mi sembra giusta
spezzetto
PHP:
<img src="http://example/scripts/sale.php?AccountId=123456&OrderID=<?php echo $OrdeId; ?>
&ProductID=98745
&Level=<?php echo $level;?>"
width="1" height="1" >

questo se non ho capito male il problema

poi una cosa vedo che usi
header("content-type: image/png");
generalmente si usa quando si salva il file immagine in un campo blob e vuoi visualizzare con
echo $file;
 
Praticamente non è un'interrogazione della tabella, ma quella querystringa

<img src="http://example/scripts/sale.php?AccountId=123456&OrderID=[[orderid]]&ProductID=98745&Level=[[level]]" width="1" height="1" >

serve solo a tracciare, quindi registrare nelle varie tabelle le variabili che generano le url.

Questo codice (<img src="http://example/scripts/sale.php?AccountId=123456&OrderID=[[orderid]]&ProductID=98745&Level=[[level]]" width="1" height="1" >) sarà inserito in una pagina di vendita/iscrizioni, e quei parametri (orderid="") e (level="level") saranno generati automaticamente e questo script li devi registrare nelle tabelle. Non sicuro che lo script sia corretto...

Grazie
 
ciao
scusa è il caldo
PHP:
<?php
header("content-type: image/png");
echo gzinflate(base64_decode("6wzwc+flkuJiYGDg9fRwCQLSj CDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOS xMDB+E7cIBcl7uvq5rHNKaAIA"));
$db=new PDO('mysql:host=****;dbname=**', '****','***!');
//usi un $_GET['id'] nella query, da dove salta fuori?
//se l'id è la primarykey autoincrement puoi fare a mano di metterlo
$orderid = (isset($_GET['orderid']) ? $_GET['orderid'] : null);
$level = (isset($_GET['level']) ? $_GET['level'] : null);
$str=$db->prepare('INSERT INTO hits (id,ip,page,timestamp,orderid,level) VALUES (?,?,?,?,?,?)');
$str->execute(array($_GET['id'],'$_SERVER['REMOTE_ADDR']', '$_SERVER['HTTP_REFERER']',time(), $orderid, $level));
?>
e gli apici agli elementi dell'array che non sono interi
 
ciao
scusa è il caldo
PHP:
<?php
header("content-type: image/png");
echo gzinflate(base64_decode("6wzwc+flkuJiYGDg9fRwCQLSj CDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOS xMDB+E7cIBcl7uvq5rHNKaAIA"));
$db=new PDO('mysql:host=****;dbname=**', '****','***!');
//usi un $_GET['id'] nella query, da dove salta fuori?
//se l'id è la primarykey autoincrement puoi fare a mano di metterlo
$orderid = (isset($_GET['orderid']) ? $_GET['orderid'] : null);
$level = (isset($_GET['level']) ? $_GET['level'] : null);
$str=$db->prepare('INSERT INTO hits (id,ip,page,timestamp,orderid,level) VALUES (?,?,?,?,?,?)');
$str->execute(array($_GET['id'],'$_SERVER['REMOTE_ADDR']', '$_SERVER['HTTP_REFERER']',time(), $orderid, $level));
?>
e gli apici agli elementi dell'array che non sono interi

Ciao c'è qualcosa che non va nel codice dello script, non salva nulla nel db. Quello di prima invece salvava ma non ero sicuro che mi salvasse anche "orderid e level" che sono due campi che ho aggiunto io.

grazie
 
Ho controllato mi dice questo :


Parse error: syntax error, unexpected T_STRING, expecting ')' on line 10

la linea 10 è questa :

$str->execute(array('$_GET['id'],'$_SERVER['REMOTE_ADDR']', '$_SERVER['HTTP_REFERER']',time(), $orderid, $level));

Non conoscendo il php non capisco l'errore...

grazie mille
 
ciao
verifica che non sia questo
$str->execute(array('$_GET['id'],'$_SERVER['REMOTE_ADDR']', '$_SERVER['HTTP_REFERER']',time(), $orderid, $level));
togli quell'apice se l'id è un intero, se è una stringa chiudilo
 
Grazie mille ancora per l'aiuto, ho fatto così :

PHP:
<?php
header("content-type: image/png");
echo gzinflate(base64_decode("6wzwc+flkuJiYGDg9fRwCQLSj CDMwQQkJ5QH3wNSbCVBfsEMYJC3jH0ikOLxdHEMqZiTnJCQAOS xMDB+E7cIBcl7uvq5rHNKaAIA"));
$db=new PDO('mysql:host=****;dbname=****6', '*****','*****');
$orderid = (isset($_GET['orderid']) ? $_GET['orderid'] : null);
$level = (isset($_GET['level']) ? $_GET['level'] : null);
$str=$db->prepare('INSERT INTO hits (id,ip,page,timestamp,orderid,level) VALUES (?,?,?,?,?,?)');
$str->execute(array($_GET['id'],$_SERVER['REMOTE_ADDR'],
$_SERVER['HTTP_REFERER'],time(), $orderid, $level));
?>

Ho provato ad eseguire la pagina track3.php (che contiene lo script) ed effettivamente si vede un'immagine di 1px x 1px . Controllandolo su codepad. org mi dice :

Fatal error: Call to undefined function gzinflate() on line 2

Però credo che quello non sia un errore, non è una personalizzazione l'ho preso direttamente da quella guida che ho postato su. Poi se fosse un "Fatal Error" non avrei dovuto visualizzare l'immagine giusto?

Grazie ancora per l'aiuto
 
Ultima modifica di un moderatore:
Ciao, credo che quella funzioni si colleghi all'htaccess della guida che ho postato prima, forse per questo non va provando su codepad . Commentando la riga mi esce un altro errore:

Fatal error: Class 'PDO' not found on line 3


Però non può essere...il collegamento al db funziona perfettamente. Forse sbaglio io a provarlo su codepad (oscurando i dati di connessione) quindi dà errore.

Diciamo che lo script funziona correttamente, l'unica cosa che mi manca è la certezza che tracci anche le variabili orderid e level ...come posso testare questo? Perchè finora traccia sia l'ip e sia la pagina (referer) oltre al timestamp che registra correttamente.

Grazie ancora
 
Ciao,
Si da lì ho verificato che registra l'ip e il resto. Non avendo l'url (non so come fare), non riesco a registrare orderid e level. Ho provato a fare così l'url : "www.miodominio.it/orderid=500&level=100" ma non registra le variabili (orderid & level). Forse l'ho composto male?
 
ciao
non so esattamente, ma per inviare una querystringa intanto devi sapere dove inviarla e deve iniziare con ?
www . miodominio . it/nome_pagina.php?orderid=500&level=100
in questo modo nella pagina nome_pagina.php puoi ricevere i valori con $_GET['orderid'] e $_GET['level']

mi spieghi cosa vuoi fare? se non ho capito male vuoi tracciare i visitatori del tuo sito, se è così allora perche non usi google analitycs
che ti risparmi un sacco di problemi, è più sicuro e ti da moltissime informazioni?
 
Ciao,
per me uso analytics. Questo script serve alla società per cui lavoro che invia le dem. Il cliente o almeno alcuni non ci fanno usare analytics e ci hanno chiesto di creare questo pixel di tracciamento, ecco perchè lo sto creando :) . Grazie mille per l'aiuto:fonzie:
 

Discussioni simili