Originariamente inviato da coteaz
ok va bene, vada per una sola query, e per quanto riguarda la sicurezza cosa consigliate?
un paio di annotazioni... se i dati che aspetti ti devono arrivare per POST, usa $_POST e non $_REQUEST perche' $_REQUEST prende tutto per buono (post/get/cookies) ....
codice:
$password = md5($_POST['password']);
Quando verifichi l'utente non estrarre la password, ma verificala direttamente nel db.
select id, privilegi from tabella where utente = '$utente' and password = '$password'
Non usare per verificare il login isset($_SESSION['login'] perche' lascia il tempo che trova. ti dara' true anche se $_SESSION['login'] fosse vuoto. Usa empty() e ci starebbe pure bene un riferimento del valore id, ed anche un codice per i privilegi assegnati.
per esempio parti con l'id dal valore 10000 e per i privilegi assegna: admin = 2222, user = 3333
codice:
<?php
session_start();
if(!empty($_SESSION['id']) AND $_SESSION['id'] >= 10000 ) {
if(!empty($_SESSION['privilegi']) and $_SESSION['privilegi'] == 2222 ) {
pagina admin
elseif($_SESSION['privilegi'] == 3333 ) {
pagina user
} else { accesso negato, torna al login }
} else { accesso negato, torna al login }
chiaro che e' un semplice esempio, si puo' fare di piu' e di meglio. Ma la sostanza e' questa.