|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3992
|
[php e mysql] ancora sul login
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>
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! <br />";
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!<br />
Please try again!<br />";
include 'index.htm';
}
?>
Codice:
<?
session_start();
if ( empty( $first_name ) ) {
?> Welcome Guest, You Can Login <a href="index.htm">Here</a>
</a>
<?
} else { include 'db.php'; echo "Come stai?,
". $_SESSION['first_name'] ."";
?>
<a href="logout.php">Logout</a>
<? } ?>
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'] .""; ?> <a href="logout.php">Logout</a> <? } 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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3992
|
up
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma perchè fai una pagina diversa per ogni utente ?!?!?
Comunque non devi richiamare session_register ogni volta... Basta l'assegnazione al vettore $_SESSION... |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3992
|
semplicemente perchè voglio inserire il form del login
in una pagina (diciamo la home page) e da qui un ipotetico utente/cliente possa accedere ad una propria pagina che contenga dati personali che può visualizzare solo ed esclusivamente lui (oltre all'amministratore del sito, si intende) Cosa modifico allora del codice sopra? grazie |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non importa !!! Anzi...è davvero brutto
Puoi fare una pagina unica chimata ad esempio dati_utente.php... Salvi nella sessione il nome utente ed in base a quel valore personalizzi la pagina |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3992
|
sospettavo che avresti proposto una soluzione del genere il fatto è che conosco il php meno del c++ ho provato già a fare una cosa del genere senza successo (da ridere) Lo script sopra era già pronto io ho solo apportato delle modifiche potresti farmi un esempio per piacere. grazie ancora |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:56.



















