PDA

View Full Version : [PHP] aiuto sulle sessioni PHP


matteo11102009
22-08-2012, 21:52
Ciao a tutti... Vorrei sapere come posso fare per bloccare l accesso ad una determinata pagina di un sito agli utenti che non hanno eseguito il login...per esempio, una volta eseguito l accesso l utente verrà reindirizzato ad una pagina, dove potrà vedere le sue info ecc... Tutto normale fino a qui, solo che se scrivo nella barra degli url il percorso per quella pagina l utente che non ha effettuato il login potrà accedere a quella pagina senza pero vedere i sui dati ma potrà vedere solo: nome: , cognome: ecc... Come posso fare per bloccare l' accesso (alle pagine web che deciderò io, es: modificare il profilo, pubblicare una guida, ecc) alle persone che nn hanno effettuato il login???
Grazie in anticipo... Non so proprio come fare

demos88
22-08-2012, 22:01
All'inizio delle pagine il cui accesso devi bloccare, puoi inserire, all'inizio del codice qualcosa del tipo:

if (!check_user_login())
header("Location: http://www.miosito.it/loginpage.php");
...
//resto del codice della pagina che viene processato/visualizzato solo se il login è stato fatto

la funzione check_user_login() sarà una funzione che ritorna true se l'utente è loggato, false se non lo è. Il check dello stato di login puoi farlo per esempio usando variabili di sessione:

function check_user_login(){
if (isset($_SESSION['userid']))
return true;
else
return false;
}

In questo banalissimo caso, quanto un utente fa il login, se i dati sono corretti, setti la variabile di sessione $_SESSION['userid'] con l'id dell'utente.
Ma puoi benissimo settare qualsiasi variabile di sessione con qualsiasi valore tu voglia, poi la funzione di check varia di conseguenza.
Quando fai il logout, semplicemente cancelli la variabile di sessione o la imposti a un valore che poi tu sai che vuol dire "non loggato".

matteo11102009
23-08-2012, 15:32
ciao.. grazie mille per la risposta... per quanto riguarda questa discussione ho risolto, ma è sorto un altro problema! Mi potresti aiutare?
Allora, vorrei che comparisse il nickname dell' utente loggato, e per fare questo dovrebbe prendere i dati dal database solo che mi da il seguente errore: Resource id #3... Ora ti posto il codice:

<?php
$mail = $_SESSION['mail'];
$connessione = mysql_connect("xxx","xxxx","xxxx");
$Db = mysql_select_DB("my_");
$connect= mysql_query("SELECT nickname FROM registrazionin where $mail ");
$fetch = mysql_fetch_array($connect);
echo $fetch;
?>

Riepilogando vorrei sapere come posso fare per prelevare il nickname da un database di un utente che in precedenza si è loggato al sito??? grazie mille in anticipo anche per la risposta di prima

demos88
23-08-2012, 16:45
Su che riga ti da l'errore?
Comunque la query è sbagliata, dovrebbe essere
SELECT nickname FROM registrazionin where mail = $mail
ammesso che "mail" sia il nome dell'attributo che contiene l'email dell'utente.
Comunque non è molto bello selezionare la riga usando la mail come discriminante... tra l'altro è una chiave candidata (unique)?
Ha più senso selezionare l'utente in base all'id dello stesso, quindi nella sessione registri l'id e non l'email.

matteo11102009
24-08-2012, 08:09
grazie ho risolto