Ragazzi, io ho provato a procedere in questo modo, ma non nè sono sicuro:
Codice PHP:
<?php
class Database
{
/*
* Variabile locale alla struttura class database
*/
private $db_host = ''; // Host del server
private $db_user = ''; // Db Username
private $db_pass = ''; // Db Password
private $db_name = ''; // Db Name
private $result; // Risultati restituiti dalla query
/*
* Metodo per la connessione al database
*/
public function connect()
{
$db_conn = mysql_connect($this->db_host, $this->db_user, $this->db_pass) or die ("Errore nella connessione al db: " . mysql_error());
if ($db_conn)
{
$db_select = mysql_select_db($this->db_name,$db_conn) or die ("Errore nella selezione del db: " . mysql_error());
}
if ($db_select)
{
return true;
}
}
public function query($query)
{
$this->result = mysql_query($query);
if ($this->result != 0) {
return 1;
}
else {
return 0;
}
}
/*
* numRows
*/
public function numRows()
{
return mysql_num_rows($this->result);
}
/*
* Fetches an array row
*/
public function fetchRow()
{
return mysql_fetch_array($this->result);
}
}
/* CLASS CHECKUSER */
class checkUser extends Database
{
private $NUM_CHAR=32;
private $String;
private $N;
private $logkey;
/* Genero il codice alfanumerico da 32 caratteri */
protected function createSession()
{
for ($i=0; $i<$this->NUM_CHAR; $i++){
do{
$N=ceil(rand(48, 122));
}while(!((($this->N >= 48) && ($this->N <= 57)) || (($this->N >= 65) && ($this->N <= 90)) || (($this->N >= 97) && ($this->N <= 122))));
$this->String=$this->String.chr($this->N);
}
return $this->String;
}
public function EscapeFields($username, $password)
{
$username=mysql_real_escape_string($username);
$password=md5($password);
}
/*
* Check user on the database
*/
public function checkUser($username, $password)
{
// Ricavo i valori inviati tramite form POST ed eseguo l'escape
$this->EscapeFields($username, $password);
$query = "SELECT * FROM admin WHERE username = '".$username."' AND password = '".$password."'";
$this->query($query) or die ("Errore query: " . mysql_error());
if ( $this->numRows() != 1 )
ERRORE
else {
// Inizalizzo la sessione
session_start();
// Genero il codice alfanumerico formato da 32 caratteri
$this->logkey = $this->createSession();
// Modifico il codice ogni volta che effettuo il login
$update = "UPDATE admin SET logkey = '$this->logkey' WHERE username = '$username'";
$this->query($update) or die ("Errore query: " . mysql_error());
// Salvo in sessione il valore alfanumerico
$_SESSION['logkey'] = $this->$logkey;
VENGO LINKATO ALLA PAGINA PROTETTA
}
}
}
?>
E' corretto come procedimento? se ci sono errori qualcuno può evidenziarmeli?
Grazie anticipatamente gaten.