Visualizzazione risultati 1 fino 15 di 15

Discussione: Creare una sessione PHP

  1. #1
    Guest

    Predefinito Creare una sessione PHP

    Ciao a tutti!Sto realizzando un browser game di calcio manageriale con PHP!
    Sono però ancora alle prime armi e dopo aver creato e reso funzionante registrazione e log in al gioco,il primo problema che sorge è quello di creare una sessione in modo che ogni utente che si loggerà al gioco visualizzerà i propri dati.
    Con l'aiuto di una guida ho creato questa sessione:

    Codice PHP:
    <?php
    session_start
    ();
    $id=$_SESSION['user'];

    $dbhost="localhost";
    $dbuser="beamanager";
    $dbpass="";
    $conn=mysql_connect($dbhost,$dbuser,$dbpass);
    $dbname="my_beamanager";
    mysql_select_db($dbname,$conn) or die("Erroe nella connessione");

    //tengo separata la query stringa dalla query, così e più facile individuare errori

    $query="SELECT * FROM squadre WHERE id='".$id."' LIMIT 1";
    $result = mysql_query($query) or die(mysql_error());


    $row = mysql_fetch_array($result);
    echo
    $row['team'] . " " . $row['manager'];
    echo
    "<br />";
    ?>
    Potete dirmi se ho sbagliato qualcosa o potete magari spiegarmi dove inserire questo codice nel caso sia giusto?

    Vi ringrazio anticipatamente!

    Damy

  2. #2
    Guest

    Predefinito

    Perfetto, ma ti consiglio di aggiungere un controllo isset per vedere se l'utente è loggato o meno, altrimenti, se l'utente non è loggato visualizza comunque la pagina

    Codice PHP:
    if (!isset($_SESSION['user'])) {
    header('location: LINK DEL REDIRECT');
    } else {
    continua il processo e fai quello che vuoi

  3. #3
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Diciamo che le regole principali da seguire sono tre, se devi passarti delle variabili da una pagina all'altra:

    1. Eseguire la funzione session_start() prima che il tuo script PHP produca qualsiasi output (inserirla come prima istruzione in assoluto della pagina è la soluzione migliore).

    2. Per impostare una variabile di sessione, usa la sintassi $_SESSION['nome_variabile'] = 'valore';

    3. Per utilizzare un valore salvato, procedi più o meno allo stesso modo (esempio echo $_SESSION['nome_variabile']; stampa una variabile di sessione).

    Un suggerimento nel tuo caso specifico: trattando dati di utenti ricordati di resettare le variabili di sessione quando questo esegue il logout. Si fa semplicemente scrivendo $_SESSION = array(); (in pratica, reinizializzi la sessione ad un array vuoto).

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Citazione Originalmente inviato da dementialsite Visualizza messaggio
    Un suggerimento nel tuo caso specifico: trattando dati di utenti ricordati di resettare le variabili di sessione quando questo esegue il logout. Si fa semplicemente scrivendo $_SESSION = array(); (in pratica, reinizializzi la sessione ad un array vuoto).
    Una domanda: io per effettuare il "logout" utilizzo la session_destroy()... E' più corretto fare l'assegnazione $_SESSION = array(); oppure eseguire la session_destroy() ?

    Grazie,

    Ciao!

  5. #5
    makingweb non è connesso Utente attivo
    Data registrazione
    30-06-2009
    Messaggi
    281

    Predefinito

    Se esiste una funzione apposita credo che si opportuna utilizzare quella anche perchè con $_SESSION = array(); tu non e che elimini le sessioni ma gli dai solo un valore vuoto

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Citazione Originalmente inviato da makingweb Visualizza messaggio
    Se esiste una funzione apposita credo che si opportuna utilizzare quella anche perchè con $_SESSION = array(); tu non e che elimini le sessioni ma gli dai solo un valore vuoto
    Sì, ma in caso di logout quale è la migliore?

    Ciao!

  7. #7
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    secondo me la soluzione migliore è:
    Codice PHP:
    session_start();
    $_SESSION = array();
    session_destroy();
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  8. #8
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Io penso che questo spieghi tutto:
    Citazione Originalmente inviato da php
    session_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie. To use the session variables again, session_start() has to be called.

    In order to kill the session altogether, like to log the user out, the session id must also be unset. If a cookie is used to propagate the session id (default behavior), then the session cookie must be deleted. setcookie() may be used for that.
    Ultima modifica di javascripter : 11-06-2010 alle ore 21.21.50

  9. #9
    makingweb non è connesso Utente attivo
    Data registrazione
    30-06-2009
    Messaggi
    281

    Predefinito

    Citazione Originalmente inviato da EuroSalute Visualizza messaggio
    secondo me la soluzione migliore è:
    Codice PHP:
    session_start();
    $_SESSION = array();
    session_destroy();

    a questo punto è inutile fare $_SESSION = array(); se poi la distruggi la sessione!

  10. #10
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Ma allora non leggi!
    session_destroy non cancella le variabili associate alle sessioni.
    Vedi l'esempio di php:
    Codice PHP:
    <?php
    // Initialize the session.
    // If you are using session_name("something"), don't forget it now!
    session_start();

    // Unset all of the session variables.
    $_SESSION = array();

    // If it's desired to kill the session, also delete the session cookie.
    // Note: This will destroy the session, and not just the session data!
    if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
    $params["path"], $params["domain"],
    $params["secure"], $params["httponly"]
    );
    }

    // Finally, destroy the session.
    session_destroy();
    ?>

  11. #11
    Guest

    Predefinito

    Grazie a tutti per i consigli,ora ho messo così,ma continua ad aprirmi il messaggio che ho inserito a print:

    Codice PHP:
    <?php
    session_start
    ();

    //connessione al database
    $dbhost="localhost";
    $dbuser="beamanager";
    $dbpass="";
    $conn=mysql_connect($dbhost,$dbuser,$dbpass);
    $dbname="my_beamanager";
    mysql_select_db($dbname,$conn) or die("Erroe nella connessione");

    //pagina
    $sql = mysql_query("SELECT * FROM squadre WHERE id='$id'");
    if(
    $_GET['id']){
    $id=$_GET['id'];
    var_dump($_GET['id']);

    }elseif(isset(
    $_SESSION['id'])){

    $id=$_SESSION['id'];
    var_dump($_SESSION['id']);

    }else{
    print
    "La pagina è soggetta a modifiche e momentaneamente non è accessabile.Ci scusciamo per il disagio.";
    exit();
    }

    $id = mysql_real_escape_string($id);
    $id = eregi_replace("'","",$id);
    $sql = mysql_query("SELECT * FROM squadre WHERE id='$id'");

    while(
    $row = mysql_fetch_array($sql)){

    $team = $row["team"];
    $manager = $row["manager"];
    $punti = $row["punti"];
    $livello = $row["livello"];
    $campionato = $row["campionato"];
    $cash = $row["cash"];

    }
    //chiudo while

    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <head>
    <title>Be A Manager - <?php print "$team";?></title>
    <link rel="stylesheet" type="text/css" href="layout_game.css" />
    </head>

    <body>
    <div id="container">
    <div id="header"><img src="logo.JPG"></div>
    <div id="banner"><a href="classifica.php"><img src="classifica1.png"></a></div>
    <div id="navigation">

    <ul>

    <li><a href="game_index.php">Home</a></li>
    <li><a href="news.php">News</a></li>
    <li><a href="messaggi.php">Messaggi</a></li>
    <li><a href="prima_squadra.php">Prima Squadra</a></li>
    <li><a href="primavera.php">Primavera</a></li>
    <li><a href="titolari.php">Titolari</a></li>
    <li><a href="modulo.php">Modulo</a></li>
    <li><a href="allenamenti.php">Allenamenti</a></li>
    <li><a href="staff.php">Staff</a></li>
    <li><a href="stadio.php">Stadio</a></li>
    <li><a href="campionati.php">Campionati</a></li>
    <li><a href="partite.php">Partite</a></li>
    <li><a href="trofei.php">Bacheca Trofei</a></li>
    <li><a href="compra.php">Compra Giocatori</a></li>
    <li><a href="vendi.php">Vendi Giocatori</a></li>
    <li><a href="proposte_fatte.php">Proposte Fatte</a></li>
    <li><a href="proposte_ricevute.php">Proposte Ricevute</a></li>
    <li><a href="/forum/index.php">Forum</a></li>
    <li><a href="modifica.php">Modifica</a></li>
    <li><a href="log_out.php">Disconnetti</a></li>

    </ul>
    </div>

    <div id="title">

    <table width="100%" border="0" cellpadding="5" cellspacing="0">
    <tr>
    <td width="100%" align="center">Home</td>
    </tr>
    </table>
    </div>

    <div id="content_1">



    <form action="" method="post" enctype="multipart/form-data" name="foto">

    <table align="left">
    <tr valign="baseline">
    <td nowrap align="right">Logo Squadra</td>
    <td><input name="userfile" type="file" id="foto"></td>
    </tr>
    <tr valign="baseline">
    <td nowrap align="right">&nbsp;</td>
    <td><input type="submit" value="Carica"></td>
    </tr>
    </table>
    <input type="hidden" name="MAX_FILE_SIZE" value="30000">
    </form>

    <table border="0">
    <tr>
    <td><?php print "$team";?></td>
    </tr>
    <tr>
    <td><?php print "$manager";?></td>
    </tr>
    <tr>
    <td><?php print "$punti";?></td>
    </tr>
    <tr>
    <td><?php print "$livello";?></td>
    </tr>
    <tr>
    <td><?php print "$campionato";?></td>
    </tr>
    <tr>
    <td><?php print "$cash";?></td>
    </tr>






    </table>
    </div>

    <div id="content_2">

    <center>
    <script type="text/javascript">
    //<![CDATA[
    document.write('<s'+'cript type="text/javascript" src="http://ad.altervista.org/js.ad/size=120X600/r='+new Date().getTime()+'"><\/s'+'cript>');
    //]]>
    </script>
    </center>
    </div>

    <div id="footer">
    <p>Be A Manager &copy; 2010.Tutti i diritti riservati.</p>
    </div>
    </body>
    Cosa ho sbagliato o dimenticato?

  12. #12
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Questa pagina la includi (require/include) con php?

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Questa pagina la includi (require/include) con php?
    No,questa pagina la re-indirizzo quando uno compie con successo il log in!

    -

    Vi faccio vedere le pagine così comprendete meglio! :)
    Ringrazio chiunque darà un'occhiata e mi aiuterà! :)

    verifica_log.php
    Codice PHP:
    <?php
    session_start
    ();
    $dbhost="localhost";
    $dbuser="beamanager";
    $dbpass="";
    $conn=mysql_connect($dbhost,$dbuser,$dbpass);

    $dbname="my_beamanager";
    mysql_select_db($dbname,$conn) or die("Erroe nella connessione");

    if(
    $_POST) {

    effettua_login();

    }

    else

    {

    mostra_form();

    }

    function
    mostra_form()

    {

    // mostro un eventuale messaggio

    if(isset($_GET['msg'])) {

    echo
    '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

    }

    }

    function
    effettua_login()

    {
    // recupero il nome e la password inseriti dall'utente
    $user = trim($_POST['user']);

    $pass = trim($_POST['pass']);

    // verifico se devo eliminare gli slash inseriti automaticamente da PHP

    if(get_magic_quotes_gpc()) {

    $user = stripslashes($user);

    $pass = stripslashes($pass);

    }

    // verifico la presenza dei campi obbligatori

    if(!$user || !$pass) {

    header("location:log_error.php");

    exit;

    }

    // effettuo l'escape dei caratteri speciali per inserirli all'interno della query

    $user = mysql_real_escape_string($user);

    $pass = mysql_real_escape_string($pass);

    // preparo ed invio la query
    $query = "SELECT * FROM iscritti WHERE nickname='$user' AND password='$pass'";
    $result = mysql_query($query);

    // controllo l'esito

    if (!$result) {
    die(
    "Errore nella query $query: " . mysql_error());

    }

    $record = mysql_fetch_array($result);


    if(!
    $record) {
    header("location:log_error.php");
    } else {
    session_start();
    $_SESSION['id'] = $record['id'];
    header("location:log_success.php");
    }
    }

    $query="SELECT * FROM squadre WHERE id_utente='$id'";

    ?>
    log_success.php
    Codice PHP:
    <?php
    session_start
    ();
    $_SESSION['id'] = $record['id'];

    $dbhost="localhost";
    $dbuser="beamanager";
    $dbpass="";
    $conn=mysql_connect($dbhost,$dbuser,$dbpass);
    $dbname="my_beamanager";
    mysql_select_db($dbname,$conn) or die("Erroe nella connessione");

    ?>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <title>Be A Manager Football Game Online Gratis</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <meta name="author" content="f.damy@hotmail.it" />
    <meta name="description" content="FTM" />



    <p>
    <center>
    <script type="text/javascript">
    //<![CDATA[
    document.write('<s'+'cript type="text/javascript" src="http://ad.altervista.org/js.ad/size=728X90/r='+new Date().getTime()+'"><\/s'+'cript>');
    //]]>
    </script>
    </center>
    </p>


    <link rel="stylesheet" href="touching.css" type="text/css" /></head><body>

    <div id="container">

    <img src="logo.JPG">

    <div id="outer">
    <div id="inner">


    <div id="menu">

    <ul>
    <center>
    <li><a href="index.php">Home</a></li>
    <li><a href="regolamento.php">Regolamento</a></li>
    <li><a href="chisiamo.php">Chi siamo</a></li>
    <li><a href="registrazione.php">Registrati</a></li>
    <li><a href="forum/index.php">Forum</a></li>
    </center>
    </ul>

    </div>

    </div>
    <div id="content">

    <p align="center">Connessione effettuata con successo!</p>
    <p>
    <p align="center"><a href="game_index.php?ID=".$id.">Vai al gioco.</a></p>


    <center>
    <script type="text/javascript">
    //<![CDATA[
    document.write('<s'+'cript type="text/javascript" src="http://ad.altervista.org/js.ad/size=728X90/r='+new Date().getTime()+'"><\/s'+'cript>');
    //]]>
    </script>
    </center>
    </div>
    game_index.php
    Codice PHP:
    <?php
    session_start
    ();
    $_SESSION['id'] = $record['id'];
    //connessione al database
    $dbhost="localhost";
    $dbuser="beamanager";
    $dbpass="";
    $conn=mysql_connect($dbhost,$dbuser,$dbpass);
    $dbname="my_beamanager";
    mysql_select_db($dbname,$conn) or die("Erroe nella connessione");

    //pagina
    $sql = mysql_query("SELECT * FROM squadre WHERE id='$id'");
    if(
    $_POST['id']){
    $id=$_POST['id'];
    var_dump($_GET['id']);

    }elseif(isset(
    $_SESSION['id'])){

    $id=$_SESSION['id'];
    var_dump($_SESSION['id']);

    }else{
    print
    "La pagina è soggetta a modifiche e momentaneamente non è accessabile.Ci scusciamo per il disagio.";
    exit();
    }

    $id = mysql_real_escape_string($id);
    $id = eregi_replace("'","",$id);
    $sql = mysql_query("SELECT * FROM squadre WHERE id='$id'");

    while(
    $row = mysql_fetch_array($sql)){

    $team = $row["team"];
    $manager = $row["manager"];
    $punti = $row["punti"];
    $livello = $row["livello"];
    $campionato = $row["campionato"];
    $cash = $row["cash"];

    }
    //chiudo while

    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <head>
    <title>Be A Manager - <?php print "$team";?></title>
    <link rel="stylesheet" type="text/css" href="layout_game.css" />
    </head>

    <body>
    <div id="container">
    <div id="header"><img src="logo.JPG"></div>
    <div id="banner"><a href="classifica.php"><img src="classifica1.png"></a></div>
    <div id="navigation">

    <ul>

    <li><a href="game_index.php">Home</a></li>
    <li><a href="news.php">News</a></li>
    <li><a href="messaggi.php">Messaggi</a></li>
    <li><a href="prima_squadra.php">Prima Squadra</a></li>
    <li><a href="primavera.php">Primavera</a></li>
    <li><a href="titolari.php">Titolari</a></li>
    <li><a href="modulo.php">Modulo</a></li>
    <li><a href="allenamenti.php">Allenamenti</a></li>
    <li><a href="staff.php">Staff</a></li>
    <li><a href="stadio.php">Stadio</a></li>
    <li><a href="campionati.php">Campionati</a></li>
    <li><a href="partite.php">Partite</a></li>
    <li><a href="trofei.php">Bacheca Trofei</a></li>
    <li><a href="compra.php">Compra Giocatori</a></li>
    <li><a href="vendi.php">Vendi Giocatori</a></li>
    <li><a href="proposte_fatte.php">Proposte Fatte</a></li>
    <li><a href="proposte_ricevute.php">Proposte Ricevute</a></li>
    <li><a href="/forum/index.php">Forum</a></li>
    <li><a href="modifica.php">Modifica</a></li>
    <li><a href="log_out.php">Disconnetti</a></li>

    </ul>
    </div>

    <div id="title">

    <table width="100%" border="0" cellpadding="5" cellspacing="0">
    <tr>
    <td width="100%" align="center">Home</td>
    </tr>
    </table>
    </div>

    <div id="content_1">



    <form action="" method="post" enctype="multipart/form-data" name="foto">

    <table align="left">
    <tr valign="baseline">
    <td nowrap align="right">Logo Squadra</td>
    <td><input name="userfile" type="file" id="foto"></td>
    </tr>
    <tr valign="baseline">
    <td nowrap align="right">&nbsp;</td>
    <td><input type="submit" value="Carica"></td>
    </tr>
    </table>
    <input type="hidden" name="MAX_FILE_SIZE" value="30000">
    </form>

    <table border="0">
    <tr>
    <td><?php print "$team";?></td>
    </tr>
    <tr>
    <td><?php print "$manager";?></td>
    </tr>
    <tr>
    <td><?php print "$punti";?></td>
    </tr>
    <tr>
    <td><?php print "$livello";?></td>
    </tr>
    <tr>
    <td><?php print "$campionato";?></td>
    </tr>
    <tr>
    <td><?php print "$cash";?></td>
    </tr>






    </table>
    </div>

    <div id="content_2">

    <center>
    <script type="text/javascript">
    //<![CDATA[
    document.write('<s'+'cript type="text/javascript" src="http://ad.altervista.org/js.ad/size=120X600/r='+new Date().getTime()+'"><\/s'+'cript>');
    //]]>
    </script>
    </center>
    </div>

    <div id="footer">
    <p>Be A Manager &copy; 2010.Tutti i diritti riservati.</p>
    </div>
    </body>
    Ultima modifica di andreafallico : 13-06-2010 alle ore 12.10.26 Motivo: Usa il tasto Edita

  14. #14
    Guest

    Predefinito

    Scusate ragazzi se vi disturbo ancora,forse quello che sbaglio è il valore che do alla variabile
    $_SESSION['id'] ?
    Scusate ancora so che queste per voi sono cose banali,ma sto ancora imparando! :)

  15. #15
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Ho dato una rapida occhiata al tuo codice e di "cose un po' strane" ce ne sono due:
    - la prima, nel file verifica_log.php, è il fatto che chiami di nuovo la funzione session_start() quando il login ha successo
    - la seconda, il fatto che "riassegni" la variabile $_SESSION['id'] all'inizio degli altri file: per qualche motivo, scusa? Una volta che hai mantenuto la sessione con la chiamata a session_start(), puoi tranquillamente utilizzare i valori contenuti, ma ha decisamente più senso se stanno a destra dell'assegnamento (e non a sinistra, dove verrebbero sovrascritti... nel tuo caso, con chissà che cosa, visto che $record non è definita).

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •