Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 02-01-07, 18:53   #1 (permalink)
Esperto
 
L'avatar di fre2004
 
Data di registrazione: Aug 2006
Messaggi: 281
Facciamo sul serio - gestire i miei utenti

Salve a tutti e buon anno.

Spero di non creare problemi con la mia domanda e che sia il posto giusto per postarla.

e da poco che sono del mondo php e cerco sempre di arrivare un po piu in la con il mio sito.

Quello che chiedo è se il mio raggionameto e poi applicabile in pratica:

Io ho un sito dove ho degli utenti si loggano ad un area riservata che elenca una serie di link.

Io voglio tacciare i movimenti degli utenti, cioe sapere su quali link l'utente pino clicca.

All'inizio della mia carriera di webmaster avrei creato una pagina personale per ogni utente e avrei monitorato ogni link con un contalink

Ma adesso, com quasi mille utenti, non e proprio il caso.

Quindi arriviamo al succo della domanda. per risolvere il problema ho pensato a questo:

1.Dopo il login, reindirizzo a una pagina tipo utenti.php?id=nomeutente



2.l'utente, dopo essersi loggato, accede all'area riservata che contiene una serie di link e su ogni link implemento il nome dell'utente ( non so come)

Cosi secondo me, sempre tramite una sorta di conta click dovrei riuscire a capire che l'utente XXX ha cliccato su quei link.

ora vi chiedo se questo ragionamento fila o è una ca...ta.

ciao a tutti e auguri.

-----------------
scusate ma non so perche il messaggio è stato postato 2 volte
__________________
--> Soluzioni professionali per il tuo Joomla! <--

Ultima modifica di fre2004 : 02-01-07 18:59.
fre2004 non in linea   Rispondi citando
Vecchio 02-01-07, 19:55   #2 (permalink)
User
 
Data di registrazione: May 2006
Messaggi: 31
Ciao fre2004, buon anno a te.
Io piu' che usare una variabile GET utilizzerei una SESSIONE.
Quando l'user esegue il login salvi sulla sessione un campo con il suo username,in modo tale che:

1. Controllando se la sessione esiste, puoi anche controllare che l'user abbia eseguito il login.
2. L'utente non puo' manomettere come nel caso delle variabile GET il tuo counter inserendo un nome di un altro username nell'indirizzo.

Poi al posto dell'indirizzo vero e propio potresti crearti un "get_link.php?id=ID" che:

1. Riporti nel tuo database il click dell'utente
2. Redirecti l'utente nel sito


Naturalmente questo metodo necessita di un database.
__________________
` www.voiceofthesoul.tk In tribute of Chuck Schuldiner

Ultima modifica di dea7h : 02-01-07 19:58.
dea7h non in linea   Rispondi citando
Vecchio 02-01-07, 20:20   #3 (permalink)
Esperto
 
L'avatar di fre2004
 
Data di registrazione: Aug 2006
Messaggi: 281
un esempio pratico, se non è troppo lungo?
__________________
--> Soluzioni professionali per il tuo Joomla! <--
fre2004 non in linea   Rispondi citando
Vecchio 02-01-07, 21:01   #4 (permalink)
User
 
Data di registrazione: May 2006
Messaggi: 31
Hmn... facciamo un esempio;

Partiamo dal principio.
Crei sul tuo database le tabelle che ci servirranno per farti il tuo piccolo sistema di contaclick.
Ci servono due tabelle.
Una `click` dove andiamo a inserire tutti i click effettuati dagli utenti, mentre nella seconda tabella chiamata `link` andiamo a inserire i link.

La struttura di click è questa:

- ID (Non credo debba aggiungere altro:P)
- Utente (contiene il nome dell'utente che effettua un click)
- Sito (Servirà a definire su quale link ha cliccato)
- Timestamp (Ho inserito anche questo campo nel caso tu voglia vedere in un determinato arco di tempo quante volte questo user ha cliccato su un link)

Codice:
SQL:

CREATE TABLE `click` (
`id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`utente` VARCHAR( 5 ) NOT NULL ,
`link` VARCHAR( 5 ) NOT NULL ,
`timestamp` INT( 20 ) UNSIGNED NOT NULL
) ENGINE = MYISAM ;
Mentre la struttura di link è la seguente:

- ID
- Link
(qui puoi aggiungerci anche altri campi come per esempio una descrizione al link o qualsiasi altra cosa vuoi)


Codice:
SQL:
CREATE TABLE `link` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`link` VARCHAR( 255 ) NOT NULL ,
UNIQUE (
`link`
)
) ENGINE = MYISAM ;
Create le tabelle in MYSQL bisogna creare la pagina che memorizza sul database i click e redirecta gli user a quell'indirizzo.
Percui crea la tua pagina go_url.php e ci inserisci

Codice:
   <?php
$config['host'] = 'localhost';
$config['user'] = '';
$config['pass'] = '';
$config['database'] = '';

 if(!$_SESSION['user'] ||  empty($_SESSION['user'])) {echo 'Devi prima seguire il login'; return 0;}
  if(!$_GET['id'] || !is_numeric($_GET['id'])) {echo 'L\'i deve essere numerico'; return 0;}
 
   $m_d =  mysql_connect($config['host'],$config['user'],$config['pass']);
   if(!$m_d) {  echo 'Connessione al database mysql non stabilita';return 0;} 
   
    mysql_select_db($config['database']);
    
    $r_h =  mysql_query('SELECT link FROM `link` WHERE id = '.$_GET['id']) or die('Query non valida');
    if(mysql_num_rows($r_h) === 1) { 
    $r = mysql_fetch_assoc($r_h);
    
    $q = 'INSERT INTO `click`(utente,link,timestamp) VALUES(\''.$_SESSION['user'].'\',\''.$_GET['id'].'\',UNIX_TIMESTAMP())';
    $r_h = mysql_query($q) or die('Query non valida');
    
    if(mysql_affected_rows() === 1) header('Location: '.$r['link']); // Qui puoi gestirti il redirect come vuoi se via  php o via JS 
    } else {
    echo 'Link inesistente o rimosso dall\'admin';
    }
    mysql_close();
?>

Bhè...alla fine non è piu' un esempio..è il code vero e propio;

P.S: Dò per scontato che sai eseguire query su MYSQL se cosi' fosse nn avrai difficoltà a farti il codice per stampare nella pagina i link 'http://tuodominioblabla/go_url.php?id=numero'; Il numero dovrai prendertelo con una semplice select nella tabella `link`.
__________________
` www.voiceofthesoul.tk In tribute of Chuck Schuldiner

Ultima modifica di dea7h : 02-01-07 21:05.
dea7h non in linea   Rispondi citando
Vecchio 02-01-07, 21:05   #5 (permalink)
Esperto
 
L'avatar di fre2004
 
Data di registrazione: Aug 2006
Messaggi: 281
ok. ora ci provo,

grazie mille.
__________________
--> Soluzioni professionali per il tuo Joomla! <--
fre2004 non in linea   Rispondi citando
Vecchio 02-01-07, 21:45   #6 (permalink)
Esperto
 
L'avatar di fre2004
 
Data di registrazione: Aug 2006
Messaggi: 281
ho fatto tutto e fatto una prova, mi dice che devo eseguireil login.

intuisco che è unproblema di sessioni.

io ho gia una pagina dove gli utenti si loggano. il problema è che uso dreamwaver per creare il codice.

dimmi se ci ho preso:

la sessione sulla pagina di login ha un nome che non combacia con quello del codice che mi hai dato, giusto?

quindi, devo cambiare qualcosa alla sessione?

allego il codice del form per il login:

<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['username'])) {
$loginUsername=$_POST['username'];
$password=$_POST['password'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "welcome.php";
$MM_redirectLoginFailed = "errore-login.html";
$MM_redirecttoReferrer = false;
mysql_select_db($database_gcv, $gcv);

$LoginRS__query=sprintf("SELECT username, password FROM user WHERE username='%s' AND password='%s'",
get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));

$LoginRS = mysql_query($LoginRS__query, $gcv) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";

//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>

Ultima modifica di fre2004 : 02-01-07 21:55.
fre2004 non in linea   Rispondi citando
Vecchio 03-01-07, 18:11   #7 (permalink)
User
 
Data di registrazione: May 2006
Messaggi: 31
Codice:
$_SESSION['MM_Username'] = $loginUsername;
Questo è il nome della sessione,percui cambia il nome del campo 'user' (della mia sessione) e mettici 'MM_Username';


Un altra,devi riprendere la vecchia sessione,questo puoi farlo inserendo dopo il <?php il comando session_start();
__________________
` www.voiceofthesoul.tk In tribute of Chuck Schuldiner
dea7h non in linea   Rispondi citando
Vecchio 03-01-07, 19:11   #8 (permalink)
Esperto
 
L'avatar di fre2004
 
Data di registrazione: Aug 2006
Messaggi: 281
ho risolto anche qui.

ancora grazie.
__________________
--> Soluzioni professionali per il tuo Joomla! <--
fre2004 non in linea   Rispondi citando
Vecchio 03-01-07, 22:07   #9 (permalink)
User Attivo
 
Data di registrazione: Dec 2004
Ubicazione: abito sulla luna e ogni volta che mi telefono è un'interrurbana
Messaggi: 2,413
se vuoi creare un sistema di gestione utenti efficace dai una sbirciata alle pillole in rilievo in questa sezione, è stata sviluppata una discussione su come fare il login in modo veramente figo.

__________________
bilancio familiare
Tymba non in linea   Rispondi citando
Vecchio 12-02-11, 18:26   #10 (permalink)
User Newbie
 
Data di registrazione: Feb 2011
Ubicazione: mestre
Messaggi: 4
Unhappy Aiuto!

Ciao a tutti,
spero che mi possiate trovare una soluzione, visto che è da due settimane che ci sto sbattendo la testa.


Ho seguito questa discussione, ho risolto il problema che ha riscontrato "fre2004" ma mi è comparso un altro:
if(!$_GET['id'] || !is_numeric($_GET['id'])) {echo 'L\'i deve essere numerico'; return 0;

Sulla browser continua a dirmi che "L'i deve essere numerico"

Non capisco il motivo, ho provato di tutto ma continuo a non capire..

Vi posto anche login.php..
---------------------------------------
<?php

include 'dbc.php';

$err = array();

foreach($_GET as $key => $value) {
$get[$key] = filter($value); //get variables are filtered.
}

if ($_POST['doLogin']=='Login')
{

foreach($_POST as $key => $value) {
$data[$key] = filter($value); // post variables are filtered
}


$user_email = $data['usr_email'];
$pass = $data['pwd'];


if (strpos($user_email,'@') === false) {
$user_cond = "user_name='$user_email'";
} else {
$user_cond = "user_email='$user_email'";

}


$result = mysql_query("SELECT `id`,`pwd`,`full_name`,`approved`,`user_level` FROM users WHERE
$user_cond
AND `banned` = '0'
") or die (mysql_error());
$num = mysql_num_rows($result);

// Match row found with more than 1 results - the user is authenticated.
if ( $num > 0 ) {

list($id,$pwd,$full_name,$approved,$user_level) = mysql_fetch_row($result);

if(!$approved) {
//$msg = urlencode("Account not activated. Please check your email for activation code");
$err[] = "Account not activated. Please check your email for activation code";

//header("Location: login.php?msg=$msg");
//exit();
}

//check against salt
if ($pwd === PwdHash($pass,substr($pwd,0,9))) {
if(empty($err)){

// this sets session and logs user in
session_start();
session_regenerate_id (true); //prevent against session fixation attacks.

// this sets variables in the session
$_SESSION['user_id']= $id;
$_SESSION['user_name'] = $full_name;
$_SESSION['user_level'] = $user_level;
$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);

//update the timestamp and key for cookie
$stamp = time();
$ckey = GenKey();
mysql_query("update users set `ctime`='$stamp', `ckey` = '$ckey' where id='$id'") or die(mysql_error());

//set a cookie

if(isset($_POST['remember'])){
setcookie("user_id", $_SESSION['user_id'], time()+60*60*24*COOKIE_TIME_OUT, "/");
setcookie("user_key", sha1($ckey), time()+60*60*24*COOKIE_TIME_OUT, "/");
setcookie("user_name",$_SESSION['user_name'], time()+60*60*24*COOKIE_TIME_OUT, "/");
}
header("Location: myaccount.php");
}
}
else
{
//$msg = urlencode("Invalid Login. Please try again with correct user email and password. ");
$err[] = "Invalid Login. Please try again with correct user email and password.";
//header("Location: login.php?msg=$msg");
}
} else {
$err[] = "Error - Invalid login. No such user exists";
}
}



?>


Vi prego, per un neofita come me essere arrivato fin qui con le proprie mani è stato un miracolo.
Spero di trovare una soluzione.
Grazie a tutti in anticipo!
Ciao!
smanio87 non in linea   Rispondi citando
Vecchio 13-02-11, 05:10   #11 (permalink)
User Newbie
 
Data di registrazione: Feb 2011
Ubicazione: mestre
Messaggi: 4
Sono di nuovo io
Qualcuno riuscirebbe a sistemarmelo?
Sono anche disposto ad offrire una ricompensa a chi riesce a sistemarlo, credo che sia il minimo per il vostro aiuto.A ciascuno il suo, insomma
Grazie ragazzi!
smanio87 non in linea   Rispondi citando
Rispondi
Tags: , , ,



Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 15:48.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.