Pagina 3 di 3 PrimaPrima 123
Risultati da 21 a 22 di 22

Discussione: SESSION_ID ovvero pagina personale !

  1. #21
    iperboreo è offline Utente del Forum
    Data Registrazione
    Jun 2012
    Messaggi
    125
    Ciao CRIRIC, scusami ma ho provato a fare seguendo l'esempio che mi hai scritto, ma non mi funziona, ho rifatto tutto da zero, creato un login, la verifica, tabella e database, ma proprio non va, ho 2 utenti, e ho chiesto con una query di estrarre il nome dell'utente loggato, ma non mi estrae nulla.
    Se sei sicuro che il tuo esempio funziona è possibile che non sia compatibile con il mio file di verifica.php?
    grazie ancora






    Citazione Originariamente Scritto da criric Visualizza Messaggio
    E' li che devi creare la sessione, dopo aver fatto la query per vericare il dati di login metti l'id in sessione

    Codice PHP:
    if(query di login ha successo) {
      
    $_SESSION['idUtente'] = $row['idUtente'];

    nella pagina riservata puoi fare le query usando l'id in sessione
    Codice PHP:
    if(isset($_SESSION['idUtente'])) {
      
    $query "SELECT * FROM articoli WHERE idUtente = " $_SESSION['idUtente'] ;

    quando usi le sessioni a inizio pagina devi mettere
    Codice PHP:
    session_start(); 

  2. #22
    paperinik4 è offline Forumista DOC
    Data Registrazione
    May 2011
    Messaggi
    1,186

    Ciao

    Citazione Originariamente Scritto da alessandro1997 Visualizza Messaggio
    Ma non hai un login funzionante? La verifica dei dati dovrebbe venire eseguita lì. Se vuoi invece eseguirla in ogni pagina per vedere se i valori in sessione corrispondono ancora a quelli dell'utente nel database (un amministratore potrebbe aver cambiato la password dell'utente nel frattempo) ti consiglio di creare una funzione che automatizzi il processo:
    Codice PHP:
    function checkUser($username$password)
    {
        
    // ottieni un'istanza di $pdo in qualche modo, come parametro della funzione
        // oppure usando l'iniezione delle dipendenze, ma evita le variabili globali

        
    $stm $pdo->prepare('SELECT * FROM users WHERE username = :username AND password = MD5(:password)');
        
    $stm->execute(array(
            
    ':username' => $username,
            
    ':password' => $password,
        ));

        return (
    $stm->rowCount() == 1);

    Quindi in cima alle tue pagine inserirai:
    Codice PHP:
    <?php
    if (!checkUser($_SESSION['username'], $_SESSION['password'])) {
        
    // onestamente qui sono indeciso se utilizzare 401 Unauthorized
        // oppure 403 Forbidden, vedi un po' tu
        
    header('HTTP/1.0 401 Unauthorized');
        
    header('Location: login.php');

        exit();
    }

    // ...
    ?>
    Ciao,

    Ho provato solo ora il tuo codice e mi da il seguente errore:

    Fatal error: Call to undefined function checkUser() in /volume1/web/utenti/fabio/provasessionialivelli/login.php on line 5


    Ti posto qua come ho fatto tante volte avessi sbagliato:

    checkUser.php

    Codice PHP:

    <?php
    require_once("connetti.php");

    function 
    checkUser($username$password)
    {
        
    // ottieni un'istanza di $pdo in qualche modo, come parametro della funzione
        // oppure usando l'iniezione delle dipendenze, ma evita le variabili globali

        
    $stm $pdo->prepare('SELECT * FROM utenti WHERE username = :username AND password = MD5(:password)');
        
    $stm->execute(array(
            
    ':username' => $username,
            
    ':password' => $password,
        ));

        return (
    $stm->rowCount() == 1);
    }  
    ?>
    login.php


    Codice PHP:

    <?php

    require_once("connetti.php");
    if(isset(
    $_POST['log'])){
     if (!
    checkUser($_SESSION['username'], $_SESSION['password'])) {
        
    // onestamente qui sono indeciso se utilizzare 401 Unauthorized
        // oppure 403 Forbidden, vedi un po' tu
        
    header('HTTP/1.0 401 Unauthorized');
        
    header('Location: login.php');

        exit();
    }


        
    }
    ?>

    <center>
    <h2>DIGITARE USERNAME & PASSWORD. PREMERE <a href="iscrizione.php"> QUI</a> </h2> 

    <form action= "<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <font face="Comic Sans MS">
    Username: <input type="text" name="username"  maxlength="30" size ="32"> <br /> <br />
    Password: <input type="password" name="password"  maxlength="12" size ="14"><br /><br />
    </font>
    <input type="submit" name="log" value="Loggati" />
    </center>
    </form>
    <!-- qui il tag center (obsoleto) era indentato col form -->
    </center> 
    </body>
    </html>
    Tante volte vedi se hai tempo di dargli un'occhiata te ne sarei grato.

Pagina 3 di 3 PrimaPrima 123

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •