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

    Problema con una funzione personale

    Ciao ragazzi.
    Credo proprio che sto andando in loop, non riesco a trovare dove sta l'errore in una funzione che sto scrivendo.

    Premessa:
    Sto scrivendomi delle funzioni che si occupano di gestire il login ed il riconoscimento degli utenti seguendo le indicazioni trovate nella Guida di Sicurezza in PHP.

    Ho quindi scritto una funzione doLogin che si occupa di gestire il controllo delle stringhe nome_utente e password passate da form, per bloccare codice malevolo, lunghezze delle stringhe non valide ecc ecc.
    Questa funzione, in caso di login valido, registra una sessione ed un cookie per il controllo utente e per (provare a) prevenire un attacco tipo session-hijacking.

    Questa funzione fa il suo dovere egregiamente.

    Nelle pagine della sezione privata ho pensato di mettere una funzione che si occupi di controllare l'uguaglianza tra le variabili settate in remoto nella sessione e quelle in locale dell'utente.
    Se questo controllo è superato, viene stampato il menù dell'utente, altrimenti un messaggio di cortesia.

    Qui nasce il mio problema.
    La funziona checkParam, se non richiamata da un file esterno (es. checkParam.php) funziona, altrimenti no.

    Posto il codice sperando che qualcuno di voi abbia le facoltà mentali meno in pappa delle mie.

    checkParam.php:
    Codice PHP:
    <?php

    function checkParam(){


    ini_set("session.save_path","tmp_sss");
    session_start();
    session_regenerate_id();

    // se non esiste una sessione registrata per questo utente
    // allora non posso visualizzare la pagina 
    if (!isset($_SESSION['hash_utente'])) {
        
    $login_ok false;
    }

    if (
    $_SESSION['hash_utente'] == $_COOKIE['prova_login']) {
        
    $login_ok true;
    } else {
        
    $login_ok false;
    }

    return 
    $login_ok;    
    }

    ?>
    Il seguente è invece il codice di una delle pagine private.
    Codice PHP:
    <?php
    global $login_ok;

    include 
    'checkLogin.php';
    checkParam();

    if (
    $login_ok == true) {
        
    // stampo la pagina
        
    echo "<h1>Login Effettuato con successo!</h1>";
        
        echo 
    "
        <div id=\"menu\">

            <ul>
                [*]<a href=\"javascript:void(0)\">Voce 1</a>
                [*]<a href=\"javascript:void(0)\">Voce 2</a>
                [*]<a href=\"javascript:void(0)\">Voce 3</a>
                [*]<a href=\"javascript:void(0)\">Voce 4</a>
                [*]<a href=\"javascript:void(0)\">Voce 5</a>
                [*]=====================
                [*]<a href=\"logout.php\">Log Out</a>

            [/list]
            
        </div>
        "
    ;
        
        
    } else {
     
    setcookie("prova_login""");
        
    session_unset();
    session_destroy();
        
        echo 
    "
            <h1>Login non Effettuato!</h1>
            
    (Errore 1)
            
    <a href=\"logout.php\">Accedi</a> nuovamente.
    "
    ;

    }

    ?>

    C'è qualcuno che riesce ad aprirmi gli occhi?  :dhò:
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  2. #2
    UP!!!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    UP!!!!!!!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #4
    UP!!!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    Ciao prova a togliere

    global $login_ok;

    e prova a stampare:
    Codice PHP:
    <?php
    global $login_ok;

    include 
    'checkLogin.php';
    checkParam();

    print 
    $login_ok//vediamo che valore restituisce

    if ($login_ok == true) {
        
    // stampo la pagina
        
    echo "<h1>Login Effettuato con successo!</h1>";
        
        echo 
    "
        <div id=\"menu\">

            <ul>[*]<a href=\"java-script:void(0)\">Voce 1</a>[*]<a href=\"java-script:void(0)\">Voce 2</a>[*]<a href=\"java-script:void(0)\">Voce 3</a>[*]<a href=\"java-script:void(0)\">Voce 4</a>[*]<a href=\"java-script:void(0)\">Voce 5</a>[*]=====================[*]<a href=\"logout.php\">Log Out</a>
    [/list]
            
        </div>
        "
    ;
        
        
    } else {

    setcookie("prova_login""");
        
    session_unset();
    session_destroy();
        
        echo 
    "
            <h1>Login non Effettuato!</h1>
            
    (Errore 1)
            
    <a href=\"logout.php\">Accedi</a> nuovamente.
    "
    ;

    }

    ?>

  6. #6
    Ciao, e grazie della risposta: sono 3 giorni che scrivo "UP" per farmi sentire dalla community!


    Avevo già provato a stampare la variabile di ritorno dalla funzione.
    Ho riprovato oggi ed ottengo la stessa cosa: $login_ok è vuota!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    scusa la domanda banale hai provato a cancellare la variabile globale $login_ok?

  8. #8
    Ho provato, non funziona lo stesso.
    Questa però me l'aspettavo: se dichiaro $login_ok in una funzione, e poi non imposto la variabile come globale, nello script comunque non arriverebbe!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    E cosi ?

    codice:
    <?php 
    
    include 'checkLogin.php'; 
    
    if (checkParam() == true) { 
        // stampo la pagina 
        echo "<h1>Login Effettuato con successo!</h1>"; 
         
        echo " 
        <div id=\"menu\"> 
    
            <ul> [*]<a href=\"java-script:void(0)\">Voce 1</a> [*]<a href=\"java-script:void(0)\">Voce 2</a> [*]<a href=\"java-script:void(0)\">Voce 3</a> [*]<a href=\"java-script:void(0)\">Voce 4</a> [*]<a href=\"java-script:void(0)\">Voce 5</a> [*]===================== [*]<a href=\"logout.php\">Log Out</a> 
    [/list]
             
        </div> 
        "; 
    ....
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    YEAH!!!
    Caro Badaze sei stato un grande....... e pensare che lo sapevo di avere la soluzione sotto gli occhi e di non riuscire a vederla.
    Mi ero incaponito a passare una variabile senza pensare che sarebbe bastato verificare che la funzione fosse true!

    Vabé... .tutto è bene quel che finisce bene!

    Ancora grazie
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.