[RISOLTO]Profilo pubblico in php

Nickname

Utente Attivo
18 Set 2013
122
0
0
Salve a tutti, premetto che non sono nuovo del forum ma ho semplicemente fatto un nuovo account e che ho già cercato sulla rete la soluzione al mio problema ma non ho trovato niente che mi sia stato di aiuto.
Ma soprattutto premetto che sono una capra in Php xD

Nonostante questo sono riuscito a creare un sito web con un form di registrazione e uno per il login,
Sono anche riuscito a fare in modo che ogni utente abbia un proprio profilo, creando la pagina account.php e riprendendo i dati dell'utente dal database.
Ora però vorrei fare in modo che il profilo di (ad esempio) Luca, sia visibile a tutti e non solo a Luca.
Perché io ho fatto in modo che ad un utente loggato compaia un tasto con scritto Profilo, e quindi poi può andare a vedere tutti i suoi dati.
Come posso fare però in modo che questi dati siano visibili da tutti ?

e.. prima riuscite a rispondermi e meglio è; è una cosa abbastanza urgente xD ma ovviamente non pretendo certo una risposta ed una soluzione immediata al mio problema ;)
Grazie mille a tutti :)
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
Non capisco dove sia il problema. Se l'utente vuole che gli altri vedano il suo profilo dovrà pubblicizzare il link al profilo, no?
Mh no forse non mi sono spiegato bene, praticamente vorrei fare una sorta di facebook se vogliamo, e che ogni utente registrato abbia un proprio profilo, e questo sono riuscito a farlo, però gli utenti possono vedere solo il profilo personale e non possono vedere quello degli altri.

Esempio:
Nel mio sito ci sono 2 account, Luca e pippo
Se faccio il login con luca, vado sulla pagina account.php e vedo i miei dati personali come nome cognome ecc. e fin qui tutto ok
Però poi vado su una pagina dove c'è una lista di tutti gli utenti del sito, e quindi c'è anche pippo, il link della pagina di pippo dovrà essere ad esempio account.php/pippo
Ed è questo che non so come fare, cioè non voglio andare a creare personalmente ogni pagina di ogni utente, voglio che, ad esempio, se pippo nella tabella degli utenti ha come id 1, il php fa una sorta di questo: account.php?id=1 e che quindi stampi a video tutti i dati di pippo.

Su facebook ad esempio se uno scrive ....com/profile.php?id=100 uscirà fuori il profilo che ha come id 100, e poi questo ....com/profile.php?id=100 verrà sostituito ad esempio con ....com/profile.php/Giovanni, ora non mi interessa tanto questa sostituzione ma mi interessa che tutti riescano a vedere i profili di tutti.

È difficile da spiegare spero di essere stato chiaro :p
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
secondo me ti conviene dividere il problema in più parti (prendiamo sempre luca e pippo) schematizzo
1) visualizzazione del profilo
2) modifica profilo o elimina account
per entrambe è evidente che l'utente deve essere loggato, quindi nella pag di log potresti mettere le sessioni
$_SESSION['utente']="password_pippo"

nella pagina elenco dei profili e nella visualizza profilo
PHP:
<?php
session_start();
//verifichi che l'utente sia loggato
if(!isset($_SESSION['utente'])){
	//non loggato
	header("location:index.pxp");
	exit();
}
//loggato ok mostri il profilo
$id=$_GET['id'];//se usi il get ATTENTO a fare verifiche, il get è pericoloso
//ecc.......
?>
evidente che tale pagina possono vederla luca e pippo purche loggati
se togli la parte dell'if !isset, la pagina possono vederla tutti

nella pagina di modifica profilo o elimina account
qui è evidente che il profilo di luca può essere modificato SOLO da luca
PHP:
<?php
session_start();
//verifichi che l'utente sia loggato
if(!isset($_SESSION['utente'])){
	//non loggato
	header("location:index.pxp");
	exit();
}else{
	//l'utente è loggato, potresti verificare nuovamente la sua password
	//soprattutto se ci sono dati sensibili o eliminazione dell'account
	//fai la query di select
	$query="SELECT * FROM profili WHERE password='".$_SESSION['utente']."'";
	//e quindi puoi es creare un form di modifica
	//con i dati di luca se la pass è di luca, o con i dati di pippo se la pass è di pippo
	//quindi luca vede e può modificare solo i suoi dati, analogamente pippo
	//..ecc....
}
?>
spero di essere stato chiaro
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
ciao
secondo me ti conviene dividere il problema in più parti (prendiamo sempre luca e pippo) schematizzo
1) visualizzazione del profilo
2) modifica profilo o elimina account
per entrambe è evidente che l'utente deve essere loggato, quindi nella pag di log potresti mettere le sessioni
$_SESSION['utente']="password_pippo"

nella pagina elenco dei profili e nella visualizza profilo
PHP:
<?php
session_start();
//verifichi che l'utente sia loggato
if(!isset($_SESSION['utente'])){
	//non loggato
	header("location:index.pxp");
	exit();
}
//loggato ok mostri il profilo
$id=$_GET['id'];//se usi il get ATTENTO a fare verifiche, il get è pericoloso
//ecc.......
?>
evidente che tale pagina possono vederla luca e pippo purche loggati
se togli la parte dell'if !isset, la pagina possono vederla tutti

nella pagina di modifica profilo o elimina account
qui è evidente che il profilo di luca può essere modificato SOLO da luca
PHP:
<?php
session_start();
//verifichi che l'utente sia loggato
if(!isset($_SESSION['utente'])){
	//non loggato
	header("location:index.pxp");
	exit();
}else{
	//l'utente è loggato, potresti verificare nuovamente la sua password
	//soprattutto se ci sono dati sensibili o eliminazione dell'account
	//fai la query di select
	$query="SELECT * FROM profili WHERE password='".$_SESSION['utente']."'";
	//e quindi puoi es creare un form di modifica
	//con i dati di luca se la pass è di luca, o con i dati di pippo se la pass è di pippo
	//quindi luca vede e può modificare solo i suoi dati, analogamente pippo
	//..ecc....
}
?>
spero di essere stato chiaro
Grazie mille per aver risposto :)
Si sei stato abbastanza chiaro però non mi funziona, sicuramente sbaglio qualcosa, perché di php ci capisco poco xD
Ti posto il codice della pagina account.php

PHP:
<?php if(isset($_SESSION['utente']))
{					
echo "<span style='font-family: Rosario; font-weight: bold; color: #06F; font-size: 17px;'>Ciao <span class='utente'>".$_SESSION['utente']."</span></span> | <a href='account.php?azione=logout' class='logout'><span style='font-family: Rosario; '>Esci</span></a>";

} else {
					
echo "<a href='account.php?azione=login' class='login'><div id='scrittalogin'>Accedi</div></a>";
}
 ?>

<?php
		
$p = $_GET['azione'];

if($p == "login"){
if(!isset($_POST['invia'])){ ?>
<br />
<form method="post" action="#" id="formlogin">
					
<label for="username">Nome Utente</label><br />
<input type="text" name="username" id="username" /><br><br>
<label for="password">Password</label><br />
<input type="password" name="password" id="password" /><br /><br>
<input type="submit" name="invia" id="buttonlogin" value="Entra" />

</form>

		
<?php
} else {
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);

  
					
if($username == "" || $password == ""){
					
echo "<br><span style='color: #F00;'>Attenzione, devi inserire sia il Nome utente che la Password.</span>";
					
} else {
					
					
$recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password'");
						
$verificadati = mysql_num_rows($recuperadati);
						
if($verificadati == 1){
						
$sessione = mysql_fetch_array($recuperadati);
$_SESSION['utente'] = $sessione['username'];
$_SESSION['email'] = $sessione['email'];

echo "<br><b>Login effettuato con successo.</b>";
header("Refresh: 2; URL= account.php");

} else {
						
echo "<br><span style='color: #F00;'>Utente o password sbagliati.</span>";
						
}
}
}

} elseif ($p == "logout"){
			
session_destroy();
echo "<br>Logout effettuato con successo!";
header("Refresh: 2; URL= account.php");
}
?>


<br><br><br>

<?php if(isset($_SESSION['utente']))
{					
echo "<a href='account.php'><div id='profilo'>Profilo Utente</div></a>";
}
?>
Ti prego aiutami sono disperato :( ,devo assolutamente risolvere questa cosa
 

Nickname

Utente Attivo
18 Set 2013
122
0
0
Aaaaaaallora, ho risolto in questo modo, questa è la pagina index.php

PHP:
<html>
<head>

<title>Ricerca:</title>
</head>
<body>
<h2>Cerca Utente:</h2></br></br>

<form action="profile.php" method="GET">
<table>
<tr><td>Username:</td>
<td><input type="text" id="username" name="username"></td></tr>
<tr><td><input type="submit" id="submit" name="submit" value="Guarda profilo!"></td></tr>

</table>
</form>
</body>
</html>
E questa è la pagina profile.php

PHP:
<html><head>
<title>Profilo</title>
</head>
<body>
<?php
if (isset($_GET['submit'])){
	$username = $_GET['username'];
	mysql_connect("localhost","root","") or die ("Non posso connettermi al Server.");
	mysql_select_db("my_provasitofabrizio") or die ("Database non trovato.");
	$userquery = mysql_query("SELECT * FROM users WHERE username='$username'") or die ("La Query non è stata completata, riprova.");
	if (mysql_num_rows($userquery) != 1){
		die ("L'utente non esiste!");
	}
	while($row = mysql_fetch_array($userquery, MYSQL_ASSOC)){
		$firstname = $row['firstname'];
		$lastname = $row['lastname'];
		$email = $row['email'];
		$dbusername = $row['username'];
		$activated = $row['activated'];
		$access = $row['access'];	
	}
	if($username != $dbusername){
		die ("Ricordati di scrivere bene le maiuscole e le minuscole dell'utente che intendi cercare!");
	}
		
	if ($activated == 0){
		$active = "Questo account non è attivo.";
	} else {
 		$active = "Questo account è attivo.";		
	}
	
	if($access == 0){
		$admin = "Questo utente non è un'amministratore.";
	} else {
		$admin = "Questo utente è un'amministratore.";
	}
	
?>

<h2>Profilo di <?php echo $firstname; ?> <?php echo $lastname; ?></h2><br />
<table>
<tr><td>Firstname: </td><td><?php echo $firstname; ?> </td></tr>
<tr><td>Lastname: </td><td><?php echo $lastname; ?> </td></tr>
<tr><td>Email: </td><td><?php echo $email; ?> </td></tr>
<tr><td>Username: </td><td><?php echo $dbusername; ?> </td></tr>
<tr><td>Activated: </td><td><?php echo $active; ?> </td></tr>
<tr><td>Access: </td><td><?php echo $admin; ?> </td></tr>
</table>


<?php
} else die ("Devi inserire un Username!");
?>
</body>
</html>

Praticamente uno scrive il nome di un utente e preme invio e così fa vedere il profilo di quella persona, ora però mi chiedo, come si può fare in modo che, invece di scrivere il nome ecc., si clicchi direttamente sul nome del profilo ?
Se ci sono (sicuramente) mi potreste indicare vari errori ? Grazie mille ancora :)