• User Attivo

    Sessioni

    Ciao a tutti! Ho personalizzato il tutorial per login...adesso mi piacerebbe che nel documento che un utente scrive venisse in automatico la firma di chi lo compila (io e miei soci).
    Come devo fare? Metto nel documento.php dove voglio vedere a monitor la firma $session[id]; $session[nome]; $session[cognome];
    echo $session='nome'; eccetera...
    Devo far così?

    Grazie!


  • User Attivo

    [PHP]@session_start();
    $_SESSION["cognome_utente"] = $_POST["cognome_utente"];
    $_SESSION["nome_utente"] = $_POST["nome_utente"];
    $_SESSION["pass"] = $_POST["pass"];

    if(isset($_SESSION["cognome_utente"]) && isset($_SESSION["pass"]))
    echo "Ciao " . $_SESSION["cognome_utente"] . " (Password: " . $_SESSION["pass"] . ")";[/PHP]

    Così va bene?

    Mi dà tutte le variabili da definire...

    Grazie!


  • User

    Uhm... Si, in teoria fa quello che vuoi fare, ma mi viene da chiederti:

    Non è meglio estrarre i dati da un database e stamparli anzichè usare le sessioni?


  • User Attivo

    Con il SELECT intendi?


  • User

    Esattamente.


  • User Attivo

    Con il select non mi estrae niente...stò sbagliando qualcosa...


  • User

    Una volta effettuato il login, dovresti inserire nel database gli utenti, con una query insert e dopo estrarli con la select, se posti lo script ti do una mano...


  • ModSenior

    Ciao,

    Dovresti postare anche il form.


  • User Attivo

    Grazie! Allora questo è il tuo login.php

    [PHP]<?php
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['login']))
    {

    // Dati Inviati dal modulo
    $cognome_utente = (isset($_POST['cognome_utente'])) ? trim($_POST['cognome_utente']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $nome_utente = (isset($_POST['nome_utente'])) ? trim($_POST['nome_utente']) : ''; // 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()) {
    $cognome_utente = addslashes($cognome_utente);
    $nome_utente = addslashes($nome_utente);
    $pass = addslashes($pass);
    }

    // Crypto la password e la confronto con quella nel database
    $pass = md5($pass);

    // Controllo l'utente esiste
    $query = mysql_query("SELECT id FROM utenti WHERE cognome_utente = '$cognome_utente' AND nome_utente = '$nome_utente' AND pass = '$pass' LIMIT 1");

    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
    {
    // prelevo l'id dal database
    $login = mysql_fetch_array($query);

    // Creo una variabile di sessione
    $_SESSION['login'] = $login['id'];

    // reindirizzo l'utente
    header('Location: privata.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>

    <body>
    <form action="" method="post">
    <input name="cognome_utente" type="text" id="cognome_utente" value="COGNOME" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="nome_utente" type="text" id="nome_utente" value="NOME" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>[/PHP]

    La pagina "inserimento_dati.php" dove vorrei comparisse il cognome e nome di chi compila è questa:

    [PHP]
    $query="INSERT INTO inserimento_dati (
    accettato_da,
    cognome,
    nome)
    VALUES('" .
    addslashes ( $_POST['accettato_da'] ) . "', '" .
    addslashes ( $_POST['cognome'] ) . "', '" .
    addslashes ( $_POST['nome'] ) . "', '" . //tagliato codice...troppo lungo...ci sono altre voci...

    $risultato = mysql_query( $query ) or die ( "query '$query' fallita

    " . mysql_error() );

    while ( $inserimento_dati = mysql_fetch_array( $risultato ) )
    {

    echo "<table>
    <head>
    <style>
    table {
    border: solid 2px #000000;
    text-align: center;
    }
    td {
    solid 1px;
    color: Black;
    background: #F1EBAD;
    }
    </style>
    </head>

           <tr>
                
                  <td><b>ACCETTATO DA:  </b>  " . stripslashes($inserimento_dati['accettato_da']) . "</td></tr>
                <td><a href=\"accettazione2.php\">COGNOME " . stripslashes($inserimento_dati['cognome']) . "</a></td></tr>
                <td><b>NOME:</b>  " . stripslashes($inserimento_dati['nome']) . "</td></tr> //tagliato codice...per troppe voci
    

    [/PHP]

    Praticamente, ora dove c'è scritto ACCETTATO DA: scrivo manualmente cognome e nome, ma vorrei che lo scrivesse in modo automatico con le sessioni e autenticazioni.

    Questo è il form.html

    [HTML]<html>
    <head>
    <title>accettazione cliente</title>
    </head>

    <center><b><font size=5>ACCETTAZIONE</font></center></b><br>
    <form action="inserimento_dati.php" method="post" name="inserimento_dati">
    <input name="id" type="hidden" value="<?php echo $id;?>">
    <input type="hidden" name="id"><br><br>
    ACCETTATO DA:<input type="text" name="accettato_da"><br><br>
    COGNOME: <input type="text" name="cognome"><br><br>
    NOME: <input type="text" name="nome"><br><br>
    <br><br>

    <input type="submit" value="INVIA I DATI">

    </form>
    </body>
    </body>
    </html>[/HTML]

    Grazie!!! :wink3:


  • ModSenior

    Per mettere come value i dati attuali puoi fare cosi, ma devi rinominare il file form.html in form.php:
    [php]
    <?php
    if(isset($_SESSION['login']))
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));
    <html>
    <head>
    <title>accettazione cliente</title>
    </head>

    <center><b><font size=5>ACCETTAZIONE</font></center></b><br>
    <form action="inserimento_dati.php" method="post" name="inserimento_dati">
    <input name="id" type="hidden" value="<?php echo $id;?>">
    <input type="hidden" name="id"><br><br>
    ACCETTATO DA:<input type="text" name="accettato_da"><br><br>
    COGNOME: <input type="text" name="cognome" value="<?php echo $default['cognome_utente']; ?>"><br><br>
    NOME: <input type="text" name="nome" value="<?php echo $default['nome_utente']; ?>"><br><br>
    <br><br>

    <input type="submit" value="INVIA I DATI">

    </form>
    </body>
    </body>
    </html>
    [/php]


  • User Attivo

    Modificato. Faccio il login, entro nella pagina privata.php, clicco per compilare il form, ma non mi compila su accettato il mio nome e cognome...


  • ModSenior

    Se devi mettere nome e cognome di seguito devi fare cosi:
    [php]
    ACCETTATO DA:<input type="text" name="accettato_da" value="<?php echo $default['nome_utente'].' '.$default['cognome_utente']; ?>"><br><br>
    [/php]


  • User Attivo

    Che scemo è vero, senno il collegamento come lo faccio? 😄

    Però ora mi dà variabile da definire :mmm:


  • ModSenior

    Che variabile?


  • User Attivo

    Mi scrive dentro la casella "ACCETTATO DA" questo:

    Notice: Undefined variable: default in c:\programmi\easyphp1-8\www\inserimento_dati.php on line 23

    Notice: Undefined variable: default in c:\programmi\easyphp1-8\www\inserimento_dati.php on line 23

    La riga 23 è quella che abbiamo modificato.


  • ModSenior

    Ma la pagina l'hai messa cosi:
    [php]
    <?php
    if(isset($_SESSION['login']))
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));
    <html>
    <head>
    <title>accettazione cliente</title>
    </head>
    <body>
    <center><b><font size=5>ACCETTAZIONE</font></center></b><br>
    <form action="inserimento_dati.php" method="post" name="inserimento_dati">
    <input name="id" type="hidden" value="<?php echo $id;?>">
    <input type="hidden" name="id"><br><br>
    ACCETTATO DA:<input type="text" name="accettato_da" value="<?php echo $default['nome_utente'].' '.$default['cognome_utente']; ?>"><br><br>
    COGNOME: <input type="text" name="cognome" value="<?php echo $default['cognome_utente']; ?>"><br><br>
    NOME: <input type="text" name="nome" value="<?php echo $default['nome_utente']; ?>"><br><br>
    <br><br>

    <input type="submit" value="INVIA I DATI">

    </form>
    </body>
    </html>
    [/php]


  • User Attivo

    Ora me le dà su tutte e tre le caselle i notice...


  • ModSenior

    Ma nella pagina hai messo il controllo per vedere se sei loggato?
    Perchè se non sei loggato e quindi $_SESSION['login'] non è definita è normale dia notice.


  • User Attivo

    No, come faccio a mettere il controllo? Io ho fatto solo il normale login e sono entrato nella pagina privata...:bho:


  • ModSenior

    [php]
    <?php
    if(!isset($_SESSION['login']))
    {
    header('Location: /login.php');
    exit;
    }
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));
    <html>
    <head>
    <title>accettazione cliente</title>
    </head>
    <body>
    <center><b><font size=5>ACCETTAZIONE</font></center></b><br>
    <form action="inserimento_dati.php" method="post" name="inserimento_dati">
    <input name="id" type="hidden" value="<?php echo $id;?>">
    <input type="hidden" name="id"><br><br>
    ACCETTATO DA:<input type="text" name="accettato_da" value="<?php echo $default['nome_utente'].' '.$default['cognome_utente']; ?>"><br><br>
    COGNOME: <input type="text" name="cognome" value="<?php echo $default['cognome_utente']; ?>"><br><br>
    NOME: <input type="text" name="nome" value="<?php echo $default['nome_utente']; ?>"><br><br>
    <br><br>

    <input type="submit" value="INVIA I DATI">

    </form>
    </body>
    </html>
    [/php]