Visualizzare da una classe esistente ogni profilo utente

Marco Bonanno

Utente Attivo
3 Lug 2012
32
0
6
Ciao, vengo subito al dunque, con il normale concetto PHP riuscivo tranquillamente a far visualizzare il profilo di ogni utente nella sua propria pagina, ad esempio profile.php?id=1, questo tramite l'utilizzo di _GET ecc ecc.

Ora mi sto affacciando ad OOP/PDO per ovvie ragioni, sto infatti sfruttando l'esistenza di un piccolo script per la gestione del login/registrazione e account per modificare i dettagli. Sono presenti moltissime classi, tra cui quella User.php che vi mostro:

Codice:
class User {

	private $_db, $_data, $_sessionName, $_cookieName, $_isLoggedIn;

	function __construct($user = null) {
		$this->_db = DB::getInstance();
		$this->_sessionName = Config::get('session/session_name');
		$this->_cookieName = Config::get('remember/cookie_name');

		if (!$user) {
			if (Session::exists($this->_sessionName)) {
				$user = Session::get($this->_sessionName);
				if ($this->find($user)) {
					$this->_isLoggedIn = true;
				} else {
					//logout
				}
				
			}
		} else {
			$this->find($user);
		}
		
	}
  
	public function find($user = null)	{
		if ($user) {
			$field = (is_numeric($user)) ? 'id' : 'username' ;	
			$data = $this->_db->get('users', array($field, '=', $user));
			if ($data->count()) {
				$this->_data = $data->first();
				return true;
			}
		}
		return false;
	}
  
	public function getuser($id)	{
		if ($id) {
			$field = (is_numeric($id)) ? 'id' : 'username' ;	
			$showuser = $this->_db->get('users', array($field, '=', $id));
			if ($data->count()) {
				$this->_showuser = $showuser->first();
				return true;
			}
		}
		return false;
	}
 
	public function create($fields = array()) {
		if (!$this->_db->insert('users', $fields)) {
			throw new Exception("Error Processing Request", 1);	
		}
	}

	public function login($username = null, $password = null, $remember = null)	{
		
		if (!$username && !$password && $this->exists()) {
				Session::put($this->_sessionName, $this->data()->id);
		} else {
			$user = $this->find($username);

			if ($user) {
				if ($this->data()->password === Hash::make($password, $this->data()->salt)) {
					Session::put($this->_sessionName, $this->data()->id);

					if ($remember) {
						$hash = Hash::unique();
						$hashCheck = $this->_db->get('users_sessions', array('user_id', '=', $this->data()->id));
						if (!$hashCheck->count()) {
							$this->_db->insert('users_sessions', array(
								'user_id' => $this->data()->id,
								'hash' => $hash));
						} else {
							$hash = $hashCheck->first()->hash;
						}
							
						Cookie::put($this->_cookieName, $hash, Config::get('remember/cookie_expiry'));
					}
					return true;
				}
			}
		}
	return false;
	}

	public function update($fields = array(), $id = null) {
		if (!$id && $this->isLoggedIn()) {
			$id = $this->data()->id;
		}

		if (!$this->_db->update('users', $id, $fields)) {
			Session::flash('uperr', 'We experienced an error while updating your profile');
			Redirect::to('profile.php');
			exit();
		}
	}

	public function hasPermission($key) {
		$group = $this->_db->get('groups', array('id', '=', $this->data()->user_group));
		
		if ($group->count()) {
			$permissions = json_decode($group->first()->permissions, true);

			if ($permissions[$key]) {
				return true;		
			}
		}

		return false;
	}
	public function logout() {
		$this->_db->delete('users_sessions', array('user_id', '=', $this->data()->id));
		Session::delete($this->_sessionName);
		Cookie::delete($this->_cookieName);
	}
	
	public function data()	{
		return $this->_data;
	}
  
  	public function showuser()	{
		return $this->_showuser;
	}

	public function isLoggedIn()
	{
		return $this->_isLoggedIn;
	}

	public function exists() {
		return (!empty($this->_data)) ? true : false ;
	}
 
}

Bene, siccome chiaramente vorrei evitare le vecchie sintassi php, ma attenermi a queste classi, non sto riuscendo a venirne a capo su come mostrare i dettagli di un determinato utente in una pagina e come mostrare la lista di tutti gli utenti (esempio). Che tipo di funzione devo scrivere? Non so proprio come muovermi, percio se mi fareste un esempio ne sarei grato, ed inoltre come devo richiamare in una ipotetica pagina showuser.php?

Grazie mille per il vostro tempo,
Marco
 

Marco Bonanno

Utente Attivo
3 Lug 2012
32
0
6
Ho risolto cosi per mostra il profilo di ogni utente:

Codice:
if(!$username = Input::get('user')) {
    Redirect::to('index.php');
} else {
    $user = new User($username);

    if(!$user->exists()) {
        Redirect::to(404);
    } else {
        $data = $user->data();

Se non chiedo troppo, mi potreste aiutare su come creare la listata dei membri in una ipotetica pagina member.php?
Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
K Visualizzare del html responsive in una Webview Sviluppo app per Android 0
W visualizzare solo file html e sottocartelle di una cartella PHP 1
B visualizzare una sola riga Database 3
L [PHP] Visualizzare se una pagina è pingata PHP 1
D [WordPress] come fare per estrarre dati da un db MySQL tramite una form e visualizzare il risultato WordPress 0
felino [Javascript] [jQuery] Slick Carousel: visualizzare una porzione dell'immagine successiva Javascript 0
ecosito [WordPress] Visualizzare una mappa con i pin dei post tramite GPS? WordPress 4
Devil-94 visualizzare alert con una sequenza di tasti Javascript 6
P Problema: visualizzare a schermo una nuova pagina durante l'attesa di caricamento PHP 1
gaia visualizzare una opzione di un campo mysql MySQL 18
E visualizzare automaticamente tutte le immagini di una cartella PHP 1
M Visualizzare record in una textarea è possibile? PHP 2
M visualizzare una immagine Javascript 6
A Visualizzare albero DOM completo oppure Visualizzare Nodi che fanno parte di una Selezione Javascript 6
M visualizzare una immagine dopo essere sarta cliccata PHP 0
A Visualizzare risultati ottenuti da una select multipla PHP 7
C Visualizzare i caratteri accentati e speciali in una textarea Javascript 16
S come faccioa visualizzare ogni singolo record all'interno di una tabella sul click di un elemento a? PHP 4
A Visualizzare i dati di una pagina PHP in HTMl HTML e CSS 13
L Visualizzare files in una cartella con titolo in base al file PHP 11
R Visualizzare i files di una Directory PHP 7
A modifica scpript per visualizzare una riga alla volta di una tabella Javascript 1
G visualizzare il contenuto di una cartella Flash 0
C Visualizzare un .Avi in una pagina usando Dreamweaver HTML e CSS 0
P visualizzare il contenuto di una cartella tramite mysql.... MySQL 2
max1850 Visualizzare un file pdf in una pagina asp Classic ASP 4
SolidSnake4 come visualizzare dati da una cartella PHP 1
A Visualizzare Risultati di una query in una tabella PHP 3
P Visualizzare solo una porzione di testo in un file txt PHP 3
M visualizzare una foto+musica HTML e CSS 1
E Access 2003 : Visualizzare una somma in una casella di testo MS Access 2
F Visualizzare un array in una tabella PHP 6
D Visualizzare il contenuto di una cartella Classic ASP 1
jan267 Visualizzare i file di una cartella PHP 1
jan267 Visualizzare tutti i files presenti in una directory Classic ASP 0
I visualizzare lista utenti registrati PHP 1
N php problemi a visualizzare video PHP 3
P come posso visualizzare l'nvr online IP Cam e Videosorveglianza 0
M Visualizzare ultima data registrata MS Access 2
G Numero zero null non deve visualizzare nulla PHP 0
D visualizzare solo foto filtrate jQuery 1
M Visualizzare nuove domande in base a risposta precedente PHP 0
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1
M visualizzare ip cam in windows IP Cam e Videosorveglianza 0
napuleone visualizzare il codice senza usare gli & HTML e CSS 1
Y Come caricare e visualizzare un'immagine PHP 0
M Visualizzare file PDF con link preso dal DB PHP 0
Alex_70 Visualizzare 2 bandiere PHP 6
Alex_70 Visualizzare anteprima foto in dropdown PHP 2
L Visualizzare tabella all'interno finestra modal PHP 4

Discussioni simili