Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Sessioni e file di login

    Ragazzi sto creando una piccola applicazione e mi sono bloccato alle sessioni..
    vi schiarisco le idee....
    un piccolo script che crea tabelle su un database mysql e inserisce i dati per il primo login
    una pagina iniziale (index.php) che include a sua volta pagine script tipe conn.php (per la connessione) header.php (la pagina principale) e footer.php (la fine)
    ora nella pagina principale (header.php) ho creato un piccolo form che è questo qui di seguito :

    <ul>
    <form method="post" action="controllo_utente.php">
    [*] <input type="text" name="email" maxlenght="255" value="">
    [*]<input type="password" name="password" maxlenght="50">
    [*]<input type="submit" name="action" value="Login">

    </form>[/list]

    Come potete vedere il form fa riferimento ad un altra pagina chiamata controllo_utente.php
    quest'ultima verifica e crea la sessione ve la posto

    <?php
    #Script che si occupa del controllo degli utenti
    require_once 'conn.php';
    require_once 'http.php';

    #Controllo
    if (isset($_REQUEST['action'])) {
    switch ($_REQUEST['action']) {
    #Dopo aver effettuato il controllo della provenienza si effettua il caso x il login
    case 'Login':
    if (isset($_POST['email']) and isset ($_POST['password']))
    {
    $seleziona = "SELECT id_utente, livello_accesso " .
    "FROM utenti " .
    "WHERE email='" . $_POST['email'] . "' " .
    "AND password='" . $_POST['password'] . "'";
    $esegui = mysql_query($seleziona, $connetti) or die ('Impossibile ricavare le informazioni dell utente nel nostro database');

    if ($row = mysql_fetch_array($esegui)) {
    session_start();
    $_SESSION['id_utente'] = $row['id_utente'];
    $_SESSION['livello_accesso'] = $row['livello_accesso'];
    $_SESSION['nome'] = $row['nome'];
    }
    }
    redirect ('index.php');
    break;
    #Caso per effettuare il logout nel caso fosse avvenuto il login
    case 'Logout' :
    session_start();
    session_unset();
    session_destry();
    redirect ('index.php');
    break;
    #Caso per creare un account nel caso non si è registrato ad E-Core
    case 'Crea account':
    #Controlla se tutti i campi del form sono stati riempiti e se la password piu conferma password sono uguali
    if (isset($_POST['nome'])
    and isset ($_POST['email'])
    and isset($_POST['livello_accesso'])
    and isset($_POST['password'])
    and isset($_POST['password2'])
    and $POST['password'] == $_POST['password2'])
    #Una volta controllate le variabili si inseriscono i dati nel database
    {
    $inserisci = "INSERT INTO utenti (email, nome, password) " .
    "VALUES (' ".$_POST['email'] . " ' , ' " . $_POST['nome'] . " ' , ' " . $_POST['password'] . " ' ) ";
    $esegui = mysql_query($inserisci, $conn) or die ('Impossibile creare l account nel nostro database');
    #Impostiamo le variabili della sessione
    session_start();
    $_SESSION['id_utente'] = mysql_insert_id($connetti);
    $_SESSION['livello_accesso'] = 1;
    $_SESSION['nome'] = $_POST['nome'];
    }
    redirect ('index.php');
    break;
    }
    }
    ?>
    Ora quando vado ad aprire sul browser e metto nei due input (email, password) avvio senza problemi ma non mi da nessun risultato.
    Nel senso che io nell'header ho la verifica se la sessione è stata avviata in questo modo <?php if (isset ($_SESSION['username'])) {echo ' Bentornato: ' . $_SESSION['username']; }else{echo 'Utente Anonimo'; include 'login.php';} ?>
    La strana cosa che non mi restituisce nessun tipo di errore... ma la sessione me la restituisce sempre negativa come posso risolvere????
    Il potere logora chi non lo ha!

  2. #2
    il session_start dovresti metterlo all'inizio della pagina.
    E' la prima cosa da scrivere dopo <?php

  3. #3
    non capisco dove devo sistemarla la variabile session_start(); visto che l'ho messa nell'index, nell'header ma mi fa sempre lo stesso strano comportamento...
    Il potere logora chi non lo ha!

  4. #4
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    Originariamente inviato da Ext2
    non capisco dove devo sistemarla la variabile session_start(); visto che l'ho messa nell'index, nell'header ma mi fa sempre lo stesso strano comportamento...
    Originariamente inviato da Haldir
    il session_start dovresti metterlo all'inizio della pagina.
    E' la prima cosa da scrivere dopo <?php

  5. #5
    All'inizio della pagina, non deve essere ripetuta più volte...

  6. #6
    ho risolto e non era come dicevi tu... cmq ti ringrazio lo stesso...

    mancava il valore nome passato dalla pagina login.php!
    Il potere logora chi non lo ha!

  7. #7
    Non so se te ne sei gia accorto ma qui:
    Codice PHP:
    session_destry(); 
    hai dimenticato una "o".
    Lordras

  8. #8
    si me ne ero accorto cmq grazie lo stesso
    Il potere logora chi non lo ha!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    24
    session_start() non è una variabile è un comando (funzione) che aggrega gli array temporanei registrati nella VAR GLOBALE $_SESSION che distruggi con session_destroy() o scadono se setti il time nel COOKIE obbligatorio lato client.
    Una curiosità e scusa l'ignoranza ma ho visto che usi spesso redirect() ma è un comando php?
    Forse è meglio se implementi <? header("location: http://.........."); ?>. Ti potrebbe dare stesso problema di header associato alla sessione. In testa di pagina apri prima la sessione poi header.
    ciao
    chicco

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.