Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Problemi con il login utente

    Ciao ragazzi sto cercando di fare la parte di login utente del sito solo che non riesco a far mantenere il fatto che l'utente si sia loggato anche se navigo nel sito.
    Es.: quando mi loggo e clicco sulla pagina index (sarebbe il logo) mi ritorna di nuovo la form di login... ho messo la sessione a tutte le parti... è inserito il form nella condizione di utente non loggato. Ho fatto un esempio che potete verere qui :
    myscript72.altervista.org/test/index.php

    username: demologin
    password: demologin

    posto il codice delle pagine

    index.php
    Codice PHP:
    <?php
        
    //Start session
        
    session_start();
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">

        <head>

            <title> New Document </title>
        </head>
        
            <body>

            <table width="800" height="600" border="1">
            <tr>
                <td height="100"><? include ('header.php')  ?></td>
            </tr>
            <tr>
                <td><? include ('body.php')  ?></td>
            </tr>
            <tr>
                <td height="60"><? include ('footer.php')  ?></td>
            </tr>
            </table>

            </body>
        
        </html>
    header.php

    Codice PHP:
    <?php
        
    //Start session
        
    session_start();
    ?>

    <table border="1" height="90">
    <tr>
        <td width="200" valign="top">[url="index.php"]index.php[/url]</td>
        <td width="400"></td>
        <td width="200" valign="top"><? include ('login.php')?></td>
    </tr>
    </table>
    login.php


    Codice PHP:
    <?php
        
        
    //Start session
        
    session_start();

        include(
    "db_vars.inc");

        
    //Sanitize the value received from login field
        //to prevent SQL Injection
        
    if(!get_magic_quotes_gpc()) {
            
    $username=mysql_real_escape_string($_POST['username']);
        }else {
            
    $username=$_POST['username'];
        }


        
    //Create query
        
    $qry="SELECT iduser FROM users WHERE username='$username' AND password='".md5($_POST['password'])."'";
        
    $result=mysql_query($qry);
        
    //Check whether the query was successful or not
        
    if($result) {
            if(
    mysql_num_rows($result)>0) {
                
    //Login Successful
                
    $member=mysql_fetch_assoc($result);
                
    $_SESSION['SESS_MEMBER_ID']=$member['iduser'];
                
    session_write_close();
                echo 
    "ciao $username";
            }else {

    ?>

    <form method="post" action="<? $PHP_SELF ?>">
    [b]Login utente[/b]


    Username:<input type="text" name="username" />

    Password:<input type="text" name="password" />


    <input type="submit" />
    </form>

    <?
            
    }
        }                                      
    ?>
    L'uomo che considera senza senso la propria vita e quella dei suoi simili, non è soltanto sfortunato ma è quasi squalificato per vivere.
    http://myscript72.altervista.org

  2. #2
    scrivi un valore in sessione che identifichi lo user, al rientro in index.php verifichi sia settato e salti l'inclusione del login.... esempio:

    Codice PHP:

    login.php

    $_SESSION['SESS_MEMBER_ID'] = $member['iduser']; 


    index.php

    <?php
        
    //Start session
        
    session_start();
        if(empty(
    $_SESSION['SESS_MEMBER_ID']) ) {
        
    // includi il login
        
    } else { // continui lo script o includi qualcosa d'altro
          
    }
     
    ?>
    avvisi generici....

    non mettere session_start() in pagine che includi dove la sessione e' gia' aperta in precedenza

    usa il tag php esteso <?php e non <?

    <? $PHP_SELF ?> non ti porta da nessuna parte. Se guardi l'HTML prodotto risulta vuoto. usa:
    <?php echo $_SERVER['PHP_SELF'] ?>

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

  3. #3
    ciao Piero.mac
    scusa ma non ho capito dove devo farlo... quello che dici tu c'è già nel file login.php


    Codice PHP:
    ............................
    //Check whether the query was successful or not
        
    if($result) {
            if(
    mysql_num_rows($result)>0) {
                
    //Login Successful
                
    $member=mysql_fetch_assoc($result);
                
    $_SESSION['SESS_MEMBER_ID']=$member['iduser'];
                
    session_write_close();
                echo 
    "ciao $username";
            }else {............. 
    L'uomo che considera senza senso la propria vita e quella dei suoi simili, non è soltanto sfortunato ma è quasi squalificato per vivere.
    http://myscript72.altervista.org

  4. #4
    certo che c'e' ma poi lo devi controllare per decidere se rimettere il login oppure andare avanti ... cosi' come' fai sei in loop index -> login -> index.php -> login -> index.php

    devi fare: index.php -> if no logged allora login else ok vai avanti......

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

  5. #5
    ciao ora funziona ma non so perchè perde la variabile che mi serve ($username) passando da una pagina all'altra.
    Ho aggiornato l'esempio che potete verere qui :

    myscript72.altervista.org/test/index.php

    mentre questo è il codice aggiornato.

    header.php
    Codice PHP:
    <table border="1" height="90">
    <tr>
        <td width="200" valign="top">[url="index.php"]index.php[/url]
        

        

        </td>
        <td width="400">[url="logout.php"]logout.php[/url]
        
        </td>
        <td width="200" valign="top">
        
        <?
        
    //Start session
        
    session_start();

        
    print_r($_SESSION);
        
        if(empty(
    $_SESSION['SESS_MEMBER_ID']) ) {
         include (
    'login.php');
        } else { 

            echo 
    "Ciao $username";
          } 
        
    ?>
        </td>
    </tr>
    </table>
    login.php

    Codice PHP:
    <?php
        
        session_start
    ();

        
    $username $_POST['username'];
        
    $password $_POST['password'];

        include(
    "db_vars.inc");

        
    //Sanitize the value received from login field
        //to prevent SQL Injection
        
    if(!get_magic_quotes_gpc()) {
            
    $username=mysql_real_escape_string($_POST['username']);
        }else {
            
    $username=$_POST['username'];
        }


        
    //Create query
        
    $qry="SELECT iduser FROM users WHERE username='$username' AND password='".md5($_POST['password'])."'";
        
    $result=mysql_query($qry);
        
    //Check whether the query was successful or not
        
    if($result) {
            if(
    mysql_num_rows($result)>0) {
                
    //Login Successful
                
    $member=mysql_fetch_assoc($result);
                
    $_SESSION['SESS_MEMBER_ID']= $member['iduser'];

                
    session_write_close();
                echo 
    "ciao $username
    "
    ;

            }else {

    ?>

    <form method="post" action="<?php echo $_SERVER['PHP_SELF'?>">
    [b]Login utente[/b]


    Username:<input type="text" name="username" />

    Password:<input type="text" name="password" />


    <input type="submit" />
    </form>

    <?
            
    }
         }                                      
    ?>
    L'uomo che considera senza senso la propria vita e quella dei suoi simili, non è soltanto sfortunato ma è quasi squalificato per vivere.
    http://myscript72.altervista.org

  6. #6
    devi mettere $username in $_SESSION se vuoi passarlo tra le pagine ...

    codice:
    ....
    
    $_SESSION['SESS_MEMBER_ID'] = $member['iduser'];
    $_SESSION['username'] = $username;
    
    
    .......
    
       if(empty($_SESSION['SESS_MEMBER_ID']) ) {
         include ('login.php');
        } else {
    
            echo "Ciao $_SESSION['username']";
          }

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

  7. #7
    Ciao Piero.mac si mancava.... solo che impazzivo perchè in locale mi da questo problema mentre online funziona... il tutto dipende da qualcosa del php.ini? altrimenti non so dare una spiegazione

    demologin
    demologin

    http://myscript72.altervista.org/test/index.php

    L'uomo che considera senza senso la propria vita e quella dei suoi simili, non è soltanto sfortunato ma è quasi squalificato per vivere.
    http://myscript72.altervista.org

  8. #8
    Originariamente inviato da condor72
    Ciao Piero.mac si mancava.... solo che impazzivo perchè in locale mi da questo problema mentre online funziona... il tutto dipende da qualcosa del php.ini? altrimenti non so dare una spiegazione

    demologin
    demologin

    http://myscript72.altervista.org/test/index.php

    perche' nel php.ini del sito hai register_globals in ON e in locale e' invece *giustamente* in off


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

  9. #9
    e cosa devo fare allroa, dato che register_globals deve stare su off?

    ho messo hai detto tu quello che mancava come puoi vedere il codice sotto

    login.php
    Codice PHP:
    <?php
        
        session_start
    ();

        include(
    "db_vars.inc");

        
    //Sanitize the value received from login field
        //to prevent SQL Injection
        
    if(!get_magic_quotes_gpc()) {
            
    $username=mysql_real_escape_string($_POST['username']);
        }else {
            
    $username=$_POST['username'];
        }


        
    //Create query
        
    $qry="SELECT iduser FROM users WHERE username='$username' AND password='".md5($_POST['password'])."'";
        
    $result=mysql_query($qry);
        
    //Check whether the query was successful or not
        
    if($result) {
            if(
    mysql_num_rows($result)>0) {
                
    //Login Successful
                
    $member=mysql_fetch_assoc($result);
                
                
    $_SESSION['SESS_MEMBER_ID']= $member['iduser'];
                
    $_SESSION['username'] = $username;

                
    session_write_close();
                
                echo 
    "Ciao $username";

            }else {

    ?>

    <form method="post" action="<?php echo $_SERVER['PHP_SELF'?>">
    [b]Login utente[/b]


    Username:<input type="text" name="username" />

    Password:<input type="text" name="password" />


    <input type="submit" />
    </form>

    <?
            
    }
         }                                      
    ?>
    header.php

    Codice PHP:
    <table border="1" height="90">
    <tr>
        <td width="200" valign="top">[url="index.php"]index.php[/url]
        

        

        </td>
        <td width="400">[url="logout.php"]logout.php[/url]
        
        </td>
        <td width="200" valign="top">
        
        <?
        
    //Start session
        
        //print_r($_SESSION);

            
        
    if(empty($_SESSION['SESS_MEMBER_ID']) ) {
         include (
    'login.php');
        } else { 

            echo 
    "Ciao $username";
          } 
        
    ?>
        </td>
    </tr>
    </table>
    index.php


    Codice PHP:
    <?
        
    //Start session
        
    session_start();

        
    print_r($_SESSION);

        echo 
    "Ciao $username";
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">

        <head>

            <title> New Document </title>
        </head>
        
            <body>

            <table width="800" height="600" border="1">
            <tr>
                <td height="100"><? include ('header.php')  ?></td>
            </tr>
            <tr>
                <td><? include ('body.php')  ?></td>
            </tr>
            <tr>
                <td height="60"><? include ('footer.php')  ?></td>
            </tr>
            </table>

            </body>
        
        </html>
    L'uomo che considera senza senso la propria vita e quella dei suoi simili, non è soltanto sfortunato ma è quasi squalificato per vivere.
    http://myscript72.altervista.org

  10. #10
    non so che vuoi dire....

    devi mettere $_SESSION e non la la semplice variabile... PER TUTTE le occorrenze di valori che vuoi passare tra pagine protette.

    Devi usare il tag php esteso cioe': <?php e non <?

    il session_start() va SEMPRE prima di inviare output al browser. poi non capisco l'inserimento e la sequenza delle pagine che hai postato... dovrei leggere tutto lo script.

    http://forum.html.it/forum/showthrea...hreadid=245215

    dai una lettura a questa pillola di chris.....

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

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.