• Home
  • Forum
  • Fare Web
  • PHP

Utenti online

  • Creatore Discussione Creatore Discussione valient13
  • Data di inizio Data di inizio 6 Apr 2012
Stato
Chiusa ad ulteriori risposte.

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
  • 6 Apr 2012
  • #1
funziona grazie, ultime cosa:
Come faccio a sapere chi è loggato perchè dovrei creare una chat tipo questa:
https://www.mrw.it/php/articoli/chat-stile-facebook-php-jquery_1223_2.html
ed ho bisogno di una colonna per vedere chi è loggato, vi riporto il codice modificato:


PHP:
<?php
# inclusione del file di configurazione
@include_once 'config.php';
# definizione della classe che conterrà i metodi per la gestione degli iscritti
class Iscrizioni {
  
  # definizione del costruttore
  public function __construct() 
  {
    # istanza della classe per la connessione al database
    $data = new DATA_Class();
  }

  # metodo per la registrazione 
  public function registra($nome_reale, $nome_utente, $password, $email) 
  {
    # cifratura della password
    $password = @sha1($password);
    # confronto degli input con i dati contenuti in tabella
	$query = @mysql_query("SELECT id_utente, livello FROM iscritti WHERE email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente' and password = '$password'") or die('Errore: ' . mysql_error());      # controllo sulla presenza di corrispondenze prodotte dal confronto
    $conta = @mysql_num_rows($query);
    # se il confronto non genera corrispondenze..
    if ($conta == 0) 
    {
      # ..si procede con la registrazione..
      $risultato = @mysql_query("INSERT INTO iscritti(nome_utente, password, nome_reale, email) VALUES ('$nome_utente', '$password','$nome_reale','$email')") or die('Errore: ' .mysql_error());
      return $risultato;
    }else{
      # ..altrimenti l'esito della registrazione sarà negativo
      return FALSE;
    }
  }

  # metodo per l'autenticazione
  public function verifica_login($email_o_nome_utente, $password) 
  {
    # cifratura della password
    $password = @sha1($password);
    # confronto degli input con i dati contenuti in tabella
	$query = @mysql_query("SELECT id_utente, livello FROM iscritti WHERE email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente' and password = '$password'") or die('Errore: ' . mysql_error());      $conta = @mysql_num_rows($query);
    $row = @mysql_fetch_assoc($query);
    # se il confronto genera una corrispondenza..
    if ($conta == 1) 
    {
      # ..viene generata la sessione di login..
           
      $risultato = @mysql_fetch_object($query);
      $_SESSION['login'] = true;
      $_SESSION['id_utente'] = $risultato->id_utente;	
      $_SESSION['livello'] = $row['livello']; 
      return TRUE;
    }else{
      # ..altrimenti l'esito dell'autenticazione sarà negativo
      return FALSE;
    }
  }

  # metodo per la visualizzazione del nome dell'utente loggato
  public function mostra_utente($id_utente) 
  {
    # estrazione del nome reale sulla base dell'identificatore memorizzato in sessione
    $query = @mysql_query("SELECT nome_reale FROM iscritti WHERE id_utente = $id_utente") or die('Errore: ' . mysql_error());
    $risultato = @mysql_fetch_object($query);
    # stampa a video del nome reale dell'utente
    echo $risultato->nome_reale;
  }

  # metodo per il controllo sulla sessione
  public function verifica_sessione() 
  {
    # il metodo restituisce l'informazione relativa alla sessione a patto che questa sia stata inizializzata
    if(isset($_SESSION['login']))
    {
      return $_SESSION['login'];
    }else{
      return FALSE;
    }
  }
  
  
  # metodo per il logout
  # la sessione viene distrutta a seguito di uno specifico input dell'utente
  public function esci() {
    $_SESSION['login'] = FALSE;
    @session_destroy();
    }
  }
?>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 6 Apr 2012
  • #2
Guarda questo tutorial: http://www.phpeasystep.com/phptu/9.html.

Invece di creare una nuova tabella, a te basta aggiungere due campi alla tabella utenti, logged_in e logged_time, e lavorare su quelli. Ovviamente nel tuo caso, per rimuovere gli utenti non connessi, la query sarà di tipo UPDATE e non DELETE.
 

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
  • 6 Apr 2012
  • #3
c'è un problema, quando provo ad inserire l'username giusto e la password sbagliata mi effettua lo stesso il login come mai, ho controllato il codice ma non trovo l'errore:

PHP:
<?php
# inclusione del file di configurazione
@include_once 'config.php';
# definizione della classe che conterrà i metodi per la gestione degli iscritti
class Iscrizioni {
  
  # definizione del costruttore
  public function __construct() 
  {
    # istanza della classe per la connessione al database
    $data = new DATA_Class();
  }

  # metodo per la registrazione 
  public function registra($nome_reale, $nome_utente, $password, $email) 
  {
    # cifratura della password
    $password = @sha1($password);
    # confronto degli input con i dati contenuti in tabella
    $query = @mysql_query("SELECT id_utente, livello FROM iscritti WHERE nome_utente = '$nome_utente' OR email = '$email'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di corrispondenze prodotte dal confronto
    $conta = @mysql_num_rows($query);
    # se il confronto non genera corrispondenze..
    if ($conta == 0) 
    {
      # ..si procede con la registrazione..
      $risultato = @mysql_query("INSERT INTO iscritti(nome_utente, password, nome_reale, email) VALUES ('$nome_utente', '$password','$nome_reale','$email')") or die('Errore: ' .mysql_error());
      return $risultato;
    }else{
      # ..altrimenti l'esito della registrazione sarà negativo
      return FALSE;
    }
  }

  # metodo per l'autenticazione
  public function verifica_login($email_o_nome_utente, $password) 
  {
    # cifratura della password
    $password = @sha1($password);
    # confronto degli input con i dati contenuti in tabella
    $query = @mysql_query("SELECT id_utente, livello FROM iscritti WHERE password = '$password' and email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di una corrispondenza prodotta dal confronto
    $conta = @mysql_num_rows($query);
    $row = @mysql_fetch_assoc($query);
    # se il confronto genera una corrispondenza..
    if ($conta == 1) 
    {
      # ..viene generata la sessione di login..
      $risultato = @mysql_fetch_object($query);
      $_SESSION['login'] = true;
      $_SESSION['id_utente'] = $risultato->id_utente;
      $_SESSION['livello'] = $row['livello'];
      return TRUE;
    }else{
      # ..altrimenti l'esito dell'autenticazione sarà negativo
      return FALSE;
    }
  }

  # metodo per la visualizzazione del nome dell'utente loggato
  public function mostra_utente($id_utente) 
  {
    # estrazione del nome reale sulla base dell'identificatore memorizzato in sessione
    $query = @mysql_query("SELECT nome_reale FROM iscritti WHERE id_utente = $id_utente") or die('Errore: ' . mysql_error());
    $risultato = @mysql_fetch_object($query);
    # stampa a video del nome reale dell'utente
    echo $risultato->nome_reale;
  }

  # metodo per il controllo sulla sessione
  public function verifica_sessione() 
  {
    # il metodo restituisce l'informazione relativa alla sessione a patto che questa sia stata inizializzata
    if(isset($_SESSION['login']))
    {
      return $_SESSION['login'];
    }else{
      return FALSE;
    }
  }
  
  # metodo per il logout
  # la sessione viene distrutta a seguito di uno specifico input dell'utente
  public function esci() {
    $_SESSION['login'] = FALSE;
    @session_destroy();
    }
  }
?>

functionslogin.php
PHP:
<?php
# inizializzazione della sessione
@session_start();
# inclusione del file di funzione
@include_once 'functions.php';
# istanza della classe
$obj = new Iscrizioni();
# chiamata al metodo per l'autenticazione
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
  $login = $obj->verifica_login(htmlentities($_POST['email_o_nome_utente'], ENT_QUOTES), htmlentities($_POST['password'], ENT_QUOTES));
  # controllo sull'esito del metodo
  if ($login) {
    # redirect in caso di esito positivo
    @header("location:index.php");
    }else{
    # notifica in caso di esito negativo
    @header("location:errore.php");
  }
}

# controllo sul valore di input per il logout
if (isset($_GET['val']) && ($_GET['val'] == 'fine_sessione')) 
{
  # chiamata al metodo per il logout
  $obj->esci();
  # redirezione alla pagina di login
  @header("location:index.php");
 }

?>

login.php
PHP:
<?php
# inizializzazione della sessione
@session_start();
# inclusione del file di funzione
@include_once 'functions.php';
# istanza della classe
$obj = new Iscrizioni();
# chiamata al metodo per la verifica della sessione
if (!$obj->verifica_sessione())
{
 echo" <!-- Login Starts Here -->
				<div id=\"loginContainer\">
                <a href=\"#\" id=\"loginButton\"><span>Login</span></a>
                <div style=\"clear:both\"></div>
                <div id=\"loginBox\">               
                    <form method=\"POST\" action=\"functionslogin.php\" id=\"loginForm\" name=\"autenticazione\">
                        <fieldset id=\"body\">
                            <fieldset>
                                <label for=\"email\">Email/Username</label>
                                <input name=\"email_o_nome_utente\" type=\"text\" value=\"username\" size=\"25\" onclick=\"this.value=''\"  id=\"email\" />
                            </fieldset>
                            <fieldset>
                                <label for=\"password\">Password</label>
                                <input name=\"password\" type=\"password\" value=\"password\" size=\"25\" onclick=\"this.value=''\" id=\"password\" />
                            </fieldset>
                            <input type=\"submit\" id=\"login\" value=\"Sign in\" />
                            
                        </fieldset>
          </form>
                </div>
            </div>
            <!-- Login Ends Here -->";

      			}
else {
  echo"<td id=\"button_formazione\"><a href=\"inviaformazione.php\" title=\"Invia Formazione\">Formazione</a></td>";
  
	if (isset($_SESSION['livello']) && $_SESSION['livello'] == 'A') {  
  		echo"<td id=\"button_admin\"><a href=\"admin/index.php\" title=\"admin\">Admin</a></td>";
	}
  echo"<td id=\"button_logout\"><a href=\"functionslogin.php?val=fine_sessione\" title=\"Logout\">Logout</a></div></td>";
}
?>
 
Ultima modifica: 6 Apr 2012

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 7 Apr 2012
  • #4
ciao
se parli della select seguente prova a mettere una parentesi dopo l'and racchiudendo l'or


PHP:
<?php
//...........
@mysql_query("SELECT id_utente, livello FROM iscritti WHERE password = '$password' and (email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente')") or die('Errore: ' . mysql_error());
//..........
?>
 

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
  • 7 Apr 2012
  • #5
funziona graziee
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 7 Apr 2012
  • #6
Toglimi una curiosità: dove hai preso quella classe?
 

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
  • 7 Apr 2012
  • #7
da questa guida:
https://www.mrw.it/php/articoli/php...gistrazione-autenticazione-utenti_1290_5.html

si deve sistemare..
 

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
  • 8 Apr 2012
  • #8
Sistema di messaggi

Intanto Buona Pasqua poi ho un altro problemino: allora ho creato un sistema di messaggi privati, solo che quando arriva il messaggio invece dell'id mi dovrebbe comparire il nome, cioè dovrei trasformare l'id in nome del mittente vi posto il codice:

inviamessaggio.php (form)
PHP:
<?php include("header.php");
# inizializzazione della sessione
@session_start();
# inclusione del file di funzione
# istanza della classe
$obj = new Iscrizioni();
# identificativo univoco dell'utente
$id_utente = $_SESSION['id_utente'];
# chiamata al metodo per la verifica della sessione
if (!$obj->verifica_sessione())
{
  #redirect in caso di sessione non verificata
  @header("location:errore2.php");
}
?>
  <!-- Content -->
  <div id="content">
  	<div id="conteiner">
  	<div align="center">
  	<h2>Messaggi</h2>
  	<form name="messaggi" method="POST" action="invia.php"> 
  	<p><b>ID <?php $obj->mostra_utente($id_utente); ?>:</b> <br />
  	<input value="<?php echo $id_utente; ?>" class="tb11" name="mittente" readonly>
  	<p><b>ID Destinatario:</b> <br />
  	<input type="TEXT" class="tb11" name="destinatario"><br>
	<p><b>Messaggio:</b> <br />
	<textarea name="messaggio" class="tb10" rows="6" cols="20"></textarea><br>
	<input name="data" type="hidden" id="data" value="<?php print (date ("d/m/Y - H:i")); ?>" />
	<br>
	<button name="invia">Invia</button>
	</form>
	</div>
  	</div>
    <?php include("sidebar.php"); ?>
  </div>
  
<?php include("footer.php"); ?>

invia.php
PHP:
<?php
include ("header.php");?>
 <!-- Content -->
  <div id="content">
  	<div id="conteiner">
  	<div align="center">
  	<h2>Messaggi</h2>
<?php

include ("connessione.php");
$destinatario=$_POST['destinatario'];
$mittente=$_POST['mittente'];
$messaggio=$_POST['messaggio'];
$data=$_POST['data'];
$connessione = mysql_connect($hostname_connessione,$username_connessione,$password_connessione);
$database_select=mysql_select_db($database_connessione,$connessione);
//ci colleghiamo al database
$query="Insert into `messaggi` (`mittente`,`destinatario`,`messaggio`,`data`) VALUES ('$mittente','$destinatario','$messaggio','$data')";
$result=mysql_query($query,$connessione);
	if($result==1)
	echo"<b><font color=green>Messaggio inviato con successo</font></b>";
	else
	echo"<b><font color=red>Messaggio non inviato</font></b>";

?>
	</div>
  	</div>
    <?php include("sidebar.php"); ?></div><?php include("footer.php"); ?>

ricevuti.php
PHP:
<?php
include ("header.php");
$id_utente = $_SESSION['id_utente'];
?>
 <!-- Content -->
  <div id="content">
  	<div id="conteiner">
  	<div align="center">
  	<h2>Messaggi</h2>
  	
<?php
include ("connessione.php");
    $destinatario=$id_utente;
    $query = "SELECT mittente,messaggio,data FROM messaggi WHERE destinatario='$destinatario' ORDER BY data DESC";
    $result = mysql_query( $query ) or die ("query errata");
        echo "<table style=\"border-collapse: collapse;\" width=\"100%\" border=\"1\"><tr><td style=\"text-align: center; font-weight: bold\" width=\"20%\">Mittente</td><td width=\"60%\" style=\"text-align: center; font-weight: bold\">Messaggio</td><td width=\"20%\" style=\"text-align: center; font-weight: bold\">Data</td></tr>";
        while ($row = mysql_fetch_row($result))
        {
            echo "<tr><td width=\"20%\" align=\"center\">".$row[0]."</td><td width=\"60%\">".$row[1]."</td><td width=\"20%\" align=\"center\" style=\"font-size: 13px;\">".$row[2]."</td></tr>";
        }
        echo "</table>";
  
    ?>
   	</div>
  	</div>
    <?php include("sidebar.php"); ?></div><?php include("footer.php"); ?>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
27
Roma
alessandro1997.netsons.org
  • 8 Apr 2012
  • #9
Apri una discussione per problema, altrimenti si crea confusione.
Chiudo.
 
Stato
Chiusa ad ulteriori risposte.

Discussioni simili

M
[PHP] Come gestire gli utenti online
  • Marcolino92
  • 28 Mag 2019
  • PHP
Risposte
9
Visite
2K
PHP 29 Mag 2019
macus_adi
[PHP] Scaricare solo utenti online o di un determinato tempo
  • trattorino
  • 27 Ott 2017
  • PHP
Risposte
4
Visite
1K
PHP 29 Ott 2017
trattorino
B
utenti online
  • bergamascabridge
  • 31 Ago 2015
  • Supporto Mr.Webmaster
Risposte
0
Visite
1K
Supporto Mr.Webmaster 31 Ago 2015
bergamascabridge
B
Soluzione al Problema Plug-in "Utenti OnLine nelle ultime 24 ore" in MyBB
  • Web Designer
  • 6 Apr 2012
  • CMS (Content Management System)
Risposte
0
Visite
2K
CMS (Content Management System) 6 Apr 2012
Web Designer
M
Conteggio utenti online, problema al minuto 00
  • miss
  • 25 Apr 2011
  • Classic ASP
Risposte
2
Visite
2K
Classic ASP 28 Mag 2011
miss
M
Utenti online
  • Sandokan
  • 19 Nov 2010
  • PHP
Risposte
8
Visite
2K
PHP 24 Nov 2010
RONI
R
C
Utenti online e Location.
  • Cappino
  • 18 Set 2009
  • Classic ASP
Risposte
6
Visite
2K
Classic ASP 22 Set 2009
Majinbu
M
K
Contatore utenti online
  • Kennet
  • 20 Set 2006
  • Supporto Mr.Webmaster
Risposte
1
Visite
2K
Supporto Mr.Webmaster 20 Set 2006
maxbossi
D
indicatore di utenti online
  • dirty_angel
  • 26 Apr 2006
  • Supporto Mr.Webmaster
Risposte
1
Visite
2K
Supporto Mr.Webmaster 27 Apr 2006
maxbossi
U
Utenti online
  • ultimo
  • 11 Mar 2006
  • Supporto Mr.Webmaster
Risposte
1
Visite
2K
Supporto Mr.Webmaster 12 Mar 2006
maxbossi
Parere di altri utenti
  • tekinside
  • 4 Dic 2023
  • Webdesign e Grafica
Risposte
1
Visite
5K
Webdesign e Grafica 24 Apr 2024
nicholasmancini
I
visualizzare lista utenti registrati
  • Imperor
  • 13 Nov 2023
  • PHP
Risposte
1
Visite
1K
PHP 15 Nov 2023
Imperor
I
Proteggere file caricati dall'esterno ma renderli accessibili per gli utenti loggati.
  • otto9due
  • 9 Feb 2022
  • PHP
Risposte
4
Visite
1K
PHP 29 Apr 2022
thanatos
T
L
Sessione e array per utenti
  • luigi777
  • 22 Apr 2021
  • PHP
Risposte
0
Visite
813
PHP 22 Apr 2021
luigi777
L
T
Modificare ruolo utenti in fase di registrazione
  • Tino85
  • 15 Lug 2020
  • E-Commerce
Risposte
0
Visite
2K
E-Commerce 15 Lug 2020
Tino85
T
C
Saluti a tutti gli utenti del Forum
  • Consulenze.instagram
  • 12 Mag 2020
  • Presentati al Forum
Risposte
0
Visite
777
Presentati al Forum 12 Mag 2020
Consulenze.instagram
C
M
Cerco profilo instagram (Utenti reali)
  • Mearoundh
  • 11 Dic 2019
  • Altri Annunci
Risposte
1
Visite
1K
Altri Annunci 3 Gen 2020
Francescotr
F
F
[PHP] Reindirizzare utenti alla propria area personale
  • Frozzen
  • 22 Nov 2019
  • PHP
Risposte
1
Visite
1K
PHP 23 Nov 2019
Frozzen
F
F
Posizionamento google 1# + nuovi utenti organici.
  • FilippoBusiness
  • 28 Feb 2019
  • Annunci servizi di Social Media Marketing
Risposte
0
Visite
1K
Annunci servizi di Social Media Marketing 28 Feb 2019
FilippoBusiness
F
B
Acquisto Gruppo facebook almeno 500 utenti iscritti
  • Bahammut
  • 25 Feb 2019
  • Annunci servizi di Social Media Marketing
Risposte
4
Visite
2K
Annunci servizi di Social Media Marketing 26 Feb 2019
turituri
T
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?