Premessa : la mia conoscenza di PHP e MySql credo non superi il 4.5/5
purtroppo ( cioè meno male !! ) lavoro in questo periodo e non poso dedicarmi come vorrei allo studio e provare.
Voglio imparare a creare e l'ostacolo + grande che ho incontrato è fare il login e poi proseguire il controllo su tutte le pagine protette.
Non mi piace molto prendere le pappe già pronte, anche se di livello molto alto come quelle che compaiono sul forum e sul sito, così ho provato a farne una versione mia.
Vi posto solo il codice della funzione di controllo di login e poi il controllo della pagina principale e poi quello di una pagina successiva al login.
Vorrei sapere cosa ne pensate del mio esperimento di creare pagine protette.
Codice PHP:
function user_login($username, $password) {
$db = connection();
$decrypt_password = MD5($password); // decriptazione della password
$verify = mysql_query("SELECT * FROM ml_user
WHERE username = '$username' && user_password = '$decrypt_password'",$db)
or die( "Errore : " . mysql_error() );
$num_users = mysql_num_rows($verify);
if ($num_users != 1) {
$msg = "<p class=warning>Attenzione !! Username o Password errate !!</p>";
return array ( 'ERROR', $msg, NULL, NULL ); }
else {
$data = mysql_fetch_array($verify);
return array ( 'LOGIN', $data[user_id], $data[username], $data[user_level]); }
return $result;
}
Controllo nella pagina di login :
Codice PHP:
$data = user_login($_POST[user], $_POST[pass]);
list ($result, $data1, $data2, $data3) = $data;
if ( $result == LOGIN ) {
session_start ();
$_SESSION['username'] = $data2;
$_SESSION['level'] = $data3;
echo $data2;
// vari link...
if ($data3 == 1) {
echo "
<a href=\"../admin/index.php\">Pannello d'amministrazione</a></p>";}
}
else {echo $data1;}
Controllo successivo nella pagina di amministrazione
Codice PHP:
session_start ();
$username = $_SESSION['username'];
$level = $_SESSION['level'];
if ($level != 1 OR !isset($level)) {
echo "<p class=warning>Attenzione !! Non hai i diritti di visualizzare questa pagina !!</p>";} else {
echo "sei l'amministratore"; }