Ciao ragazzi
devo ancora risolvere un problema in merito alla protezione
di pagine web di differenti utenti:
Ho trovato questi script:
il codice del form per il login:
codice:
<html><head>
<title>Shatners PHP Login</title>
</head>
<body>
<form action="checkuser.php" method="post" name="form1">
<table width="50%" border="0" align="center" cellpadding="4" cellspacing="0">
<tr>
<td width="22%">Username</td>
<td width="78%"><input name="username" type="text" id="username"></td>
</tr>
<tr>
<td>Password</td>
<td><input name="password" type="password" id="password"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table></form></body>
</html>
checkuser.php (x il controllo dati):
codice:
<?
/* Check User Script */
session_start(); // Start Session
include 'db.php';
// Convert to simple variables
$username = $_POST['username'];
$password = $_POST['password'];
if((!$username) || (!$password)){
echo "Please enter ALL of the information!
";
include 'index.htm';
exit();
}
// Convert password to md5 hash
$password = md5($password);
// check if the user info validates the db
$sql = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password' AND activated='1'");
$login_check = mysql_num_rows($sql);
if($login_check > 0){
while($row = mysql_fetch_array($sql)){
foreach( $row AS $key => $val ){
$$key = stripslashes( $val );
}
// Register some session variables!
session_register('first_name');
$_SESSION['first_name'] = $first_name;
session_register('last_name');
$_SESSION['last_name'] = $last_name;
session_register('email_address');
$_SESSION['email_address'] = $email_address;
header("Location: $username.php");
}
} else {
echo "You could not be logged in! Either the username and password do not match or you have not validated your membership!
Please try again!
";
include 'index.htm';
}
?>
e una pagina qualsiasi (in questo caso luca.php, ma ci deve essere una per ogni utente) protetta così:
codice:
<?
session_start();
if ( empty( $first_name ) ) {
?> Welcome Guest, You Can Login Here
</a>
<?
} else { include 'db.php'; echo "Come stai?,
". $_SESSION['first_name'] ."";
?>
Logout
<? } ?>
Ci sono ovviamente altre pagine, ma queste 3 sono le più importanti.
Nella seconda pagina, come potete vedere, si effettua il controllo
del user e della pass poi io ho aggiunto
header("Location: $username.php");
che reindirizza, come voglio, alla pagina protetta del singolo utente.
Il problema è che una volta che l'utente si è autenticato
e aperta la sessione accede si alla propria pagina web, ma può
entrare anche nelle pagine altrui (digitando nell'indirizzo del browser
invece che luca.php ad esempio ciccio.php)
Ho aggiunto nel file checkuser.php questo
...
session_register('password');
$_SESSION['password'] = $decrypted_password;
e ho fatto questa modifica al file dell'utente:
<?
session_start();
include 'db.php';
if($_SESSION['password']=="98jaatc9")//faccio il confronto con la password del cliente autorizzato
{ echo "Welcome,
". $_SESSION['first_name'] ."";
?>
Logout
<? }
else
echo "Ingresso non autorizzato";
?>
Sembra funzionare ma ci sono 2 problemi:
1) Ho notato che devo fare il login 2 volte in quanto la prima volta anche
se la pass è giusta mi riporta "Ingresso non autorizzato"
2) E' efficace, ma non so (considerando la mia conoscenza del php)
quanto sicuro. Le sessione non le conosco affatto.
Potete dirmi qualcosa su questi 2 punti?
grazie