estrazione mysql in base al login

iperboreo

Utente Attivo
21 Giu 2012
126
0
16
Buona sera a tutti, sono nuovo e sono felice di far parte del forum di MRWEBMASTER.
Ho un problema e spero mi possiate aiutare:
Ho un sistema di registrazione e login in php e mysql, e vorrei estrarre i dati da una tabella in mysql, ma non tutti i dati,
solamente quelli relativi all'utente loggato al momento.
Vi ringrazio per l'aiuto, attendo fiducioso e grazie a tutti.

Iperboreo (max)
 
ciao iperboreo e benvenuto nel forum.
certo che è possibile, però dipende da come sono strutturate le tabelle del db.
dovresti postare la loro struttura
 
Estrazione da mysql in base all'utente

Buon giorno e grazie per la risposta,
vi posto i miei file php se possono essere utili, non son perfetti ma funzionano, sto imparando.

MAIN_LOGIN : questo è form del login

HTML:
<HTML>
<HEAD>
<TITLE>prova</TITLE>
</HEAD>
<BODY>
<table border="0" cellspacing="1" cellpadding="0" width="300" align="center" bgcolor="#cccccc"><tbody>
<tr><form action="checklogin.php" method="post"> <input name="phpMyAdmin" type="hidden" value="V0N0db6Fl62QWr6eBkly75xAGn3" /><td>



<table border="0" cellspacing="1" cellpadding="3" width="100%" bgcolor="#ffffff"><tbody>
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input id="myusername" name="myusername" type="text" /></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input id="mypassword" name="mypassword" type="password" /></td>
</tr>
<tr>
<td></td>
<td></td>
<td><input name="Submit" type="submit" value="Login" /></td>
</tr>
</tbody></table>
</td>
</form></tr>
</tbody></table>
</BODY>

CHECKLOGIN.PHP : QUESTA LA PAGINA DI CONTROLLO DEL LOGIN :

PHP:
<?php
$host="localhost"; // Hostname
$username="basefull"; // Mysql username
$password=""; // Mysql password
$db_name="my_basefull"; //Nome del Database
$tbl_name="registrazione"; // Nome della Tabella
// Procedimento per connettersi al Database

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Nome utente e password inviate attraverso il form

$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);



// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){


// Register $myusername, $mypassword and redirect to file "http://www.basefull.altervista.org/home.html"
session_register("myusername");
session_register("mypassword");
header("location:http://www.basefull.altervista.org/home.html");
}
else {
echo "Attenzione username o password errati !  altrimenti procedere con la REGISTRAZIONE";
}

?>
iscritti.php : questa pagina l'ho creata per eseguire la sessione sull'id

PHP:
<?php
session_start();

// controlliamo se è stata inizializzata la sessione
if(isset($_SESSION['id']))
{
  //controllo id con esito positivo
  echo "Benvenuto! Processo di attivazione concluso positivamente!";
header("location:http://www.basefull.altervista.org/home.html");
}else{
  //controllo sessione con esito negativo
  @header("Location: http//www.basefull.altervista.org");
}
?>



QUESTE LE PAGINE PHP INTERESSATE, NON SO COME FORMULARE LA QUERY PER LìESTRAZIONE IN MYSQL,
tipo: $sql = "SELECT * FROM images where id_utente=$session_id";

NEL DATABASE MYSQL ho due tabelle, una è REGISTRAZIONE (contiene i campi ID, nome, cognome, password)
e una table chiamata IMAGES, (contiene i campi ID, nome, id_utente)

POSSONO BASTARE COME INFORMAZIONI? non riesco a mettere in relazione il campo ID_UTENTE della table registrazione con la table IMAGES.

Sono mesi che tento !

Grazie per l'aiuto, buona giornata

Iperboreo
 
Ultima modifica di un moderatore:
ciao
ci do un occhio poi ti so dire, anche se cos' ad occhio e croce c'è ualcosa che non mi torna.
comunque ricordati: quando posti del codice racchiudilo nei relativi tag, barra di formattazione post 2° riga ultime tre iconcine, nell'ordine code html php

dimenticavo:
sino a che lo script non è perfetto non usare il silent (la @) davanti alle istruzioni perchè non vedi eventuali errori
 
Ultima modifica:
ciao
alcuni appunti e domande
non fai i controlli sui dati immessi dal form
l'importanza dei controlli esempio:
se uno nel campo del form scrive
' or password !='
e tu fai semplicemente (io uso il termine brutalmente)
$mypassword=$_POST['mypassword'];
e non fai un controllo la query risulta
....and password='' or password !=''";
uno accede alla pag. riservata senza avere l'autorizzazione
analogo per myusername

poi sempre nella CHECKLOGIN.PHP (dopo aver aggiunto i controlli)
1. io metterei all'inizio anche qui
PHP:
<?php
session_start();
$host="localhost"; // Hostname
$username="basefull"; // Mysql username 
//...
?>
2. tutta la parte della connessione la scriverei in un file a parte chiamato es. connessione.php, per cui
PHP:
<?php
session_start();
require_once "connessione.php";
//...
?>
3. quando verifichi se user e pass sono giusti io estrarre anche l'id del cliente
PHP:
<?php
//....
if($count==1){
 $riga=mysql_fetch_array($result);
 //e avendo messo all'inizio session_start
 $_SESSION['id_utente']=$riga['id'];//da questo nella pag riservata puoi fare la query $sql = "SELECT * FROM images where id_utente=".$_SESSION['id_utente'];
 $_SESSION['nome']=$riga['nome'];//meglio estrarlo che usare quello che viene dal form
//...
?>
4. poi perchè rimandi (se user e pass sono giusti) alla pag. home.html? non dovresti riinviare ad una pag riservata? tra l'altro per usare i dati invitai la pag dovrebbe essere .php
io rimanderei alla home.html (o al form) se user e pass errati

per ora penso che basti
 
Ciao, e grazie,
la silent la posso eliminare cosi vedo gli errori, ma non capisco proprio come uno possa riuscire a bypassare i controlli di nome e password. io non riesco, sembra funzionare bene.

Aggiungo il controllo ID oltre che nome e password,

ma per estrarre la foto dell utente loggato come faccio?
ho sbagliato le tabelle vero?
ho REGISTRAZIONE che racchiude tutti gli utenti, e
ho FOTO che racchiude la foto dell utente in questione.

Quando un utente si logga, mi mostra le foto di tutti gli utenti.

Non riesco a risolvere, ma so che sta tutto nelle tabelle in mysql e nella query di estrazione che pongo. giusto?
 
ciao
nella tab IMAGES, (contiene i campi ID, nome, id_utente) giustamente per collegarla alla tabella utenti hai messo id_utente, ma cosa contiene il campo nome?
poi dove vuuoi che vengano fuori le immagini dell'utente? hai una pag apposita (ricordati che deve essere .php)?

p.s.
la cross injection è una delle cose più semplici da fare e se non si fanno controlli ti può capitare.
 
Ciao borgo italia, non riuscivo a connettermi!
la mia tabella REGISTRAZIONE contiene i campi: ID,nome,cognome,mail
la tabella IMAGES contiene i campi: ID,nome(nome della foto dell'utente), id_utente (sarebbe il campo dove credo debba automaticamente comparire l ID dell utente della tabella REGISTRAZIONE.

le foto appaiono in una pagina php chiamata FOTO. (NELLA QUAL PAGINA HO INSERITO LA QUERY: <?php $query = "SELECT * FROM images WHERE id_utente=".$_SESSION['id']."ORDER By Id"; ?>
 
ciao
se in "nome" come detto hai il nome della foto, es. pinco.jpg
ti schematizzo
PHP:
<?php
//....
$cartella="immagini/";//qui dovrai mettere il percorso rispetto allo script o no se sono nella stessa cartella
$query = "SELECT * FROM images WHERE id_utente=".$_SESSION['id']."ORDER By Id";
$ris=mysql_query($query);
if(mysql_num_rows($ris)==0){
	echo "non ci sono immagini";
}else{
	while($riga=mysql_fetch_array($ris)){
		$immagine=$riga['nome'];
		$immagine=$cartella.$immagine;
		echo "<img src=\"$immagine\" width=\"100%\" height=\"100%\" border=\"0\"title=\"quello che vuoi se hai il tit dell'imm\" / ><br />";
	}
}
//.....
?>
 
Ciao,
facendo come suggerito, che secondo mè è giusto, mi riporta il seguente errore, invece di visualizzare la foto.
che potrebbe essere? la versione?

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER By Id' at line 1 "
 
ciao
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER By Id' at line 1 "
sei sicuro che nella tabella images il campo si chiami Id e non id o ID?
 
Ciao,
si sono sicuro che ho il campo Id e il campo id_utente, scritti cosi, solo Id ha la I maiuscola

quel messaggio di errore di sintassi si riferisce ad un errore di scrittura nel comando, o in un errore nella tabella?
 
Ciao,
credo tu debba aggiungere uno spazio prima di ORDER

$query = "SELECT * FROM images WHERE id_utente=".$_SESSION['id']."ORDER By Id";

PHP:
$query = "SELECT * FROM images WHERE id_utente=".$_SESSION['id']." ORDER By Id";

al massimo stampala e vedi cosa ne esce

PHP:
echo $query;
 
recupero dato utente loggato

Ciao, no continua a darmi l'errore anche con lo spazio.
Comunque posso togliere " order by ID " ma non va lo stesso.

Partendo da zero, con un form login funzionante, una tabella registrazione ( vi sono i dati degli utenti ) e una tabella images, ( foto dell'utente ),
come fareste a visualizzare la foto di quell utente loggato al momento? cioè se mi loggo io vedo la mia di foto, e non quella di pinco pallino, e pinco pallino se si logga lui deve vedera solo la sua di foto.

Se scrivo " select * from images " mi mostra la mia foto e quella di pinco pallino sia che mi loggo io, sia che si logga lui. Non riesco a venirne fuori, dopo mesi e mesi !
grazie per l'interessamento.
 
La logica di questa query è corretta:

PHP:
$query = "SELECT * FROM images WHERE id_utente=".$_SESSION['id']." ORDER By Id";

prova a stamparla e incolla il risultato in phpmyadmin

PHP:
echo $query;


Anzi scusa, l'ORDER BY è inutile ma non causa problemi
 
Ultima modifica:
mi da sempre errore di sintassi, che siano sbagliate le altre pagine, quella con la sesssione id per esempio?
 
Sicuro che in $_SESSION['id'] ci sia qualcosa?

puoi postare l'echo della query?
 
ciao
e inlotre perima della query metti

PHP:
var_dump($_SESSION['id'] );
e posta quello che risulta

p.s.
hai messo session_start() all'inizio della pag?
 
Ciao eccomi,
ho una pagina chiamata iscritti.php a cui accedo dopo aver confermato l iscrizione, ed è in questa pagina iscritti.php che ho la "session id"

Che pagina dovrei avere perchè la session id funzioni?
non ho ben capito cosa devo postare, l'echo della query?

grazie
 
estrazione in base al login

qulcuno sa estrarre i dati del solo utente loggato? ogno itente i suoi dati.

grazie
 

Discussioni simili