Creazione sito con autenticazione utente (registrazione)

mateky

Utente Attivo
7 Feb 2011
36
0
0
Vorrei avere delle linee guida per la creazione di un sito dove l'utente registrato ha delle "opzioni in piu", ad esempio, entrando, un profilo personale che può modificare.

Ciò che mi viene in mente è:

-creazione pagina principale (index)
-form di registrazione
-inserimento parametri nel Database dalla registrazione
-form di autenticazione con il prelevamento dei dati dal DB
-modifica dell'index in base all'autenticazione (visualizza proprio profilo, modifica profilo ecc).

Il dubbio principale è negli ultimi due punti, come faccio a scriverli in php?
Form autenticazione con prelevamento dei dati dal DB e modifica dell'index dopo l'autenticazione...
 

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
Ciao mateky, ma cosa intendi per modifica index?

Intanto ti metto la registrazione

registrati.php
PHP:
<?php
// Includo la connessione al database
require('configurazioni/config.php');


// Se il modulo viene inviato...
if(isset($_POST['registra']))
{
    
    // Dati Inviati dal modulo
    $user =(isset($_POST['user'])) ? trim($_POST['user']) : '';    // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass =(isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $mail =(isset($_POST['mail'])) ? trim($_POST['mail']) : '';    // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
	$nome =(isset($_POST['nome'])) ? trim($_POST['nome']) : '';	// Metto nella variabile 'nome' il dato inviato dal modulo, se non viene inviato dò di default ''
	$cognome = 	(isset($_POST['cognome'])) ? trim($_POST['cognome']) : '';	// Metto nella variabile 'cognome' il dato inviato dal modulo, se non viene inviato dò di default ''
    $lvl = "0";
	$desc_lvl = "Utente";
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
        $user = addslashes($user);
        $pass = addslashes($pass);
        $mail = addslashes($mail);
		$nome = addslashes($nome);
		$cognome = addslashes($cognome);
		$lvl = "0";
		$desc_lvl = "Utente";
    }
    
    
    // Controllo il Nome Utente
    if(strlen($user) < 4 || strlen($user) > 12)
        die('Nome Utente troppo corto, o troppo lungo');
    // Controllo la Password
    elseif(strlen($pass) < 4 || strlen($pass) > 12)
        die('Password troppo corta, o troppo lunga');
    // Controllo l'email
    elseif(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $mail))
        die('Email non valida');
    // Controllo il nome utente non sia già occupato
    elseif(mysqli_num_rows(mysqli_query($dbh, "SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1)
        die('Nome Utente non disponibile');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysqli_num_rows(mysqli_query($dbh, "SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1)
        die('Questo indirizzo email risulta gi&agrave; registrato ad un altro utente');
	//Controllo del nome
	elseif(strlen($nome) < 4 || strlen($nome) > 20)
        die('Nome troppo corto, o troppo lungo');
	//Controllo del cognome
	elseif(strlen($cognome) < 3 || strlen($cognome) > 20)
        die('Cognome troppo corto, o troppo lungo');
  
    // Registrazione dell'utente nel database
    else
    {
        
        // Crypt della password per garantire una miglior sicurezza
        $pass = base64_encode($pass);
        
        // Query per l'inserimento dell'utente nel database
        $strSQL = "INSERT INTO utenti (user,pass,mail,lvl,nome,cognome,desc_lvl)";
        $strSQL .= "VALUES('$user', '$pass', '$mail', '$lvl', '$nome', '$cognome', '$desc_lvl')";
        mysqli_query($dbh, $strSQL) OR die("Errore 003, contattare l'amministratore ".mysqli_error());
		
        session_start();
		$_SESSION['user'] = $user;
        // Reindirizzo l'utente ad una pagina di conferma della registrazione
        header('Location: index.php');
        exit;
    }
}
?>

<form action="" method="post">
  <table width="100" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>User Name</td>
    <td><input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /></td>
  </tr>
  <tr>
    <td>Nome: *</td>
    <td><input name="nome" type="text" id="nome" value="Nome Reale" onfocus="if(this.value=='Nome Reale') this.value='';" /></td>
  </tr>
  <tr>
    <td>Cognome: *</td>
    <td><input name="cognome" type="text" id="cognome" value="Cognome Reale" onfocus="if(this.value=='Cognome Reale') this.value='';" /></td>
  </tr>
  <tr>
    <td>Password: *</td>
    <td><input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /></td>
  </tr>
  <tr>
    <td>Email:</td>
    <td><input name="mail" type="text" id="mail" value="Em@il" onfocus="if(this.value=='Em@il') this.value='';" /></td>
  </tr>
  <tr>
    <td><input name="registra" type="submit" value="Registrati" /></td>
    <td>&nbsp;</td>
  </tr>
</table>

</form>


registrato.php
PHP:
<?php

session_start();

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registrazione Completa</title>
</head>

<body>
Registrazione completa! Benvenuto <?php echo $_SESSION['user']; ?><br />
<br />
<br />
<a href="index.php">Vai all'index</a><br />
</body>
</html>
 
Ultima modifica:

mateky

Utente Attivo
7 Feb 2011
36
0
0
ti faccio un esempio:
ti connetti a www.sito.it, e hai un index con "home-foto-ecc", una volta registrato e autenticato compaiono altre "funzioni", ad esempio, oltre a "home, foto, ecc" compare "tuo profilo" o altri contenuti che compaiono soltanto a chi è registrato. in che modo si può fare?
 

alankanz

Lupacchiotto
Membro dello Staff
MOD
18 Giu 2014
147
5
18
Roma
ti faccio un esempio:
ti connetti a www.sito.it, e hai un index con "home-foto-ecc", una volta registrato e autenticato compaiono altre "funzioni", ad esempio, oltre a "home, foto, ecc" compare "tuo profilo" o altri contenuti che compaiono soltanto a chi è registrato. in che modo si può fare?

molto semplicemente utilizzando la sessione di login

PHP:
if(isset($_SESSION['login']))
{
//SEZIONE CHE SI VEDE SOLO SE LOGGATI
}


esempio

PHP:
<div>
  <ul>
    <li><a href="index.php">Home</a></li>
    <li><a href="index.php?ID=film">Film</a></li>
    <li><a href="index.php?ID=serie">Serie TV</a></li>
    <?php
            if(isset($_SESSION['login']))
            {
     echo '<li><a href="index.php?ID=radio">Radio</a></li>';
            }
    ?>
  </ul>
</div>

questo script ti fa vedere il link a Radio solo se sei loggato


login.php

PHP:
<?php
// Includo la connessione al database
require('configurazioni/db.php');


// Se il modulo viene inviato...
if(isset($_POST['login']))
{
    session_start();
    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : '';    // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
        $user = addslashes($user);
        $pass = addslashes($pass);
    }
    
    // Crypto la password e la confronto con quella nel database
    $pass = base64_encode($pass);

    // Controllo l'utente esiste
    $query = mysqli_query($dbc, "SELECT id FROM utenti WHERE user = '$user' AND pass = '$pass' LIMIT 1");
    
    // Se ha trovato un record
    if(mysqli_num_rows($query) == 1)
    {
        // prelevo l'id dal database
        $login = mysqli_fetch_array($query);
        $permessi = mysqli_query($dbc, "SELECT lvl FROM utenti WHERE user = '$user'");
		$descrizione_livello = mysqli_query($dbh, "SELECT desc_lvl FROM utenti WHERE user = '$user'");
		$chiamalo = mysqli_query($dbc, "SELECT nome FROM utenti WHERE user = '$user'");
		$lvl = mysqli_fetch_array($permessi);
		$desc_lvl = mysqli_fetch_array($descrizione_livello);
		$nome = mysqli_fetch_array($chiamalo);
		
        // Creo una variabile di sessione
        $_SESSION['login'] = $login['id'];
		$_SESSION['user'] =  $nome['nome'];
        $_SESSION['lvl'] = $lvl['lvl'];
		$_SESSION['desc_lvl'] = $desc_lvl['desc_lvl'];
		$_SESSION['errore'] = '';
		$_SESSION['nome'] = $nome['nome'];

// SETTO L'IP NEL DATABASE

$IP = $_SERVER['REMOTE_ADDR'];
$strSQL = "UPDATE utenti SET IP= '$IP' WHERE user= '$user'";
mysqli_query($dbc, $strSQL) OR die("Errore 003, contattare l'amministratore ".mysqli_error());
        

	mysqli_close($dbc);
        // reindirizzo l'utente
        header('Location: index.php');
        exit;
		
    }
    // se non esiste da l'errore
    else
	session_destroy();
        $_SESSION['errore'] = 'Nome Utente o Password errati';
        mysqli_close($dbc);
		 header('Location: index.php');
        exit;
}
?>
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
T Creazione di un Sito Web con Java o con Applicazioni? Java 0
D [RISOLTO]domande varie su creazione sito con php, mysql e phpmyadmin PHP 42
R Creazione sito con Dreamweaver HTML e CSS 9
P Offro creazione sito web con wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
B Creazione sito con videoconferenze, report, db appuntamenti fra sedi differenti PHP 9
P Creazione sito con immagini e video CMS (Content Management System) 4
Danilo82 Problema con sito web in fase di creazione HTML e CSS 3
N Creazione sito web senza Partita IVA (Era: mettersi in regola) Leggi, Normative e Fisco 1
D Creazione sito e-commerce WP CMS (Content Management System) 0
A Consiglio per creazione sito web CMS (Content Management System) 1
S CREAZIONE DI SITO PER CORSI DI FORMAZIONE WordPress 3
E Creazione di un sito di news PHP 16
S Scelta software/cms per creazione sito Webdesign e Grafica 6
R Creazione sito eccomerce privato. Offerte e Richieste di Lavoro e/o Collaborazione 2
D Creazione sito Offerte e Richieste di Lavoro e/o Collaborazione 0
D CREAZIONE E GESTIONE SITO E-COMMERCE Offerte e Richieste di Lavoro e/o Collaborazione 2
C [WordPress] Retribuzione creazione Sito Web vetrina Discussioni Varie 3
Store creazione barra search sito web Presentati al Forum 3
F Info aws ed ec2 per creazione sito vendita orodotti digitali Server Dedicati e VPS 0
Web93 Creazione spedizione a pezzo - sito wordpress woocommerce WordPress 2
Tonynox Creazione Sito Web - Dubbi e perplessità su prima esperienza Domini 6
primis Creazione sito Offerte e Richieste di Lavoro e/o Collaborazione 4
S Offro creazione sito- ottimo prezzo Offerte e Richieste di Lavoro e/o Collaborazione 0
TheGamer [offro] Creazione e miglioramento sito Wordpress, prezzi modici! Offerte e Richieste di Lavoro e/o Collaborazione 0
J Creazione di app per IOS tramite sito. Sviluppo app per iOS 1
M Creazione sito per vendere siti Guadagnare col Sito 0
F [CERCO] Collaboratore per creazione sito web di exchange social Offerte e Richieste di Lavoro e/o Collaborazione 0
P [RETRIBUITO] per creazione sito e-commerce Offerte e Richieste di Lavoro e/o Collaborazione 4
0 Cercasi web developers per creazione sito dinamico di un videogioco di carte online Offerte e Richieste di Lavoro e/o Collaborazione 0
A [CERCO]Webmaster per creazione sito Offerte e Richieste di Lavoro e/o Collaborazione 6
F Aiuto creazione sito web HTML e CSS 2
T Info creazione sito bilingua WordPress 10
S creazione sito Joomla 0
C [Cerco Collaboratore/Socio] esperto Wordpress per creazione sito Freelancer Offerte e Richieste di Lavoro e/o Collaborazione 0
B Alcuni chiarimenti sulla creazione di un sito web (Copyright e affiliazioni) Leggi, Normative e Fisco 0
P creazione sito fantacalcio PHP 3
A Cercasi webmaster/designer per creazione sito Offerte e Richieste di Lavoro e/o Collaborazione 1
A Creazione sito web:quale CMS scegliere? CMS (Content Management System) 5
Z Uso di template per creazione sito Discussioni Varie 2
R Indicazioni hosting per creazione Sito Hosting 4
T Cerco web master per creazione sito (relativo alla facoltà di scienze statistiche) Offerte e Richieste di Lavoro e/o Collaborazione 3
R richiesta aiuto da neofita per creazione sito web HTML e CSS 1
C Creare logo per un sito web [era: Aiuto per creazione logo] Webdesign e Grafica 2
S Creazione layout (era: Creazione tema per sito in php) HTML e CSS 2
F Csm per creazione sito catalogo per location eventi CMS (Content Management System) 1
K Creazione di un sito Flash 12
T Cerco Web master per aiuto nella creazione di sito web flash Offerte e Richieste di Lavoro e/o Collaborazione 2
M aiuto creazione sito PHP 4
P joomla: visualizzazione webcam dopo pagamento [era:Creazione sito particolare. Aiuto] Joomla 5
A Info creazione sito web Hosting 2

Discussioni simili