Visualizzazione risultati 1 fino 4 di 4

Discussione: Area riservata con php e mysql

  1. #1
    onlinepaid non è connesso Utente AlterBlog
    Data registrazione
    26-09-2016
    Messaggi
    14

    Question Area riservata con php e mysql

    Salve,
    non sono molto pratico in php e vorrei creare un'area riservata per ogni utente che effettua l'accesso al sito.
    ho già creato il login e iscrizione.
    Mi servirebbe tipo una pagina con un riepilogo delle pratiche aperte dall'utente e in cui l'utente possa creare le pratiche il tutto se possibile con collegamento a mysql.
    GRAZIE MILLE A TUTTI QUELLI CHE RISPONDONO.
    Login:
    Codice PHP:
    <?php
    # inizializzazione della sessione
    @session_start();
    # inclusione del file di funzione
    @include_once 'functions.php';
    # istanza della classe
    $obj = new Iscrizioni();
    # chiamata al metodo per la verifica della sessione
    if ($obj->verifica_sessione())
    {
    # redirect in caso di esito positivo
    @header("location:area_riservata.php");
    }
    # chiamata al metodo per l'autenticazione
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $login = $obj->verifica_login(htmlentities($_POST['email_o_nome_utente'], ENT_QUOTES), htmlentities($_POST['password'], ENT_QUOTES));
    # controllo sull'esito del metodo
    if ($login) {
    # redirect in caso di esito positivo
    @header("location:area_riservata.php");
    }else{
    # notifica in caso di esito negativo
    echo 'I dati indicati non sono corretti.';
    }
    }
    # form per l'autenticazione
    ?>
    <!DOCTYPE html>
    <html>
    <style>
    form {
    border: 3px solid #f1f1f1;
    }

    input[type=text], input[type=password] {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    box-sizing: border-box;
    }

    button {
    background-color: #4CAF50;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    cursor: pointer;
    width: 100%;
    }

    button:hover {
    opacity: 0.8;
    }

    .cancelbtn {
    width: auto;
    padding: 10px 18px;
    background-color: #f44336;
    }

    .imgcontainer {
    text-align: center;
    margin: 24px 0 12px 0;
    }

    img.avatar {
    width: 20%;
    border-radius: 50%;
    }

    .container {
    padding: 16px;
    }

    span.psw {
    float: right;
    padding-top: 16px;
    }

    /* Change styles for span and cancel button on extra small screens */
    @media screen and (max-width: 300px) {
    span.psw {
    display: block;
    float: none;
    }
    .cancelbtn {
    width: 100%;
    }
    }
    div {margin-left: 20px;}
    p {margin-left: 10%;}
    img {margin-left: auto;}
    </style>
    <body>

    <h2>Login Form</h2>

    <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="form_autenticazione" name="autenticazione">
    <div class="imgcontainer">
    <img src="https://www.w3schools.com/howto/img_avatar.png" alt="Avatar" class="avatar">
    </div>

    <div class="container">
    <label><b>Username</b></label>
    <input type="text" name="email_o_nome_utente" placeholder="Username" /><br/>

    <label><b>Password</b></label>
    <input type="password" name="password" id="password" placeholder=Password /><br/>

    <button type="submit" name="invio_dati">Invia</button><br/><br/>
    <input type="checkbox" checked="checked"> Remember me
    <label><br><a href="iscrizione.php" title="Registrazione">Se non sei registrato puoi farlo adesso</a></label>
    </div>

    <div class="container" style="background-color:#f1f1f1">

    <button type="button" class="cancelbtn">Cancel</button>
    <span class="psw">Forgot <a href="mailto:services@youneshaoufadi.com?&subject=Recupero%20password&body=Nome utente:<br>%20ps:spedire con l'email usata per registrati nel sito o scrivila qui:%20">Password</a></span>
    </div>
    </form>

    </body>
    </html>
    Functions
    Codice PHP:
    <?php
    # inclusione del file di configurazione
    @include_once 'config.php';
    # definizione della classe che conterrà i metodi per la gestione degli iscritti
    class Iscrizioni {

    # definizione del costruttore
    public function __construct()
    {
    # istanza della classe per la connessione al database
    $data = new DATA_Class();
    }

    # metodo per la registrazione
    public function registra($nome_reale, $nome_utente, $password, $email)
    {
    # tolgo eventuali spazi vuoti
    $nome_reale = trim($nome_reale);
    $nome_utente = trim($nome_utente);
    $password = trim($password);
    # verifico che il modulo sia stato compilato
    if (strlen($nome_reale) == 0 || strlen($nome_utente) == 0 || strlen($password) == 0) return false;
    else {
    # cifratura della password
    $password = @sha1($password);
    # confronto degli input con i dati contenuti in tabella
    $query = @mysql_query("SELECT id_utente FROM iscritti WHERE nome_utente = '$nome_utente' OR email = '$email'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di corrispondenze prodotte dal confronto
    $conta = @mysql_num_rows($query);
    # se il confronto non genera corrispondenze..
    if ($conta == 0)
    {
    # ..si procede con la registrazione..
    $risultato = @mysql_query("INSERT INTO iscritti(nome_utente, password, nome_reale, email) VALUES ('$nome_utente', '$password','$nome_reale','$email')") or die('Errore: ' .mysql_error());
    return
    $risultato;
    }else{
    # ..altrimenti l'esito della registrazione sarà negativo
    return false;
    }
    }
    }

    # metodo per l'autenticazione
    public function verifica_login($email_o_nome_utente, $password)
    {
    # cifratura della password
    $password = @sha1($password);
    # confronto degli input con i dati contenuti in tabella
    $query = @mysql_query("SELECT id_utente FROM iscritti WHERE (email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente') AND password = '$password'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di una corrispondenza prodotta dal confronto
    $conta = @mysql_num_rows($query);
    # se il confronto genera una corrispondenza..
    if ($conta == 1)
    {
    # ..viene generata la sessione di login..
    $risultato = @mysql_fetch_object($query);
    $_SESSION['login'] = true;
    $_SESSION['id_utente'] = $risultato->id_utente;
    return
    true;
    }else{
    # ..altrimenti l'esito dell'autenticazione sarà negativo
    return false;
    }
    }

    # metodo per la visualizzazione del nome dell'utente loggato
    public function mostra_utente($id_utente)
    {
    # estrazione del nome reale sulla base dell'identificatore memorizzato in sessione
    $query = @mysql_query("SELECT nome_reale FROM iscritti WHERE id_utente = $id_utente") or die('Errore: ' . mysql_error());
    $risultato = @mysql_fetch_object($query);
    # stampa a video del nome reale dell'utente
    echo $risultato->nome_reale;
    }

    # metodo per il controllo sulla sessione
    public function verifica_sessione()
    {
    # il metodo restituisce l'informazione relativa alla sessione a patto che questa sia stata inizializzata
    if(isset($_SESSION['login']))
    {
    return
    $_SESSION['login'];
    }else{
    return
    false;
    }
    }

    # metodo per il logout
    # la sessione viene distrutta a seguito di uno specifico input dell'utente
    public function esci() {
    $_SESSION['login'] = FALSE;
    @
    session_destroy();
    }
    }
    ?>
    Ultima modifica di darkwolf : 10-06-2017 alle ore 21.01.43 Motivo: + [php] (migliora la lettura)

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Togli tutti gli operatori di soppressione degli errori (le @): se si verifica un errore tu vuoi che ti sia segnalato, in modo da poterlo correggere.

    Le funzioni mysql_* sono deprecate, sostituisci con PDO o mysqli (la versione procedurale di quest'ultimo è più simile al mysql a cui sei già abituato).

    Non usare sha1 per "cifrare" le password, non offre più nessuna reale sicurezza. Usa funzioni come crypt.

    Cura l'indentazione!

    Riguardo alla richiesta, se capisco bene hai bisogno di una pagina di riepilogo con l'elenco delle pratiche e di una pagina per la creazione di una nuova pratica.
    Per la pagina di riepilogo, basta leggere l'id dell'utente dalla sessione ed usarlo per recuperare dalla base di dati l'elenco delle sue pratiche, memorizzare queste ultime di un vettore e mostrarle secondo l'impaginazione che preferisci (ad esempio una lista o una tabella).
    Per la pagina di creazione, ti serviranno una pagina con un form ed una (potenzialmente sempre la stessa) per recuperare i dati ed inserirli nella base di dati.
    Se hai dubbi più specifici su qualcuno dei passaggi necessari, chiedi .

  3. #3
    onlinepaid non è connesso Utente AlterBlog
    Data registrazione
    26-09-2016
    Messaggi
    14

    Predefinito

    Ciao, grazie mille per i suggerimenti.
    Quello che non riesco a fare è proprio l'ultimo passaggio cioè collegare l'ID alle pratiche aperte e come creare lo script che permette di aprirle notificando me dell'apertura:
    Spiego meglio
    L'utente entra nella sua area riservata e ha bisogno di vedere lo stato della sua richiestao rimuoverla e inserirne altre come si può fare queste cose, è fattibile con php grazie mille della risposta.

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Innanzitutto è necessario avere, nella tabella che rappresenta le pratiche, un campo indicante l'id dell'utente a cui una pratica è associata.

    Fatto questo, recuperare tutte le pratiche diventa semplice:
    Codice PHP:
    $query = "SELECT * FROM pratiche WHERE id_utente = " . $_SESSION['id_utente'];
    (ovviamente sostituendo i nomi di tabelle e campi dell'esempio con quelli da te usati).

    Le query di inserimento e cancellazione vengono di conseguenza:
    Codice:
    INSERT INTO pratiche (id_utente, ...) VALUES(...);
    DELETE FROM pratiche WHERE id = ...;
    Per il resto si tratta poi di creare dei form, uno per l'apertura di una pratica, l'altro per la cancellazione (volendo basta un pulsante "cancella" accanto ad ogni pratica nell'elenco).

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •