Rilevamento Login Utente

Ciao a tutti

Ho creato per un sito un'area utenti dove può entrarci solo chi ha effettuato correttamente il login. Adesso però vorrei controllare chi effettivamente si logga in modo da abbinare questi dati con quelli memorizzati sul database. Ho provato anche a leggere l'articolo sulle sessioni ma non ho trovato niente che mi possa aiutare. Sapreste indicarmi lo script PHP che mi consenta di fare ciò che chiedo? e in quale parte dicodice va inserito? Grazie a chi mirisponderà :-)

Dragodeicieli

inviato 6 anni fa
Dragodeicieli
X 0 X

se scarichi un cms hai già un login professionale a tua disposizione...  O0

risposto 6 anni fa
larchitetto
X 0 X

Forse prima è il caso di definire meglio la struttura logica di funzionamento del tuo applicativo.

Utente fa il login, naviga nel sito, entra in area protetta, se entra salvo il suo nome in un file di log (o in un database?). E poi?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Forse prima è il caso di definire meglio la struttura logica di funzionamento del tuo applicativo.

Utente fa il login, naviga nel sito, entra in area protetta, se entra salvo il suo nome in un file di log (o in un database?). E poi?

praticamente dovrebbe funzionare in questo modo (dico dovrebbe perché ancora devo creare il dastabase sul server che ospiterà il sito): il titolare del sito deve prima fornirmi i dati dell'utente che io provvederò a registrare. Una volta effettuata la registrazione l'utente, inserendo user e pass, accede all'area riservata. A questo punto vorrei sapere come rilevare se l'utente che ha effettuato il login è lo stesso che ho registrato io.

risposto 6 anni fa
Dragodeicieli
X 0 X
A questo punto vorrei sapere come rilevare se l'utente che ha effettuato il login è lo stesso che ho registrato io.

Un utente non registrato può effettuare un login?

O intendi dire che siete in più persone a registrare utenti e volete fare una statistica di chi ha registrato chi ed ha effettuato il login?

risposto 6 anni fa
Mario Santagiuliana
X 0 X
A questo punto vorrei sapere come rilevare se l'utente che ha effettuato il login è lo stesso che ho registrato io.
Un utente non registrato può effettuare un login?

No, se non è registrato non può loggarsi

O intendi dire che siete in più persone a registrare utenti e volete fare una statistica di chi ha registrato chi ed ha effettuato il login?

Io registro gli utenti con i dati che mi fornisce il titolare del sito e vorrei fare una statistica di chi si è effettivamente loggato dopo la registrazione

risposto 6 anni fa
Dragodeicieli
modificato 6 anni fa
X 0 X

Ah, adesso è più chiaro.

Nello script php di verifica di autenticazione dell'utente inserisci una riga in cui va a salvare in un file di testo o nel database il nome di chi ha effettuato il login (puoi variare i dati come vuoi).

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ah, adesso è più chiaro.

Nello script php di verifica di autenticazione dell'utente inserisci una riga in cui va a salvare in un file di testo o nel database il nome di chi ha effettuato il login (puoi variare i dati come vuoi).

Lo script di verifica sarebbe la pagina del login, giusto? Potresti postarmi la riga per salvare i dati dell'utente sia come file di testo che database (lo chiedo perché poi vorrei chiedere al titolare del sito come intende procedere)? Grazie ancora :-)

risposto 6 anni fa
Dragodeicieli
X 0 X

Una riga così non è semplice da dare, non può essere integrata col tuo script senza averlo sott'occhio.

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Una riga così non è semplice da dare, non può essere integrata col tuo script senza averlo sott'occhio.

Ok, ti passo lo script di prova per la pagina di 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['textfield'])) {
  $loginUsername=$_POST['textfield'];
  $password=$_POST['textfield2'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "cast.php";
  $MM_redirectLoginFailed = "sito1.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_utenti, $utenti);
  
  $LoginRS__query=sprintf("SELECT username, password FROM utenti 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, $utenti) 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 );
  }
}
?>

Così va bene?

risposto 6 anni fa
Dragodeicieli
X 0 X

Prima di inviare un nuovo header all'utente che lo rimanda alla pagina di login fai il salvataggio dei dati.

Prima di questo:

    header("Location: " . $MM_redirectLoginSuccess );

Crei una tabella (es. log_login) nel tuo database con ad esempio un id, user_name (e i campi che ti interessano).

Fai dunque prima della riga sopracitata una cosa tipo:

   $query="INSERT INTO log_login VALUES user_name=$loginUsername";
   $result=mysql_query($query);

Altra soluzione potrebbe essere: aggiungere un campo alla tabella del tuo utente che indichi l'ultimo accesso effettuato.

Il tutto va in dipendenza a ciò che si vuole vedere (se vuoi vedere quante volte ha fatto un login ecc meglio creare una tabella a parte per le sessioni create).

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Invece per salvare in un file di testo qual'è la striscia?

risposto 6 anni fa
Dragodeicieli
X 0 X

Devi usare il comando fwrite, guarda bene gli esempi della documentazione ufficiale della funzione puoi fare una cosa tipo questa:

$filename = 'log.txt';
$login_utente = $loginUsername." ha effettuato un login.\n";

if (is_writable($filename)) {
    fopen($filename, 'a');
    fwrite($handle, $login_utente);
    fclose($handle);
}
risposto 6 anni fa
Mario Santagiuliana
X 0 X

Devi usare il comando fwrite, guarda bene gli esempi della documentazione ufficiale della funzione puoi fare una cosa tipo questa:

$filename = 'log.txt';
$login_utente = $loginUsername." ha effettuato un login.\n";

if (is_writable($filename)) {
    fopen($filename, 'a');
    fwrite($handle, $login_utente);
    fclose($handle);
}

E per questa deve essere creato uno script a parte?

risposto 6 anni fa
Dragodeicieli
X 0 X

No, invece delle due righe per la query inserisci questo script...non mi sembra così difficile...

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ho provato a salvare in un file di testo, dopo averlo creato, i dati di login ma non è successo nulla. Ho forse sbagliato qualcosa? Per sicurezza riposto il codice della pagina di login che contiene anche la striscia che mi hai indicato:

  <?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['textfield'])) {
  $loginUsername=$_POST['textfield'];
  $password=$_POST['textfield2'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "cast.php";
  $MM_redirectLoginFailed = "sito1.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_utenti, $utenti);
  
  $LoginRS__query=sprintf("SELECT username, password FROM utenti 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, $utenti) 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'];   
    }
$filename = 'log.txt';
$login_utente = $loginUsername." ha effettuato un login.\n";

if (is_writable($filename)) {
    fopen($filename, 'a');
    fwrite($handle, $login_utente);
    fclose($handle);
}
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?> 
risposto 6 anni fa
Dragodeicieli
X 0 X
i dati di login ma non è successo nulla

Impossibile.

1) la cartella ha i permessi di scrittura?

2) hai controllato l'esistenza del file?

3) leggi i log di apache per ritrovare i tuoi errori se non hai impostato la visualizzazione di questi ultimi nel browser.

Ciao

risposto 6 anni fa
Mario Santagiuliana
X 0 X

1 e 2) Ho creato io stesso il file log.txt e l'ho salvato nella stessa cartella di Apache. Come posso assegnarle i permessi di scrittura?

risposto 6 anni fa
Dragodeicieli
X 0 X

log.txt deve trovarsi nella stessa directory dello script php.

Per i permessi: dipende dal S.O. che usi come server.

Senza offesa ma qui si sta rasentando l'incredibile...non si può chiedere su come fare qualsiasi singolo e minimo passaggio...anche riguardanti operazioni normali in una gestione web.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

log.txt deve trovarsi nella stessa directory dello script php.

Per i permessi: dipende dal S.O. che usi come server.

Senza offesa ma qui si sta rasentando l'incredibile...non si può chiedere su come fare qualsiasi singolo e minimo passaggio...anche riguardanti operazioni normali in una gestione web.

Infatti sia log.txt, sia lo script sono nella stessa directory. Ho persino tolto le proprietà di sola lettura della cartella ma non è successo niente. Come sistema operativo uso Windows XP Professional. Infine, se chiedo queste cose é perché faccio queste cose per la prima volta :-)

risposto 6 anni fa
Dragodeicieli
X 0 X

Una ricerca in rete su queste cose basilari ti da un aiutino ;)

Ora dagli i permessi sia di lettura che di scrittura (non chiedermi come: non lo so, non uso windows).

Guarda i log di apache e cerca un po' di informazioni la sul perchè non funziona.

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda