• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Area riservata sicura con PHP e mysql

Dinco

Nuovo utente
Autore del topic
3 Agosto 2011
27
0
Miglior risposta
0
Ormai nel nostro sito abbiamo sempre bisgno di un area di amministrazione per il founder.

Questa guida ti mostra come creare un'area riservata sicura, iniziamo a strutturare il db:

CREATE TABLE `utenti` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(32) NOT NULL,
`pswd` VARCHAR(32) NOT NULL,
PRIMARY KEY (`id`)
);

INSERT INTO utenti (nome, pswd) VALUES ('gianni', MD5('prova'));

Da notare è la stringa INSERT INTO utenti (nome, pswd) VALUES ('gianni', MD5('prova')); che sono i tuoi dati di accesso.

Adesso passiamo alla pagina di login:

<?php
$DB_host = 'localhost';
$DB_user = 'root';
$DB_password = 'secret';
$DB_name = 'test';

$link = mysql_connect($DB_host, $DB_user, $DB_password);
if (!$link) {
die ('Non riesco a connettermi: ' . mysql_error());
}

$db_selected = mysql_select_db($DB_name, $link);
if (!$db_selected) {
die ("Errore nella selezione del database: " . mysql_error());
}

if($_POST) {
effettua_login();
} else {
mostra_form();
}

function mostra_form()
{
// mostro un eventuale messaggio
if(isset($_GET['msg'])) {
echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
}
?>
<form name="form_login" method="post" action="">
<label>nome: <input name="nome" type="text" value="" /></label><br />
<label>password: <input name="password" type="password" value="" /></label><br />
<input name="invia" type="submit" value="Invia" />
</form>
<?
}

function effettua_login()
{
// recupero il nome e la password inseriti dall'utente
$nome = trim($_POST['nome']);
$password = trim($_POST['password']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc()) {
$nome = stripslashes($nome);
$password = stripslashes($password);
}

// verifico la presenza dei campi obbligatori
if(!$nome || !$password) {
$messaggio = urlencode("Non hai inserito il nome o la password");
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
exit;
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$nome = mysql_real_escape_string($nome);
$password = mysql_real_escape_string($password);

// preparo ed invio la query
$query = "SELECT id FROM utenti WHERE nome = '$nome' AND pswd = MD5('$password')";
$result = mysql_query($query);
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}

$record = mysql_fetch_array($result);

if(!$record) {
$messaggio = urlencode('Nome utente o password errati');
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
} else {
session_start();
$_SESSION['user_id'] = $record['id'];
$messaggio = urlencode('Login avvenuto con successo');
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
}
}
?>

Adesso il login è perfetto..

Adesso passiamo all'ultima pagina, ovvero quella di amministrazione:

<?php

if ($_SECTION['utenti'] == "") die header ("location: index.php");

?>

Guida by Dinco

Per bug o problemi contattatemi :P
 
Riferimento: Area riservata sicura con PHP e mysql

C'è un errore Nell'ultima parte

<?php

if ($_SECTION['utenti'] == "") die header ("location: index.php");

?>
deve essere $_SESSION, cos'è section.
Per il resto :P Bravo ,Buona Guida!
 
Ultima modifica: