Gestire utenti/account in un sito web

andrex1191

Utente Attivo
5 Apr 2011
78
0
0
Salve a tutti,
Il mio problema riguarda la gestione degli utenti di un sito web.

Ho creato una pagina profilo.php che mostra le informazioni e statistiche (data ultima visita, commenti fatti, articoli scritti ecc) di un determinato account del mio sito, e fin qui' ci siamo (questa pagina fornisce i dati richiesti tramite delle estrazioni dal db)

Come faccio a far visualizzare le informazioni e statistiche di un certo account da un altro account?
Mettiamo che pippo voglia vedere le info dell'account di pluto..se va nella pagina profilo.php che ho scritto io visualizzerà le proprie informazioni e non quelle di pluto..

Come devo procedere?
(la mia è una domanda molto teorica, spero che sia chiara )

grazie per le risposte
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
22
Roma
alessandro1997.netsons.org
Una semplice riga di codice dovrebbe bastare:
PHP:
$utente = isset($_GET['utente']) ? trim($_GET['utente']) : $utente_attuale;
Ovviamente devi sostituire $utente_attuale con la variabile contenente l'identificativo dell'utente loggato. In questo modo, accedendo a profilo.php l'utente vedrà i suoi dati, accedendo a profilo.php?utente=pippo vedrà i dati dell'utente pippo (o potresti usare l'ID invece dello username, che è consigliato).

Ricordati di validare l'input dell'utente prima di eseguire operazioni sul database.
 

andrex1191

Utente Attivo
5 Apr 2011
78
0
0
Scusami ma non credo di aver capito benissimo quella riga di codice, e cosa devo metterci.
Questa è la pagina che ho scritto:
PHP:
<?php 
session_start();

if(!isset($_SESSION['username']) && !isset($_SESSION['password'])) // se non sei loggato
{
 echo"Devi prima effettuare il login..
      <meta HTTP-EQUIV='refresh' CONTENT='3; URL = index.php'>";

}
else

include "connect.php";

$profilo = mysql_query("SELECT * FROM utente WHERE username = '{$_SESSION['username']}'", $conn) or die("Errore nell'invio della query del profilo".mysql_error());
$arr = mysql_fetch_assoc($profilo);
?>
e quì c'è l'html che mostra i dati estratti all'utente.

La stringa che dici dove devo metterla? e in che modo?
grazie e scusa se non ho capito al volo
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
22
Roma
alessandro1997.netsons.org
Riscrivi in questo modo lo script:
PHP:
<?php
session_start();

if (!isset($_SESSION['username']) || !isset($_SESSION['password'])) {
    header('Refresh: 3; URL=index.php');
    die('Devi prima effettuare il login.');
}

require_once 'connect.php';

$utente = isset($_GET['utente']) ? trim($_GET['utente']) ? $_SESSION['username'];
$utente = addslashes($utente);

$profilo = mysql_query("SELECT * FROM utente WHERE username = '{$utente}'");

if (!$profilo) {
    die('Errore nell\'invio della query del profilo: ' . mysql_error());
}

if (mysql_num_rows($profilo) === 0) {
    die('L\'utente {$utente} non esiste.');
}

$arr = mysql_fetch_assoc($profilo);

// ...
?>
 

andrex1191

Utente Attivo
5 Apr 2011
78
0
0
funziona alla perfezione grazie :)

Solo una cosa, potresti perfavore spiegarmi accuratamente queste due linee di codice?
PHP:
$utente = isset($_GET['utente']) ? trim($_GET['utente']) : $_SESSION['username'];
$utente = addslashes($utente);
Grazie mille
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Le due righe che vuoi conoscere meglio (si possono ridurre come segue) sono:
1) operatore ternario
2) addslashes è una funzione sulle stringhe che aggiunge un "/" prima di ogni apice (') nella stringa alla quale è applicata.
PHP:
$utente = isset($_GET['utente']) ? addslashes(trim($_GET['utente'])) : $_SESSION['username'];
L'operatore ternario è la riduzione di una IF. La riga sopra si potrebbe scrivere anche in questo modo:
PHP:
if(isset($_GET['utente']))
   $utente = addslashes(trim($_GET['utente']));
else
   $utente = $_SESSION['username'];
Per conoscere qualcosa di più sull'operatore ternario di indico questo link.
 
Ultima modifica: