Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    14

    Problema con le sessioni (login)

    Salve a tutti

    avrei bisogno di un aiuto...

    Sto preparando per gli esami, è tutto pronto ma non funziona un particolare e non riesco a capire quale sia il problema.

    il mio intento era quello di visualizzare, una volta effettuato il login, anzichè il link 'login' un 'benvenuto [utente]'... questo ovviamente comporta un controllo all'inizio di ogni pagina che verifichi se il login è stato effettuato o no: se non è stato effettuato allora visualizza il link 'login'.

    Per fare questo ho utilizzato le sessioni, in particolare inserisco un 'session_start()' nella pagina di login. in ogni pagina, proprio all'inizio, prima di qualsiasi altra istruzione o tag, inserisco questo controllo:

    <?php

    session_start();
    $nome=$_SESSION["nome"];
    if($nome!=null)
    $controllo=1;

    ?>

    dopodichè va tutto il resto della pagina...

    Ma quando vado a caricare la pagina, se ancora non ho effettuato nessun login, mi da questo errore, e me lo visualizza proprio all'inizio della pagina:

    Notice: Undefined index: nome in C:\wamp\www\leavesdew\index.php on line 4

    la linea 4 è proprio quella nella quale assegno il valore di $_SESSION a $nome.

    nel corso della pagina mi da lo stesso identico errore per la medesima variabile perchè effettuo il controllo al momento della visualizzazione di login o del benvenuto.

    La cosa più strana è che ho passato ad un mio amico il file e a lui funziona correttamente... ho pensato 'è possibile che sia un problema di browser?' se lo provo cn exlorer, oltre a sballare tutto ovviamente, mi da lo stesso errore...

    Che può essere?!? sto impazzendo da una settimana e martedì 7 devo presentare il progetto all'esame orale.... chiedo il più immediato aiuto!!!

    grazie mille

    p.s. utilizzo il wamp server, e sqlyog x i database.. inoltre vi dico ke nil database fuunziona correttamente e, ovviamente, il campo che voglio visualizzare cn $_SESSION è Nome...

  2. #2
    cerchi di accedere a $_SESSION["nome"]; ma giustamente se la sessione non è ancora stata creata quella variabile non esiste.
    utilizza isset() per il controllo
    if(isset($_SESSION["nome"]))

    [edit]e al tuo amico funziona perchè avrà disattivato la visualizzazione dei warning, che sono si errori ma non gravi e possono essere (come in questo caso) ignorati. Naturalmente meglio scrivere codice corretto

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    14
    ottimo.. il primo errore è scomparso...

    xò è rimasto quello a metà pagina, cioè dove effettua il controllo sulla variabile '$controllo'...

    come posso risolverlo?

    ho pensato (forse azzardatamente ) ke potrei evitare il session_start all'inizio cn il relativo controllo isset() e metterlo direttamente nel punto in cui deve effettuare il controllo su '$controllo'... il codice di quel punto è questo:

    <?php

    if($controllo!=1)
    {
    echo'Login</div>
    <div id="theFormDiv">
    <form method="post" action="Login.php">
    <fieldset>

    ...... ecc.....

    In questo modo il mio intento era controllare se si fosse effettuato il login, se si allora impostavo $controllo=1... e quindi arrivato al punto sopracitato avrebbe effettuato il controllo su $controllo... si può ovviare come ho pensato io? oppure ho detto una grande eresia?!

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    14
    mi auto rispondo... SI.. ho detto una grande eresia..

    ho provato ma mi da una miriade di errori...

    mi rimane xò il problema del '$controllo'.... come faccio?!?

  5. #5
    Fai cosi :

    Nel file che ti fa il login potresti scrivere

    Codice PHP:
    session_start(); 
    $_SESSION['user'] = $user//tiri fuori l'user, ovviamente devi aver fatto una query nel database
    $_SESSION['logged'] = 1
    Poi in ogni pagina ( o dove ti pare a te ) puoi mettere :

    Codice PHP:
    <?php
    //se non sono loggato mi visualizza il link per il login
    if (!isset($_SESSION['logged'])) {  
    echo 
    "[url="iltuomodulodilogin"]Login[/url]";
    else { 
    echo <<<TAB
    Benvenuto $_SESSION['user']
    [url="iltuomodulodilogout"]Logout[/url];
    TAB;
    ?>
    Ho scritto velocemente, magari c'è qualche cosa fuori posto, cmq io di solito faccio cosi ..

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    14
    WUAAAAAAAAA!!!!!!!!

    mi da sempre errori diversi!!!

    ho fatto come fai tu sempre, ma ora mi da errore sull'ultimo echo, quello in cui visualizzerebbe il benvenuto... nn capisco... ho scritto così
    <?php
    ...
    ...
    else
    echo 'Benvenuto $_SESSION["nome"]'
    ;
    ?>

    una domanda: a ke serve il <<TAB ke metti tu?

  7. #7
    Cosa ti viene visualizzato ?

    Fai una cosa, postami il file che gestisce il login ( ed avvia la sessione ) e la pagina in cui vorresti che venisse visualizzato il messaggio, almeno tento di modificare direttamente quelle

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    14
    http://www.megaupload.com/?d=4K4SGWFB

    l'ho uppato cn megaupload visto ke qui ke mi fa postare solo immagini...

    grazie mille

  9. #9
    Potevi postare il codice direttamente qui
    Prova a fare cosi :


    Nel file login inserisci questo eliminando tutte le cose che ci sono tra "$ris" ed "else" :

    Codice PHP:
    $corrispondenze mysql_num_rows($ris);
    $r=mysql_fetch_array($ris);
    $nomechevogliovisualizzare $fetch['nome']; 

    if(
    $corrispondenze 1)
    {
     
        
    session_start();
        
    $_SESSION['logged'] = 1
        
    $_SESSION['nome']=$nomechevogliovisualizzare;
        
    header("location: index.php");

    Nel file index :

    Codice PHP:
    <?php
    //se non sono loggato mi visualizza il link per il login
    if(!isset($_SESSION['logged'])) 
    {  
    echo <<<Tab
        [url="#"]Login[/url]</div>
        <div id="theFormDiv">
        <form method="post" action="Login.php">
        <fieldset>
          <legend><font color="#FFFFFF">Inserisci</font></legend>
          <table>
            <tr><td><label id="label-first"><font size="2" color="#FFFFFF">Username</font></td><td colspan=2><input name="utente" type="text"></td></tr>
             <tr><td><label id="label-last"><font size="2" color="#FFFFFF">Password</font></td><td colspan=2><input name="password" type="password" ></td></tr>
             <tr><td><input type="submit" value="Invia" onClick="hideForm();"></td>
             <td><input type="button" value="Annulla" onClick="hideForm();"></td>
             <td align="left">[url="registrati.php"]<font color="#FFFFFF">Registrati</font>[/url]</td></tr>
           </table>
         </fieldset>
      </form>
      </div>
    Tab;
    }
    else {
    echo 
    "Benvenuto $_SESSION['nome']" ;
    }
    ?>

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    14
    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\wamp\www\leavesdew - prova\index.php on line 100

    ora mi da questo errore esattamente nell'index alla fine dell' else, prima della chiusura del php...
    nn capisco.. ho inserito e poi rimosso il ; , ho inserito e poi rimosso le graffe...


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.