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

    Mostrare il nome utente che è loggato

    vorrei che nell'index compaia il nome di chi è loggato.
    check.php:
    Codice PHP:
    <?php

    @session_start();
    if (!
    session_is_registered('autorizzato')) {
        echo 
    "

    Effettua il login</p>"
    ;
        echo 
    '[url="index.php"]Home[/url] | ';
        echo 
    '[url="login.php"]Login[/url]';
        die;
    }
    ?>
    login.php:
    Codice PHP:
    <?php
    @session_start();
    if (
    session_is_registered('autorizzato')) {
        echo 
    "

    Effettua il logout</p>"
    ;
        echo 
    '[url="logout.php"]Logout[/url]';
        die;
    }
    ?>
    <?php
    include_once 'config.php';
    $link mysql_connect($host$user$password) or die("Non è possibile connettersi al server
    "
    );
    $conn mysql_select_db($db$link) or die("Non è possibile connettersi al db
    "
    );
    session_start();
    if (isset(
    $_POST['invio'])) {
        
    $user mysql_real_escape_string($_POST['user']);
        
    $pass mysql_real_escape_string($_POST['pass']);
        
    $query "select * from utenti where nome='" $user "' and password='" $pass "'";
        
    $result mysql_query($query$link) or die(mysql_error($link));
        
    $riga mysql_fetch_row($result);
        if (
    $riga[0] != $user || $riga[0] == "") {
            
    $destinazione "destroy.php";
        } else {
            if (
    $riga[1] == $pass) {
                
    session_register('autorizzato');
                
    $_SESSION["autorizzato"] = $user;
                
    $destinazione "index.php";
            } else {
                
    $destinazione "destroy.php";
            }
        }
        echo 
    '<script language="javascript">document.location.href="' $destinazione '"</script>';
    } else {
    ?>
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                <title>Login</title>
            </head>
            <body>
                [url="index.php"]Home[/url]
                <form method="post" name="inserisci" action="#">
                    <table>
                        <tr>
                            <td>User:</td>
                            <td><input type="text" name="user" /></td>
                        </tr>
                        <tr>
                            <td>Password:</td>
                            <td><input type="password" name="pass" /></td>
                        </tr>
                        <tr>
                            <td><input type="submit" name="invio" value="Invio" /></td>
                        </tr>
                    </table>
                </form>
            <?php
            
    if ($_GET['err'] == 1) {
                echo 
    "Login errato";
                echo 
    "

    "
    ;
            }
            
    ?>
        </body>
    </html>
    <?php
        
    }
    ?>
    pensavo bastasse mettere questo:
    Codice PHP:
    <?php
    @session_start();
    if (
    session_is_registered('autorizzato')) {
        echo 
    "

    Benvenuto " 
    $_SESSION['autorizzato'] . '</p>[url="logout.php"]Logout[/url]';

    ?>
    ma nn ha funzionato.
    come faccio a fargli scrivere il nome dell'utente?

  2. #2
    le chiocciole davati a tutti si session_start() non si possono vedè!!!

    inoltre il login così come lo esegui è errato che dovrebbe essere così!
    Codice PHP:
    if (isset($_POST['invio'])) 
        { 
        
    $user mysql_real_escape_string($_POST['user']); 
        
    $pass mysql_real_escape_string($_POST['pass']); 
        
    // chiamare un campo del db 'password' è altamente sconsigliato!!
        // inoltre le password andrebbero criptate!!
        
    $query "SELECT * FROM utenti WHERE nome='" $user "' AND password='" $pass "' LIMIT 1"
        
    $result mysql_query($query$link) or die(mysql_error($link)); 

        
    // se ha selezionato il rigo che cercavo
        
    if(mysql_num_rows($result)===1)
            {
            
    // session_register nelle versioni recenti di php è inutile!
            
    session_register('autorizzato'); 
            
    $_SESSION["autorizzato"] = $user
            
    $destinazione "index.php"
            }
        else
            {
            
    $destinazione "destroy.php";
            }
        } 

  3. #3
    è sbagliato dal punto di vista del "design"?
    perchè sennò così funziona bene.

    e cmq come faccio a risolvere il mio problema?

  4. #4
    togli assolutamente le @ al session_start() poi vedi ciò che ti dice...

  5. #5
    ho levato le chiocciole:
    Codice PHP:
    <?php //check.php

    session_start();
    if (!
    session_is_registered('autorizzato')) {
        echo 
    "

    Effettua il login</p>"
    ;
        echo 
    '[url="index.php"]Home[/url] | ';
        echo 
    '[url="login.php"]Login[/url]';
        die;
    }
    ?>
    Codice PHP:
    <?php //login.php
    session_start();
    if (
    session_is_registered('autorizzato')) {
        echo 
    "

    Effettua il logout</p>"
    ;
        echo 
    '[url="logout.php"]Logout[/url]';
        die;
    }
    ?>
    <?php
    include_once 'config.php';
    $link mysql_connect($host$user$password) or die("Non è possibile connettersi al server
    "
    );
    $conn mysql_select_db($db$link) or die("Non è possibile connettersi al db
    "
    );
    session_start();
    if (isset(
    $_POST['invio'])) {
        
    $user mysql_real_escape_string($_POST['user']);
        
    $pass mysql_real_escape_string($_POST['pass']);
        
    $query "select * from utenti where nome='" $user "' and password='" $pass "'";
        
    $result mysql_query($query$link) or die(mysql_error($link));
        
    $riga mysql_fetch_row($result);
        if (
    $riga[0] != $user || $riga[0] == "") {
            
    $destinazione "destroy.php";
        } else {
            if (
    $riga[1] == $pass) {
                
    session_register('autorizzato');
                
    $_SESSION["autorizzato"] = $user;
                
    $destinazione "index.php";
            } else {
                
    $destinazione "destroy.php";
            }
        }
    ...........
    e tutto ha funzionato lo stesso senza errori.
    devo fare altre prove?
    per quanto riguarda poi la sicurezza, so bene che questo codice nn è sicuro, ma è solo per scopo didattico.
    mi occuperò della sicurezza dopo che avrò imparato a fare tutte le altre operazioni fondamentali.

  6. #6
    inoltre sembra che sia riuscito anche a risolvere il problema in questione:
    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Home</title>
        </head>
        <body>
            <div>
                [url="index.php"]Home[/url] |
                [url="index.php?art=1"]Linux[/url] |
                [url="index.php?art=2"]Mac&iPhone[/url] |
                [url="inserisci.php"]Inserisci articolo[/url] |
                [url="login.php"]Login[/url] |
                [url="registrazione.php"]Registrati[/url] |
                [url="logout.php"]Logout[/url]
            </div>
            <?php
            session_start
    ();
            if (
    session_is_registered('autorizzato')) {
                echo 
    "<h2>Benvenuto " $_SESSION['autorizzato'] . '</h2>';
            }
            
    ?>
            <hr/>
            <div>
                <?php
                
    if (!isset($_GET['art'])) {
                    include 
    'news.php';
                }
                if (
    $_GET['art'] == 1) {
                    include 
    'linux.php';
                }
                if (
    $_GET['art'] == 2) {
                    include 
    'mac.php';
                }
                
    ?>
            </div>
        </body>
    </html>
    cmq mi piacerebbe capire meglio cos'à di sbagliato il mio login, perchè a me nn da errori.

  7. #7
    I sistemi di registrazione-login sono molto complessi da realizzare e le varie funzioni (registrazione-login-cambio password-gestione dei permessi-etc etc.) devono essere coerenti fra di loro!!

    Io non sono uno dei massimi esperti di questo forum però ti posso dire le cose che a me sono saltate all'occhio:
    - nel file login.php vi è due volte il comando sessione_start()
    - la funzione session_is_registered è deprecata nelle versioni più recenti di php http://php.net/manual/en/function.se...registered.php
    - chiamare un campo di mysql 'password' è sbagliato dato che è una parola riservata che non dovrebbe essere impiegata per chiamare un campo http://office.microsoft.com/it-it/ac...001231509.aspx
    - le password andrebbero assolutamente criptate
    - la procedura per verificare la corrispondenza potrebbe essere fatta molto più semplicemente con mysql_num_rows()
    - il redirect con javascript lo trovo sbagliato (io lo fare con un header di php)

    questo di primo acchitto ciò che ho visto...

  8. #8
    provo a rispondere punto per punto:
    -c'è due volte ma perchè il primo mi serve per il controllo se si è già loggati e ancora nn sono riuscito ad accorparli
    -al posto di session_register devo mettere qualcosa o lo levo e basta?
    -vedrò di cambiare il nome del campo anche se per il mio scopo nn penso sia fondamentale
    -va bene questo:
    Codice PHP:
    $query "SELECT * FROM utenti WHERE nome='" $user "' AND password='" MD5($pass) . "' LIMIT 1"
    -cambiato il mio login col tuo
    -in verità a volte uso js e a volte php ma terrò a mente il tuo consiglio

  9. #9
    - session_start() due volte?... bhè la seconda è superflua

    - session_register() lo puoi rimuovere e crei la variabile di sessione semplicemente ricorrendo alla variabile globale $_SESSION mentre session_registred() lo puoi rimuovere e fare il controllo con un semplice isset($_SESSION['autorizzato'])

    - il criptaggio con md5 va benino (si dovrebbe creare una funzione di criptaggio migliore o quantomeno una funzione con un hash più complesso) ma in ogni caso ciò comporta la modifica anche del file della registrazione / modifica password / password dimenticata

  10. #10
    tranne il criptaggio che così nn funziona ho levato tutti i session_register e i session_is_registered.
    grazie per le dritte!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.