Salve a tutti,
dopo un po' di tempo che sono rimasto fermo ho ripreso il mio studio del php ed ho un nuovo problemino:
ho sistemato il login e diciamo messo in piedi lo script della registrazione (ancora non è un granché sul piano della sicurezza) ma ho notato che una volta effettuato il login se cambio pagina la sessione termina, devo far visualizzare in determinate pagine delle stringhe di codice html solo ad utenti registrati.
Questo è lo script di registrazione:
Questo è lo script di login:
Questo l'ho inserito nelle altre pagine per cercare di mantenere aperta la sessione:
Però mi visualizza sempre "Non sei Loggato" e se elimino la else mi visualizza "Sei Loggato" quindi credo che ci sia direttamente qualche problema sintattico ma non riesco ad individuarlo! Avete qualche idea?
Un altra domanda... per evitare che inseriscano durante la registrazione nell'user simboli che manderebbero il database in tilt come posso impedire tale inserimento? Visualizzando, poi, un normale echo?
dopo un po' di tempo che sono rimasto fermo ho ripreso il mio studio del php ed ho un nuovo problemino:
ho sistemato il login e diciamo messo in piedi lo script della registrazione (ancora non è un granché sul piano della sicurezza) ma ho notato che una volta effettuato il login se cambio pagina la sessione termina, devo far visualizzare in determinate pagine delle stringhe di codice html solo ad utenti registrati.
Questo è lo script di registrazione:
PHP:
<?php
if(isset($_POST['submit'])) {
$connessione=mysql_connect("localhost", "Oswold", "")
or die ("Non riesco a connettermi");
$db=mysql_select_db ("Test");
if (!$db)
{
die ("Connessione al db fallita!".mysql_error());
}
$user=$_POST['user'];
$pass=$_POST['pass'];
$mail=$_POST['email'];
// Controlla che i campi siano stati riempiti tutti
if (empty($_POST['user'])) { echo "<div4>Non hai inserito l'user!</div4>"; goto a; }
elseif (empty($mail)) { echo "<div4>Non hai inserito l'email</div4>!"; goto a; }
elseif (empty($pass)) { echo "<div4>Non hai inserito la password!</div4>"; goto a; }
// Controlla se l'email è valida
if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) { echo "<div4>L'email inserità non è valida!</div4>"; goto a; }
// Controlla se l'user è già presente
$username= "SELECT * FROM utenti WHERE username = '$user'";
$raw = mysql_query($username);
//$row = mysql_fetch_array($raw);
if(mysql_num_rows($raw)>0 )
{echo "<div4>Username gia esistente</div4>"; goto a;}
// Controlla se l'email è già presente
$email= "SELECT * FROM utenti WHERE mail = '$mail'";
$raws = mysql_query($email);
//$rows = mysql_fetch_array($raws);
if(mysql_num_rows($raws)>0 )
{echo "<div4>Email già esistente</div4>"; goto a;}
// Controlla la lunghezza della password
$Password = 6;
$Password2 = 18;
if(strlen($pass)<$Password&&strlen($pass)>$Password2)
{ echo "<div4>La password non rispetta le restrizioni!</div4>"; goto a; }
$risultato=mysql_query("INSERT INTO utenti (username,password,mail) VALUES ('$user', '$pass', '$mail')") or die(mysql_error());
if($risultato){
echo "<div4>Registrazione avvenuta correttamente</div4>";
echo "<meta http-equiv='Refresh' content='1; url=Home.html'>";
}else{
echo "<div4>ERRORE riprova</div4>";
}
}
a:
?>
Questo è lo script di login:
PHP:
<?php
if(isset($_POST['submit'])) {
$connessione=mysql_connect("localhost", "Oswold", "")
or die ("Non riesco a connettermi");
$db=mysql_select_db ("Test");
if (!$db)
{
die ("Connessione al db fallita!".mysql_error());
}
$user=$_POST['user'];
$pass=$_POST['pass'];
$confronto = mysql_query("SELECT * FROM utenti WHERE ((username='$user')&&(password='$pass'))") or die(mysql_error());
if(mysql_num_rows($confronto)!=0) {
echo "<div4>Login avvenuto con successo</div4>";
echo "<meta http-equiv='Refresh' content='1; url=Rome Total War 2.html'>"; }
else{
echo "<div4>Login fallito, riprova!</div4>";
}
}
?>
Questo l'ho inserito nelle altre pagine per cercare di mantenere aperta la sessione:
PHP:
<?php
session_start();
$user=$_SESSION['user'];
if((strlen($user)>0))
{
echo "<div5>Sei Loggato</div5>";
}
else
{
echo "<div5>Non sei Loggato</div5>";
}
?>
Però mi visualizza sempre "Non sei Loggato" e se elimino la else mi visualizza "Sei Loggato" quindi credo che ci sia direttamente qualche problema sintattico ma non riesco ad individuarlo! Avete qualche idea?
Un altra domanda... per evitare che inseriscano durante la registrazione nell'user simboli che manderebbero il database in tilt come posso impedire tale inserimento? Visualizzando, poi, un normale echo?