![]() |
|
Un programma di affiliazione in Asp: le basi del progetto
Introduzione http://www.nomeservizio.ext/iscriviti.asp?ref=PROPRIA_USERNAMEE' chiaro a questo punto che utilizzeremo una variabile di tipo QueryString per riconoscere i referenti. Nel caso in cui ci sia un referente verificheremo che sul database quest'ultimo esista o meno; a questo punto memorizziamo in una variabile di tipo Session la Username del referente e la memorizzeremo (previo controllo) nella casella di testo nascosta. Traduciamo tutto questo in codice:
<%@LANGUAGE = JScript%>
<%
// Recupero la Username del referente
var ref = new String(Request.QueryString("ref"));
var r_ref = ref.replace(/'/g,"''");
// Se c'è un referente...
if (ref != "undefined")
{
// ...apro la connessione verso il database.
var Cn = new ActiveXObject("ADODB.Connection");
Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb"));
// Verifico che il referente esista e...
var VerificaReferrer = Cn.Execute("SELECT username FROM affiliati WHERE username = '" + r_ref + "'");
if (!VerificaReferrer.EOF)
{
// ...se esiste creo la variabile di Sessione a suo nome
Session("ref") = ref;
}
else
{
// ...oppure non creo nessuna Sessione.
Session("ref") = null;
}
// Chiudo la connessione.
Cn.Close();
}
// Al fine di assegnare un value alla casella di testo nascosta
// creo una funzione dedicata che verifica che:
function ReferrerNull()
{
if (Session("ref") == null)
{
// se la sessione è nulla stamperà una stringa vuota
Response.Write("");
}
else
{
// oppure la Username del referente.
Response.Write(ref);
}
}
%>
<html>
<head>
<title>Iscriviti al nostro servizio</title>
</head>
<body>
<form method="POST" action="elabora.asp">
<input type="hidden" name="ref" value="<%ReferrerNull()%>">
<!--
Inserire qui tutti gli altri campi del modulo di registrazine,
ad esempio nome, cognome, email e quant'altro si ritenga necessario
al fine di registrare un nuovo utente al proprio servizio.
-->
</form>
</body>
</html>
Il codice appena proposto è semplice e abbondantemente commentato.Ho supposto che la pagina di registrazione del nuovo utente si chiami elabora.asp; se cosi non fosse, è necessario intervenire in questo punto <form method="POST" action="elabora.asp">per effettuare la modifica. Nella casella di testo nascosta faccio riferimento alla funzione ReferrerNull() per verificare la presenza di un referente <input type="hidden" name="ref" value="<%ReferrerNull()%>">ma è possibile (solo in JScript) utilizzare l'operatore condizionale ternario ? : e by-passare questa funzione: value="<%Session("ref") == null ? Response.Write("") : Response.Write(ref)%>"
Questo è quanto.Pro e contro di questo specifico sistema di intercettazione dei referenti Questo specifico sistema di intercettazione dei referenti, come ogni cosa, hai i suoi pro ed i suoi contro. Lasciare in chiaro nella QueryString la Username del referente è rischioso perchè una modifica manuale da parte dell'utente, ad esempio http://www.nomeservizio.ext/iscriviti.asp?ref=lukeonwebin http://www.nomeservizio.ext/iscriviti.asp?ref=lukeonwrenderebbe impossibile il riconoscimento del referente, il quale non maturerebbe crediti nei confronti dei gestori del servizio in questione, pur essendo effettivamente il referente. Per ovviare a questo problema è possibile creare una pagina a se stante che verifichi quanto visto in precedenza ed effettui un reindirizzamento alla pagina iscriviti.asp; vediamo come:
<%@LANGUAGE = JScript%>
<%
var ref = new String(Request.QueryString("ref"));
var r_ref = ref.replace(/'/g,"''");
if (ref != "undefined")
{
var Cn = new ActiveXObject("ADODB.Connection");
Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb"));
var VerificaReferrer = Cn.Execute("SELECT username FROM affiliati WHERE username = '" + r_ref + "'");
if (!VerificaReferrer.EOF)
{
Session("ref") = ref;
}
else
{
Session("ref") = null;
}
Cn.Close();
}
Response.Redirect("iscriviti.asp");
%>
Cosa cambia?Cambia il fatto che questo file diventerà, ad esempio, partners.asp ed il nuovo link da utilizzare sui siti Partner diventerà http://www.nomeservizio.ext/partners.asp?ref=PROPRIA_USERNAMEIl pro di un sistema come il precedente, invece, è che qualora la QueryString e la Session fossero gestite in tutte le pagine, il Partner è libero di puntare a qualsiasi pagina del servizio, non dimenticando di includere nel link la propria Username come referente. La pagina privata dei Partners Affiliati: gestione dei guadagni Anche in questo caso vale il concetto che presumo che il lettore abbia competenze di Asp ed Sql: mi limiterò quindi a definire, passo per passo, come creare una pagina di gestione dei guadagni per i Partners Affiliati. Ogni nuovo utente che si iscrive al servizio tramite tramite il referente lukeonweb, verrà memorizzato in un record il cui campo ref verrà valorizzato dalla Username del referente, in questo caso lukeonweb. Il file di gestione dei compensi potrebbe chiamarsi compensi.asp e deve essere protetto da password. Una volta effettuato il Login, l'Affiliato lukeonweb avrà generato una Sessione a suo nome, del tipo
<%@LANGUAGE = JScript%>
<%
if (Session("username") == null)
{
Response.Write("ACCESSO NEGATO!");
Response.End;
}
else
{
Session("username") = username;
}
%>
<html>
...
Nell'ipotesi in cui il Login è stato effettuato con successo, dovremo ampliare la condizione else con una semplice Query che conti il numero di record dalla tabella utenti dove il campo ref sia valorizzato con la Username lukeonweb.Ovviamente si dovrà trattare di una variabile, ed useremo la stessa variabile di Sessione: var Conta_Tuoi_Utenti = Cn.Execute("SELECT COUNT(*) AS id FROM utenti WHERE username = '" + Session("username") + "'");
A questo punto è possibile utilizzare questa Query per stampare a video il risultato:
<p align="center">
Ciao <%=Session("username")%>, ci hai portato <%=Conta_Tuoi_Utenti("id")%> iscritti!
</p>
A questo punto è sufficiente moltiplicare il numero di utenti referenziati * il valore economico di ogni singolo utente referenziato.Conclusioni Questo sistema, nel complesso, è relativamente affidabile: funziona alla perfezione, ma non utilizza determinati sistemi di sicurezza come i cookie o il rilevamento dell'indirizzo IP. In ogni caso, come da titolo, mi sono limitato ad esporre le basi del progetto in un'ottica abbastanza generale, non potendo trattare lo script in modo che si adatti alla perfezione con gli svariati codici che compongono tutte Applicazioni Web che potrebbero avvalersi di un sistema di Affiliazione. |
IN EVIDENZA
Una slidegallery con jQuery
Pagamenti online con PayPal e PHP
Breve guida a jQuery
Effetto ombra su testo con Photoshop
Guadagna col tuo sito grazie a TradeD...
Guida XHTML
Riscrivere le URL con Asp
Riavviare IIS
HTTP 500 internal server error
Generare password casuali in Javascri...
Errore 80004005: Cannot update. Datab...
Introduzione ad Ajax ed Asp con Jscri...
Referenze dei Tag Html
Stringhe di connessione via ODBC e Ol...
Referenze dei fogli di stile Css
Le espressioni regolari in Javascript
|
||||
© 2001/2010 lukeonweb.net - A cura di Luca Ruggiero, Partita IVA 05564851219 -
Privacy |
Pubblicità |
Contatti
| |||||