Originariamente inviato da Brother77
gestire un database e l'upload dei file sono cose gia fatte, ma integrarle con la gestione delle sessioni che mi manda in panico
Ok, questo mi fa capire che hai utilizzato il database con script/applicazioni PHP che non prevedevano in alcun modo degli accessi protetti.
Vediamo un po di gettare qualche base che ti servirà da input per ricerche più approfondite:
1) Le sessioni del php ti servono per tenere traccia di alcune informazioni anche mentre si naviga tra le varie pagine (è una definizione di merd* però un po fa capire)
2) Nel database ti serve una tabella clienti (almeno coi campi username, password, gruppo)
3) Nel database ti serve una tabella gruppi (che unita a quella clienti ti permette di capire chi ha i permessi amministratore, chi quelli moderatore, chi quelli di semplice utente)
4) Del codice per caricare un file ed assegnarlo ad un determinato cliente.
i punti 2 e 3 volengo possono essere semplificati con una sola tabella clienti che possegga i campi username, password e permessi.
Vediamo solo le cose più importanti.
Tabelle Database:
codice:
CREATE TABLE user (
iduser INT(11) NOT NULL auto_increment,
username VARCHAR(64) NOT NULL,
password VARCHAR(32) NOT NULL,
permission INT(5) NOT NULL,
PRIMARY KEY (iduser),
UNIQUE (username)
);
ovviamente questa tabella è molto grezza, ti servirebbe un campo email (se i clienti si registrano da soli) in modo da poterne convalidare la registrazione, ti servirebbero anche dei campi specifici per l'anagrafica cliente (se serve); ad ogni modo questo è il minimo indispensabile.
Io personalmente quando ho a che fare con registrazioni di persone con tanto di anagrafica preferisco utilizzare il codicefiscale del cliente come chiave primaria della tabella.
Ora ti serve un moduletto php che ti permetta di fare la registrazione:
Codice PHP:
<?PHP
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
/**
* Qui devi registrare il cliente effettuando questi passi, come minimo:
* 1) Verifichi che tutti i dati necessari siano stati inseriti (username, password)
* 2) Verifichi che i dati inseriti (username e password) non posseggano caratteri pericolosi
* 3) Nel caso ci siano caratteri strani mostri un errore al cliente
* 4) Effettui la query al db per registrare al cliente
*/
// Ovviamente per eseguire questa devi fare anche il collegamento al db
$username = addslashes($_POST['username']);
$password = md5($_POST['password'];
$query = "INSERT INTO user (username, password) VALUES ('$username', '$password')";
mysql_query($query);
}
?>
<html>
<body>
<form action="" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" name="submit" value="Registrati">
</form>
</body>
</html>
Ora una volta che il cliente si è registrato ti serve una pagina di login e poi tutte le pagine che avranno accesso protetto.
La pagina di login avrà un form html per inserire username e password (come prima) e del codice PHP per verificare che il cliente esista; se il cliente esiste ed i dati di accesso sono corretti imposti una variabile di sessione che ti servirà in tutte le altre pagine per capire se quel cliente si è loggato.
Pagina login:
Codice PHP:
<?PHP
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
/**
* Qui devi verificare che il cliente abbia messo i dati giusti:
* 1) Verifichi che tutti i dati necessari siano stati inseriti (username, password)
* 2) Verifichi che i dati inseriti (username e password) non posseggano caratteri pericolosi
* 3) Nel caso ci siano caratteri strani mostri un errore al cliente
* 4) Effettui la query al db per verificare il cliente
*/
// Ovviamente per eseguire questa devi fare anche il collegamento al db
$query = "SELECT * FROM user WHERE username = '$username' AND password = '$password'";
mysql_query($query);
if ( mysql_num_rows() > 0 ) {
// Il cliente esiste e quindi imposto una variabile di sessione per ricordarmi che si è loggato
$_SESSION['autenticato'] = 1;
}
}
?>
<html>
<body>
<form action="" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" name="submit" value="Login">
</form>
</body>
</html>
In tutte le altre pagine avrai:
Codice PHP:
<?PHP
session_start();
if ( !isset($_SESSION['autenticato']) !! $_SESSION['autenticato'] == 0 ) {
die("Questa zona è protetta, devi prima loggarti");
}
// fai tutto il resto
?>
Ovviamente questo codice scritto va MOOLTO migliorato sia come struttura logica che dal punto di vista sicurezza...ma non potevo star qui a scrivere per ore
Spero ti sia di aiuto; leggiti tutto quello che c'è nel forum ed in html.it riguardo le sessioni.