-
Domanda su sessioni
Premetto che leggendo sia in internet sia nel forum, dell'utilizzo delle sessioni ci ho capito poco o niente: ho capito soltanto che mi servono:lol:
In particolare, su questo forum, ho trovato un post interessante dove Xenom89 spiegava l'utilizzo:
Codice:
<?
//recuperi la variabile dal form
$nome=$_POST['nome'];
//questo serve per eliminare un'eventuale vecchia sessione
session_start();
session_unset();
session_destroy();
//inizializzi una nuova sessione
session_start();
//salvi nella variabile $_SESSION['nome'] il contenuto di $nome
$_SESSION['nome']=$nome;
?>
Ma con questo codice, chiunque si può collegare: basta che nel form prima scrive qualsiasi cosa!!...
Ho buttato giù questo codice:
Codice:
<?php
session_start(); //elimino eventuali sessioni aperte
session_unset();
session_destroy();
session_start(); //apro una nuova sessione
?>
<html>
<head>
<title>
login...alemoppo.altervista.org
</title>
Attendere il login...
<?php
$db=mysql_connect("localhost","alemoppo", "");
if($db == FALSE)
{?>
<script language="Javascript">
alert("Errore nella connessione nel database...");
setTimeout("annulla()", 100);
</script>
<?php
}
else
{
$nick=$_POST['nick'];
$pass=$post['pass'];
mysql_select_db("my_alemoppo",$db);
$testo_query="SELECT livello FROM utenti WHERE pass='$pass' AND nick='$nick'"; //livello ha valori variabili maggiori di 0 (lo userò per decidere se si è neofita, mod...)
$livello=mysql_query($testo_query,$db);
if($livello)
{
$_SESSION['livello']=$livello;
$_SESSION['nick']=$nick;
alert("connessione accettata!");
}
else
{?><script language="Javascript">
alert("Errore: password errata!");
setTimeout("annulla()", 100);
</script>
<?php
}
}
?>
<script language="Javascript">
function annulla()
{
window.navigate('index.php');
}
</script>
</body>
</html>
...Ma, (come mi è sembrato di capire in molte pagine), non posso andare a modificare $_SESSION['livello'] e $_SESSION['nick'] dopo <html>, giusto??... Ma allora, se non posso andare a invocare l'html, come faccio a vedere se il nick e la password esistono sul mio database??
Come faccio a far capire all'utente che ha sbagliato a scrivere la password?
Come devo fare??
E' totalmente sbagliato il codice che ho scritto??
p.s. e poi, a cosa serve l'ID della sessione?? Se $_SESSION['nome'] contiene qualcosa, va bene... no? e quindi a me non serve, giusto?
Scusate l'ignoranza
Grazie,
CIAO!
-
Io sul mio sito le utilizzo le sessioni, e faccio così.
Intanto nella index se vuoi usare le sessioni devi scrivere prima di un qualsiasi output:
Codice PHP:
<?php
session_start();
?>
Poi io mi tengo una variabile di sessione che se è settata a 1 vuol dire che l'utente è loggato, altrimenti non lo è.
Quindi nella index del mio sito scrivo:
Codice PHP:
<?php
//sessione già avviata
if(!isset($_SESSION['log'])) {
$_SESSION['log'] = 0;
}
?>
Nella pagina di login prendo i dati di tutti gli utenti (non uso database) e li confronto con quelli passati dal form. Se vengono trovati (Quindi un'utente esiste) verifico la password, e se anche quella è giusta prendo la variabile $_SESSION['name'] e ci metto il nome utente, poi prendo la variabile $_SESSION['log'] e la setto a 1. Ovviamente in tutte le pagine ci deve essere il controllo sulla variabile $_SESSION['log'] (perchè se è == 0 devo scrivere che non si è loggati).
Un po' più chiare le sessioni adesso?
-
GRAZIE PER LA RISPOSTA...
Anche io avevo pensato di tenere una variabile a 1 se si è loggati o 0 se non lo si è...
Poi ho pensato che è sufficiente soltanto sapere il nome:
In ogni pagina controllo se la variabile che contiene il nome ($_SESSION['nome']) è vuota (e se è vuota scrivo di fare il login)...
No?: si risparmierebbe una variabile!
Adesso, tutto mi è un pò più chiaro, ma ho altre 2 domande:
1->Tra i due codici che ha scritto gabryhacker, si può mettere del codice HTML?
2->Penso che il codice che ho fatto vada bene... PERCHè non funziona??
GRAZIE...
CIAO!
-
Rispondo alla prima domanda: si, puoi mettere html