![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito. |
||||
|
|||||||||
|
|
LinkBack | Strumenti di discussione |
|
|
#1 (permalink) |
|
User
Data di registrazione: Jan 2008
Messaggi: 168
|
Primi esperimenti per login utenti
Ciao a tutti conosco da un po' di tempo il php e adesso sto cercando di applicarlo a mysql per una gestione dei login e registrazioni. Ho iniziato a fare qualche prova per il login, premetto che non sono andato a guardarmi come si fa o a copiare cose già fatte, quindi potrei aver fatto una cosa di bassissimo livello. Però per incominciare ho voluto provare a ragionarci su un po' per capire meglio, poi se esistono degli algoritmi migliori li vado a guardare. Per adesso non ho ancora considerato la sicurezza. vi posto il codice delle pagine che ho fatto di prova:
Pagina di login: Codice:
<html>
<body>
<form method="post" action="accesso.php">
<label>Utente:
<input name="utente" type="text" id="utente" maxlength="20" />
</label>
<p>Password:<label>
<input name="pass" type="password" id="pass" maxlength="20" />
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="Invia" />
</label>
</p>
</form>
</body>
</html>
Codice:
<?php $utente=$_POST['utente']; $pass=$_POST['pass']; $db_host = "localhost"; $db_user = "root"; $db_password = ""; $db_name = "database"; $db = mysql_connect($db_host, $db_user, $db_password); if (! $db) echo "Errore durante la connessiona la database."; mysql_select_db($db_name) or exit ("errore durante la selezione del database"); $sqlcmd = "SELECT * "; $sqlcmd .= "FROM utenti "; $sqlcmd .="WHERE user='$utente' AND pass='$pass' "; $risultato = mysql_query( $sqlcmd ); if (! $risultato) exit ("errore nell'interrogazione: $sqlcmd"); if (mysql_num_rows ($risultato)==0) { exit ("Utente o Password errati"); $accesso="no"; } else $accesso="ok"; session_start(); $_SESSION['accesso']=$accesso; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento senza titolo</title> </head> <body> <a href="pagina1.php"> pagina 1 </a> </body> </html> Codice:
<?php
session_start();
$accesso=$_SESSION['accesso'];
if ($accesso!="ok")
exit ("Accesso non effettuato");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento senza titolo</title>
</head>
<body>
Pagina visibile
<br />
<a href="logout.php">logout</a>
</body>
</html>
Codice:
<?php session_start(); session_destroy(); ?> <html> sessione terminata </html> Grazie |
|
|
|
|
|
|
|
#2 (permalink) |
|
User
Data di registrazione: Jan 2008
Messaggi: 168
|
La prima domanda che mi sorge è:
Se non chiudo la connessione al database nella pagina accesso, quando passo alla pagina1 la connessione rimane aperta o la devo rifare? Per ora la chiudo ad ogni pagina e la riapro la pagina dopo |
|
Ultima modifica di drimmy : 04-02-08 13:29. |
|
|
|
|
|
|
#3 (permalink) |
|
ModSenior
|
La connessione va fatta in ogni pagina quindi conviene fare un file di configurazione ed includerlo in tutte le pagine
per quanto riguarda lo script sarebbe più corretto scrivere: al posto di : Codice PHP:
Codice PHP:
cosi eviti anche problemi con le impostazioni dei server |
|
|
|
|
|
#7 (permalink) |
|
ModSenior
|
Per la sicurezza devi filtrare i simboli come ' e " che posso modificarti la query
puoi usare la funzione addslashes per aggiugnere gli \ davanti a questi simboli e quindi evitare questi codici dannosi |
|
|
|
|
|
#11 (permalink) |
|
User
Data di registrazione: Feb 2008
Messaggi: 91
|
attento fai anche un filtraggio per simboli come % < > ' " * e nella pagina stessa che interroga il db perche senno possono essere bypassati editando una richiesta http manualmente...inoltre per evitare proxy o spammer utilizza o le lettere delle immagini (come quella per registrarti qui) oppure un'applet in java che prenda l'ip privato del visitatore ...
un esempio di funzione per validare un campo puo essere: Codice PHP:
|
|
|
|
|
|
#12 (permalink) | |||
|
User
Data di registrazione: Jan 2008
Messaggi: 168
|
Quote:
Quote:
Quote:
| |||
|
|
|
|
|
#14 (permalink) | |
|
User
Data di registrazione: Jan 2008
Messaggi: 168
|
Quote:
Ho fatto il file config.php che includo in tutte le pagine, per la query non ho capito la differenza... | |
|
|
|
|
|
#15 (permalink) |
|
User
Data di registrazione: Jan 2008
Messaggi: 168
|
Ho aggiunto il filtro addslashes per evitare la sqlinjection e in effetti funziona, riporto il codice completo della pagina accesso:
Codice PHP:
|
|
|
|