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

    Presunto problema sessioni

    Salve a tutti, da poco sto sviluppando un browser game, ho creato i file di registrazione e login, tutti e due sono perfettamente funzionanti, il problema è che quando eseguo il login nella index, utilizzando il seguente codice:

    index.php

    Codice PHP:
    <?php
    session_start
    ();
    require(
    'configurazione.php'); 

    if(!isset(
    $_SESSION['log']))
    {
    $_SESSION['log'] = 0;
    }
    if(!isset(
    $_SESSION['username']))
    {
    $_SESSION['username'] = "Non Registrato";
    }

    // Ora controlliamo se $_SESSION['log']!=1, cioè se l'utente non è loggato
    if ($_SESSION['log'] != 1)
    {
    // Se non lo è procediamo come segue:
    if(isset($_POST['password']) && isset($_POST['username']))
    {
      
    $qry_pass mysql_real_escape_string(md5($_POST['password']));
      
    $qry_user mysql_real_escape_string($_POST['username']);
      
      
    $query "SELECT * " .
                
    "FROM utenti " .
                
    "WHERE username = '$qry_user' " .
                
    "AND password = '$qry_pass' " .
                
    "AND user_reg = 1 ";
      
    $results mysql_query($query) or die (mysql_error());

      if(
    mysql_num_rows($results) != 0)
      {
       
    $row mysql_fetch_array($results);
       
    $_SESSION['log'] = 1// utente loggato
       
    $_SESSION['username'] = $row['username'];
       
    $_SESSION['oro'] = $row['oro'];
       
    $_SESSION['livello'] = $row['livello'];
       
    $_SESSION['id'] = $row['id'];
       
    $_SESSION['ip'] = $row['ip'];
      }
    }
    }
    echo 
    "Utente on-line: [b]" $_SESSION['username'] . "[/b]

    "
    ;
    ?>


    <html>
    <head>
    <title>Home Page</title>
    <SCRIPT LANGUAGE="JavaScript">
    function ver()
       {
       for (i=0; i<document.forms[0].elements.length; ++i)
          if(document.forms[0].elements[i].value == "")
             {
             alert("Inserire username e password!");
             document.forms[0].elements[i].focus();
             return false;
             }
       return true;
       }
    </SCRIPT>
    </head>
    <body>



    <?php
    /*A seconda del valore contenuto in $_SESSION['log'] 0/1
    possiamo visulizzare alcune parti html piuttosto che altre.*/
    if ($_SESSION['log'] != 1)
    {
    ?>
    <form name="login" action="index.php" method="post" onSubmit="return ver();">
    Username

    <input name="username" type="text" size="15" maxlength="11">


    Password

    <input name="password" type="password" maxlength="8">


    <input type="submit" name="submit" value="Login">
    </form>


    </p>


    Non ti sei ancora registrato?</p>


    [url="registrazione.php"]Clicca qui e registrati subito![/url]</p>
    <?php
    }else {
        
    header("Location: vista.php");
        
    ?>

    <?php
    }
    ?>
    </body>
    </html>
    Come potete vedere se il login ha successo si passa alla pagina vista.php che contiente il seguente codice:

    Codice PHP:

    <?php session_start(); ?>


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    <SCRIPT LANGUAGE="JavaScript">
    function ver()
       {
       for (i=0; i<document.forms[0].elements.length; ++i)
          if(document.forms[0].elements[i].value == "")
             {
             alert("Inserire username e password!");
             document.forms[0].elements[i].focus();
             return false;
             }
       return true;
       }
    </SCRIPT>
    </head>



    <body>

    <?php
    require('configurazione.php'); 
    $_SESSION['username'] = $row['username'];
    if(!isset(
    $_SESSION['log']))
    {
    $_SESSION['log'] = 0;
    }
    else {
        
    $_SESSION['log'] = 1;
        
    }

    if(!isset(
    $_SESSION['username']))
    {
    $_SESSION['username'] = "Non Registrato";
    }

    if (
    $_SESSION['log'] = 1) { 
        
           
    $_SESSION['username'] = $row['username'];
    }
    ?>





    <div align='center'>[img]img/oro.png[/img][b]<?php echo $_SESSION['oro'?>[/b]</div>


    <div align='center'>[b]Livello: <?php echo $_SESSION['livello'?>[/b]</div>
    <div align='center'>[b]Username:<?php echo $_SESSION['username'?>[/b]</div>


    <div align='left'>[url="missione.php"]Missioni[/url][/b]</div>


    <form name="logout" action="logout.php" method="post" onSubmit="return ver();">
    <input type="submit" name="submit" value="Logout">
    </form>


    </body>

    </html>
    Qui vengono visualizzati l'oro che ogni giocatore possiede ed il livello (all'inizio uguali per tutti), il problema è che se provassi a visualizzare l'id, l'username o l'ip non me li farebbe vedere, perchè sono diversi da giocatore a giocatore. Il punto è questo, $_SESSION mostra soltanto i campi che tutti gli utenti hanno uguali cioè oro che parte da 1500 e livello in quanto tutti partono dal livello 1.

    Come posso fare in modo che vengano visualizzate anche username ecc. sempre mediante $_SESSION ?

    Grazie in anticipo e Buone Feste,

    marf

  2. #2
    ma nella pagina vista.php dove lo prendi l'array $row ????

    $_SESSION['username'] gia' viene valorizzato nell'index.php. L'azione che fai in vista.php ti azzera il contenuto. Evita di sovrascrivere e verra' stampato senza problemi.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ho provato a toglierlo, ma è sempre la stessa cosa, non scrive nè ip nè username nè id e nè qualunque altra cosa varia da utente ad utente...

    E' un fatto molto strano, ora la variabile $row si prende solo da index.php, non viene mai riassegnata in nessuna altra pagina, però continua a non mostrarmeli correttamente, anche se i valori come oro e livello che partono uguali per tutti gli utenti me li visualizza bene.

    Avete qualche idea ?

  4. #4
    Fai la seguente prova nella pagina vista.php

    Codice PHP:
    <?php 
    session_start
    (); 
    echo 
    "<pre>";
    print_r($_SESSION);
    ?>
    e vedi cosa ti stampa. Dovresti trovare tutte le variabili che hai inserito in index.php

    tutti i controlli che fai su $_SESSION nella pagina vista.php servono a ben poco. Dovresti solo assicurarti che l'utente sia autorizzato ad entrare nella pagina. Nel caso non lo fosse rimandalo all'index

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Se metto quel codice sembra che funzioni tutti, in quanto esce:

    Codice PHP:
    Array
    (
        [
    log] => 1
        
    [username] => marf
        
    [oro] => 1500
        
    [livello] => 1
        
    [id] => 39
        
    [ip] => 95.235.42.73

    Qui tutti i campi sono espressi il problema è che se per esempio faccio:

    Codice PHP:
    Username:<?php echo $_SESSION['username'?>
    Per stampare l'username dopo che un utente si è loggato non mi viene fuori niente, il chè è molto strano, dato che la sessione contiene tutto quello di cui c'è bisogno.

    Qui ho postato il nuovo codice di vista.php, nel caso qualcuno trovasse altri errori.

    Codice PHP:
    <?php
    session_start
    ();

    ?> 


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    <SCRIPT LANGUAGE="JavaScript">
    function ver()
       {
       for (i=0; i<document.forms[0].elements.length; ++i)
          if(document.forms[0].elements[i].value == "")
             {
             alert("Inserire username e password!");
             document.forms[0].elements[i].focus();
             return false;
             }
       return true;
       }
    </SCRIPT>
    </head>



    <body>

    <?php
    require('configurazione.php'); 
    ?>





    <div align='center'>[img]img/oro.png[/img][b]<?php echo $_SESSION['oro'?>[/b]</div>


    <div align='center'>[b]Livello: <?php echo $_SESSION['livello'?>[/b]</div>
    <div align='center'>[b]Username:<?php echo $_SESSION['username'?>[/b]</div>


    <div align='left'>[url="missione.php"]Missioni[/url][/b]</div>


    <form name="logout" action="logout.php" method="post" onSubmit="return ver();">
    <input type="submit" name="submit" value="Logout">
    </form>


    </body>

    </html>
    Grazie per gli aiuti forniti fino ad ora

    Ora scappo, domani mattina leggo le altre eventuali risposte, buona notte.

    marf

  6. #6
    prova a stampare l'array $_SESSION anche "DOPO" il require....

    non sapendo cosa ci sta' li dentro (ma a che ti serve?) ... potrebbe esserci del codice che ti fuma quelle variabili.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Se lo stampo dopo il require mi stampa tutti bene, in più funziona tutto, ma non penso che il problema sia in configurazione.php in quanto contiene solo le connessioni per il DB per ora.
    Comunque sembra andare tutto, se ci sono problemi vi tengo informati.

    Grazie

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.