estrazione mysql in base al login

ciao
prova così, comunque verifica la corrispondenta tra i nomi con quelli dei campi delle tabelli non so se li ho messi giusti
pegina di verifica log
PHP:
<?php
session_start();
$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=addslashes($_POST['myusername']);
$mypassword=addslashes($_POST['mypassword']);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// If result matched $myusername and $mypassword, table row must be 1 row
if(mysql_num_rows($result)==1){
	$riga=mysql_fetch_array();
	// Register $myusername, $mypassword and redirect to file "http://www.basefull.altervista.org/home.html"
	$_SESSION['id']=$riga['Id'];//verifica il nome del campo tra quello di $riga e la tabella devono essere uguali
	$_SESSION['user']=$riga['myusername'];//c.s.
	$_SESSION['pass']=$riga['mypassword'];//c.s.
	header("location:http://www.basefull.altervista.org/home.html");//qui devi mettere il nome della pag dove si visualizzano le immagino penso
}else{
	echo "Attenzione username o password errati !  altrimenti procedere con la REGISTRAZIONE";
	echo "<a href=\"main_login.php\">registrati</a>";
}
?>
pagina per visualizzare le immagini
PHP:
<?php
session_start();
if(!isset($_SESSION['user'])){//una delle sessioni della pag precedente
	header("location:http://www.basefull.altervista.org");
	exit();
}
// qui i dati per la connessione
$sql="SELECT * FROM images where id_utente=".$_SESSION['id'];
$ris=mysql_query($sql);
if(mysql_num_rows($ris)==0){
	echo "non ci sono immagini";
}else{
	while($riga=mysql_fetch_array($ris)){
		$immagine=$riga['nome'];
		echo "<img src=\"$immagine\" ><br>";
	}
}
?>
 
Si, ogni utente ha un suo id vero? Quindi basta fare una query prendendo la tupla con il suo id.
Per quanto riguarda la query che non esce l'unica cosa è che la variabile di sessione ($_SESSION['id']) sia vuota.
Quandi come ti hanno già detto fai un var_dump e vedi se realmente ci sia qualcosa.
Oppure se ti viene troppo difficile non avendo mai usato var_dump (anche se borgo ti ha postato come fare, basta un CTRL+C e CTRL+V) fai un echo.

EDIT: appena vista la risposta di Borgo, sorry ;)
 
estrazione in base utente loggato

Ciao ragazzi, e grazie,
ho provato, come Borgo mi ha suggerito, ma non mi appare niente all'estrazione, mentre con le mie pagine appare il solito errore syntax.

Come faccio a vedere se la Session_id contiene veramente qualcosa?

ho creato una pagina "iscritti.php" dove ho inserito:


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");
}
?>
ho sbagliato qui?

grazie davvero
 
Ultima modifica di un moderatore:
ciao
intanto la prima header vine dopi un output html (l'echo)
ma poi non ho capito, dipo il log quale è la pag che deve visualzzare le immagini?
 
ciao
veramente non rimando alla home,
una volta loggato uno va alla HOME,

ma la pagina in questione dove cè il form per visualizzare la foto è FOTO.PHP

Io ho postato tutte le pagine anche quelle di controllo, per farvi vedere tutto, perchè deve essere collegato al login,

In sostanza un utente si logga, ed arriva alla pagina HOME.PHP
nella home cè il collegameno per la pagina FOTO.PHP e qui si deve vedere solo la foto dell utente in questione (loggato).
 
ciao
riprendiamo il tutto dall'inizio.
mi sembre che tu faccia così:
1) l'utente accede al form di log e si logga
2) viene chiamata la pagina di controllo se il log e giusto va alla home.php, se sbagliato a www . basefull. altervista. org in pratica alla index.php
3) ipotiziamo che log sia giusto quindi accede alla home.php dove c'è il link a foto.php

sin qui è giusto? e funziona cioe fa quello che deve fare?
se si la home.php è schematicamente fatta in questa maniera?
(leggi i commenti)
PHP:
<?php
session_start();
if(isset($_SESSION['id'])){
	//...........
	echo "Benvenuto! sei nella home";
	echo "<a href=\"foto.php\">vedi le tue immagini</a>";
	//e altri contenuti......
}else{
	//tentativo di accesso diretto alla pagina senza passare dal log es. http//www.basefull.altervista.org/foto.php
	header("Location: http//www.basefull.altervista.org");
	exit();
}
?>
se è simile per prima cosa metti al posto di //...........
var_dump($_SESSION['id']);
e guarda se ti riporta l'id dell'utente (se non lo riporta l'errore puo essere nel controllo o nel form precedenti), da qualche parte la sessione o si perde o non viene generata
arriviamo alla foto.php (anche se sei arrivato alla pagina) quella che ti avevo postato "dovrebbe" funziare
comunque metti i var dunp che ti indico e posta il risultato (anche mi accorgo adesso che da una parte la chiami $_SESSION['id'] e qui $_SESSION['user'] ?? verifica)
PHP:
<?php
session_start();
var_dump($_SESSION['user']);//???? prima la chiamavi ['id']??????
// provvisoriamente commeta il reindirizzamento altrimenti non vedi il risultati del var_dump se la sessione non esiste
//torni initero col pulsante del bw
if(!isset($_SESSION['user'])){//una delle sessioni della pag precedente
    echo "la sesione user non esiste";//questa poi la togli
	//header("location:http://www.basefull.altervista.org");
    //exit();
}
// qui i dati per la connessione
//e altri var dump
$sql="SELECT * FROM images where id_utente=".$_SESSION['id'];
var_dump($sql);//ti scrive come viene sviluppata la query
$ris=mysql_query($sql);
var_dump($ris);//se funzia risulta RESOURCE..., se non funzia bool FALSE
if(mysql_num_rows($ris)==0){
    echo "non ci sono immagini";
}else{
    while($riga=mysql_fetch_array($ris)){
        $immagine=$riga['nome'];
        echo "<img src=\"$immagine\" ><br>";
    }
}
?>
prova e posta i vari risultati
 
PHP:
header("location:http://www.basefull.altervista.org/home.html");
E questo a cosa servirebbe allora? (anche se non ti funziona).

In pratica nella pagina iscritti.php controlli se l'utente ha effettuato l'accesso altrimenti lo rimandi alla index.
Hai provato a loggarti? Mettendo caso che tutto il resto del login sia perfetto ti troverai una pagina con scritto:
Benvenuto! Processo di attivazione concluso positivamente!
E si blocca così in quanto una header dopo una echo o comunque una stampa a video di qualcosa non funziona!
1) leggendo il messaggio che mostri a video, cosa dovrebbe attivare l'utente da quella pagina? Il suo account? Così in pratica è come se lo 'attivassi' ogni volta che si logga.
2) Per vedere cosa c'è nella variabile di sessione basta utilizzare una echo:
PHP:
echo $_SESSION['id'];

Quindi nella home dovresti mettere un link alla pagina foto.php, dove ti inceppi?
 
Ciao Borgo grazie della pazienza.
piu o meno è come dici tu,
se mo loggo correttamente vado sulla home.php, altrimenti ad una pagina chiamata attenzione.php

Ho fatto quello che mi hai detto, ma al posto di mostrare la foto, mi da sempre e sempre questo errore

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

comunque la mia sessione è $_SESSION['id'];
dove hai letto 'user'?

SEcondo tè dove devo mettere la $_SESSION['id']; ? in quale pagina?

grazie
 
ciao
metti quei benedetti var_dump e posta cosa ti danno

$sql="SELECT * FROM images where id_utente=".$_SESSION['id'];
var_dump($sql);//ti scrive come viene sviluppata la query
$ris=mysql_query($sql);
var_dump($ris);//se funzia risulta RESOURCE..., se non funzia bool FALSE

il primo var:dump dovrebbe darti qualcosa PRIMA che ti dia l'errore di mysql
 
Prova a postare la query che utilizzi per selezionare le foto dell'utente.
 
ciao
hai messo gli apici giusti? stai usando gli apici singoli?
comunque prova a correggere la riga
PHP:
<?php
//....
$sql="SELECT * FROM images where id_utente= ".$_SESSION['id'];
//...
?>
con
PHP:
<?php
//....
$sql="SELECT * FROM images where id_utente= ".{$_SESSION['id']};
//...
?>
 
togliendo le graffe mi da questo.

string(38) "SELECT * FROM images where id_utente= " Query was empty
 
ciao
ecco la sessione non si valorizza.
ora bisogna cercare perchè.
hai messo in tutte le pag session_start() comè prima istruzione?
 
Ciao Borgo,
si ho messo il session_start davanti a tutte le pagine interessate, credo di sbagliare la sessione.

Dove devo mettere la session_id?

io l'ho messa in una pagina chiamata iscritti.php e credo sia sbagliato, DOVE VA MESSA?

la riporto, è questa:

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");
}
?>

grazie
 
Ultima modifica di un moderatore:
ciao
ho riguardato il tutto, la pag del form mi sembra ok (quindi non la riporto)
questa è la pag. checklogin.php
PHP:
<?php
session_start();//non dimenticarti questo
$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=htmlspecialchars($_POST['myusername']);//ci vuole una certa minima protezione
$mypassword=htmlspecialchars($_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){
	//recupero da db l'user, la pass e anche l'Id
	//meglio che prenderlo da $_POST
	// Register $myusername, $mypassword and redirect to file "http://www.basefull.altervista.org/home.html"
	$riga=mysql_fetch_array($result);
	$_SESSION['myusername']=$riga['username'];
	$_SESSION['mypassword']=$riga['password'];
	//e preleviamo anche l'idId
	$_SESSION['id']=$riga['Id'];
	header("location:http://www.basefull.altervista.org/home.html");
	exit();
}
else {
	echo "Attenzione username o password errati !  altrimenti procedere con la REGISTRAZIONE";
	//e qui ti conviene mettere o un link o un riinvio automatico (meglio)
}
?>
poi la pag iscritti.php che hai fatto(??) per la sessione non ti serve, la verifica e la creazione delle sessioni l'hai gia fatta nella pag checklogin.php

nella home.html metterai il link alla foto.php
e questa la foto.php
PHP:
<?php
session_start();//non dimenticarti questo
//....
$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";//sei sicuro che nella tab immagini sia 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 />";
    }
}
//.....
?>
così funziona , verifica che i nomi campi/variabili corrisponda ai tuoi.
verifica comununque i nomi delle variabili e quelle di campi, devono essere uguali comprese maiuscole/minuscole comprese le chiavi delle sessioni

edit: ho visto il tuo post, quello script che hai fatto non ti serve a nulla (se non a farti caos) la verifica dell'username e della pass con conseguente inizializzazione delle sessione la fai di già in checklogin.php
 
Ultima modifica:

Discussioni simili