Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Funzioni e variabili

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    residenza
    rimini, san marino
    Messaggi
    934

    Funzioni e variabili

    Ciao a tutti.

    Sto cercando di fare una funzione e farmi restituire il valore modificato dalla funzione.

    Ecco la funzione:

    codice:
    function criptazione_dati($referente,$ragione_sociale,$indirizzo,$telefono,$fax,$email,$sito_web,$cellulare)	{
    		require('lista_tabelle.php');
    	     	require('lingua.php');
    	     	require('blowfish.php');
    
                        $chiave=$_COOKIE["chiave"];
                        $stato_criptazione=$_COOKIE["stato_criptazione"];
                        // tutti i campi sono contrassegnati con _input
                        if($stato_criptazione=="0")	{}
                        if($stato_criptazione=="1")	{
                        $input_referente=PMA_blowfish_encrypt($referente, $chiave);
                        $input_ragione_sociale=PMA_blowfish_encrypt($ragione_sociale, $chiave);
    		    $input_indirizzo=PMA_blowfish_encrypt($indirizzo, $chiave);
                        $input_telefono=PMA_blowfish_encrypt($telefono, $chiave);
    		    $input_fax=PMA_blowfish_encrypt($fax, $chiave);
                        $input_email=PMA_blowfish_encrypt($email, $chiave);
                        $input_sito_web=PMA_blowfish_encrypt($sito_web, $chiave);
                        $input_cellulare=PMA_blowfish_encrypt($cellulare, $chiave);
                        }
    }
    ecco che richiamo la funzione

    codice:
    criptazione_dati($input_referente,$input_ragione_sociale,$input_indirizzo,$input_telefono,$input_fax,$input_email,$input_sito_web,$input_cellulare);
    echo "referente: $input_referente
    IL problema è che vorrei che i valori delle variabili che ho inizialmente:
    es:
    $input_referente

    assumano il valore che deriva dalla funzione:

    $input_referente=PMA_blowfish_encrypt($referente, $chiave);

    Sostanzialmente devo criptare molti dati come vedete dal codice.
    Al limite potrei fare anche con il return, una alla volta. tuttavia il valore riptato non mi viene restituito neppure con il return, ma solo con l'echo.

    dove sto sbagliando,
    Grazie,
    Ale

  2. #2
    Questa è una cosa molto divertente d fare ma occhio perché quando non sei pratico rischia di mandarti nel pallone. Devi fare un passaggio per riferimento.


    La sintassi è la seguente:

    function nomefunzione(& $var1, &$var2, $var3){


    }


    in questo caso $var1 e $var2 son passati per riferimento (t risparmio i dettagli teorici t basti sapere che tutte le modifiche che farai nella funzione avranno effetto sulla variabile in fase di chiamata) mentre $var3 no (è passata per valore, come si dice in termini tecnici).

    In questo modo potrai aver funzioni che "restituiscono" quante variabili vuoi, ma avrai anche meno controllo del flusso e per debbuggare può essere un problema. Cmq non t voglio spaventare, fai un pò d prove e ti abituerai in fretta a qst tecnica (io la uso tanto e la trovo utilissima se non INDISPENSABILE).

    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2001
    residenza
    rimini, san marino
    Messaggi
    934
    Non ho capito. spiegati meglio.

    Ale

  4. #4
    Quando passi una variabile alla funzione non passi la variabile stessa ma una sua copia (passaggio per valore). Ciò fa in modo che ogni modifica effettuata nn venga a toccare la variabile originaria. Ed è questo il motivo per cui puoi spippolare quanto ti pare sui parametri d una funzione senza sporcartela al chiamante.

    Se vuoi che ogni modifica venga effettuata nella funzione ad variabile passata come parametro venga riscontrata anche quando la funzione cede il controllo al chiamante, devi usare il passaggio per riferimento.


    Il passaggio per riferimento si ottiene anteponendo una & al nome del parametro in fase di definizione della funzione:


    function nomefunzione(& $var1, &$var2, $var3){


    }


    ti ho fatto questo esempio per farti capire che non è necessario che TUTTE le variabili siano passate per riferimento o per valore (come accade in vbscript) ma puoi decidere singolarmente per ognuna. In questa funzione ogni volta che modificherai var1 e var2, potrai modificare conservare le loro modifiche anke FUORI dalla funzione, per var3 invece no, e sarai costretto a restituirla con un normalissimo return.
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2001
    residenza
    rimini, san marino
    Messaggi
    934
    Grazie mille!

    Non conoscevo questa cosa. mi hai risolto una bella grana.

    Grazie!

    Ti dirò che me la stampo e me la tengo nel manualetto.

    Ale

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.