Visualizzazione dei risultati da 1 a 7 su 7

Discussione: problema sessioni php

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    82

    problema sessioni php

    Nel mio sito internet nella home page ho un frame in cui gli utenti registrati inserendo la propria userneme e password possono accedere ad un area privata. Per fare in modo che alle pagine private non ci possano accedere semplicemente scrivendo l'url completa (tipo www.nomesito.it/paginaprivata.php ) ho inserito una sessione...in particolare ho il seguente codice:

    <?
    session_start();
    $num_utente = session_id();
    session_register("id_utente","password");
    ?>


    <html>
    <body bgcolor="#3366ff">
    <form action="privata.php" method="post">

    <center>


    Nome utente:


    <input type="Text" name="id_utente" cols="40">

    Parola d'ordine:


    <input type="password" name="password" cols="40">




    <input type="submit" name="submit" value="Entra">

    </center>
    </form>
    </body>
    </html>

    ma nn rieco a capire xche gli utenti riescono ugualmente ad accedere alle pagine private!!
    Forse devo aggiungere altro codice nelle pagine private?

    Un grazie in anticipo!!!!!!

  2. #2
    Ciao furbante!
    Con il codice
    Codice PHP:
    <?
    session_start
    ();
    $num_utente session_id();
    session_register("id_utente","password");
    ?>
    tu avvii una sessione, prendi l'id che le è stato assegnato e lo salvi qualcosa che prima non esisteva nemmeno in forma di variabile (a quanto pare)...
    Gli utenti riescono ad accedere anche alle pagine protette perchè non hai imposto nessun controllo per vedere se chi visita la pagina è loggato oppure no (apri ogni volta una sessione e ci scrivi dentro qualcosa, ma non controlli mai se c'era scritto qualcosa prima).
    Se posso permettermi qualche consiglio, al posto di sessio_register() utilizza una scrittura del tipo
    Codice PHP:
    $_SESSION['id_utente']=$variabileconidutente;
    $_SESSION['password']=$variabileconpasswordutente
    di modo che hai tutte le variabili salvate nell'array globale $_SESSION[].
    Poi per fare il controllo, dopo aver avviato la sessione con session_start() fai una cosa del tipo:
    Codice PHP:
    if(isset($_SESSION['id_utente']) AND isset($_SESSION['password']))
    {
       
    //Visualizza la pagina
    }
    else
    {
      
    //Visualizza un form di login o un messaggio di errore

    E' un metodo semplice ma efficace. Se qualcuno più esperto ha qualche consiglio migliore è ovviamente ben accetto!

    Ciaooo

    P.s.(Quel mio consiglio è piuttosto importante poichè session_register() è una funzione che veniva utilizzata nelle vecchie edizioni di php. Guarda il manuale su www.php.net per qualcosa di più chiaro!)
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    82
    Grazie tante iraiscoming223
    il tuo suggerimento oltre ad essere utile è anche giusto...infatti cosi facendo nn si accede alle pagine private....solo che ora il problema è che quando un utente si logga esce una schermata bianca invece di far vedere la pagina html.... :master:

    E' molto strano ma se avessi qualche altro consiglio utile te ne sarei molto grato!!

    Tanks!!

  4. #4
    uhm... aspe tu hai fatto un "if" come ti ho suggerito io ma dove ho scritto "//Visualizza la pagina" hai inserito il codice html per visualizzare la pagina dopo il login, giusto?
    Se è così prova a controllare riga per riga (o se hai il log del server - Apache di solito lo fa) dove si impunta il compilatore: di solito quando fallisce qualche funzione o c'è un ciclo infinito o quant'altro tende a fermarsi e a mandare la pagina in timeout.

    Se può esserti d'aiuto, io utilizzo una piccola funzione che scrive su file tutto quello che viene fatto (la richiamo dopo i passaggi più importanti dello script):
    Codice PHP:
     function debug($line$script$message)

    {

      
    $fp fopen("debug.log""a"); // Just for writing (appending) - no reading required

      
    $content "($script) Linea: " $line " -- " $message "\n";

      
    fwrite($fp$content);

      
    fclose($fp);


    Dopo le operazioni più grandi scrivo tipo
    Codice PHP:
    debug(__LINE____FILE__"Ho fatto questa cosa"); 
    Vedi se ti può essere d'aiuto

    Ciaooo
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    82
    Grazie iraiscoming223!!!!
    Ora funziona....oggi in ufficio x la fretta forse ho fatto un piccolo errore...ma ora va bene...le cose bisogna farle con calma!
    Pero il problema ora è un altro...che un utente una volta che si è loggato puo rientrarci sempre....è come se le variabili di sessione nn vengono cancellate...che ne dite?

  6. #6
    mai sentito parlare di cookie??
    Il server te li imposta in automatico per la sessione. O li cancelli session_destroy(id_della_sessione) e li unsetti
    Codice PHP:
     unset($_SESSION['id_utente']);
    unset(
    $_SESSION['password']); 
    oppure boh...
    io farei così... prova un po'...
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    82
    Si si hai ragione...infatti io quando un utente acede all'area privata gli viene mostrato un pulsante "lugout" che cliccandolo richiama un file.php col codice:

    <?
    session_destroy($num_utente);
    unset($_SESSION['id_utente']);
    unset($_SESSION['password']);
    include ("index.php");
    ?>

    ma purtroppo mi sembra che nn mki cancelli ne le variabili di sessione ne la sessione stessa! ...forse questo codice andrebbe messo in un altra parte??

    Purtroppo su queste sessioni in php nn ho trovato guide molto utili su internet...forse qalcuno di voi saprebbe indicarmi qualche buon sito da cui informarmi!!

    Grazie ancora!

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.