Visualizzazione dei risultati da 1 a 4 su 4

Discussione: il mio form php...

  1. #1

    il mio form php...

    Eccomi ancora qua... il mio form comincia a fare progressi, potete vederlo a questo indirizzo:
    www.matteomosconi.com/timber/

    ho cercato di separare il codice per renderlo più semplice ed ecco cosa ho ottenuto:

    index.php
    in questa pagina ho deciso di separe le due colonne DX e SX
    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            <title>Documento senza titolo</title>
            <link rel="stylesheet" type="text/css" href="css/layout.css">
        </head>
       <body>

       

        <?php
        
    include("form.php");
        
    ?>

       

        <?php
        
    include("riepilogo.php");
        
    ?>

       </body>
    </html>
    form.php
    in questa pagina ho inserito il codige che va a generare il form vero e proprio (colonna SX)
    Codice PHP:
    <div class="colonna_SX">

       <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post">
       

       <fieldset>
        <legend>Informazioni personali </legend>
        <div>
                <label for="user">Nome [b]*[/b]</label>
                <input id="user" name="user">
            </div>
            <div>
                <label for="address">Email [b]*[/b]</label>
                <input id="address" name="address">
            </div>
        <div>
            <label for="nazione">Nazionalità [b]*[/b]</label>
            <select size="1" name="nazione" >
                <option selected value="1, Italia">Italia</option>
                <option value="0, Estero">Estero</option>
            </select> 
            </div>
            <div>
                <label for="city">Città [b]*[/b]</label>
                <input id="city" name="city">
            </div>
            <div>
             <label for="professione">Professione [b]*[/b]</label>                    
            <select size="1" name="professione" >
                <option selected value="0.04, Azienda, 0">Azienda</option>
                <option value="0, Ingegnere, 0">Ingegnere</option>
                <option value="0, Architetto, 0">Architetto</option>
                <option value="0.04, Studente, 1">Studente</option>
                <option value="0.04, Privato, 1">Privato</option>
            </select>
            </div>
        <legend2>Quantità</legend2>
            <div>
             <label for="licenze">N° Licenze [b]*[/b]</label>                        
            <select size="1" name="licenze">
                <option selected>1</option>
                <option> 2</option>
                <option> 3</option>
                <option> 4</option>
                <option> 5</option>
                <option> 6</option>
                <option> 7</option>
                <option> 8</option>
                 <option> 9</option>
                 <option> 10</option>
            </select>
            </div>
            <div>
        <input type="submit" id="go" value="Conferma" />
        

    I campi contrassegnati con [b]*[/b] sono obbligatori</p>
            </div>
       </fieldset>
       </form>
    </div>
    riepilogo.php
    in questa pagina ho inserito il riepilogo dei dati (colonna DX) e al suo interno richiamo la funzione conto.php

    Codice PHP:
    <div class="colonna_DX">

        <fieldset>
        <legend>Riepilogo </legend><div>

        <?php
    //        if(isset($_POST['Submit'])){
            
    include("functions/conto.php");
    //    }
        
    ?>

        <div>
                <label for="user">Nome [b]:[/b]</label><?php echo $user?>
        </div>
        <div>
                <label for="address">Email [b]:[/b]</label><?php echo $email?>
        </div>
        <div>
            <label for="nazione">Nazionalità [b]:[/b]</label><?php echo $nazione?>
        </div>
        <div>
                <label for="city">Città [b]:[/b]</label><?php echo $city?>
        </div>
        <div>
            <label for="professione">Professione [b]:[/b]</label><?php echo $professione?>
        </div>
        <div>                
            <label for="licenze">N° Licenze [b]:[/b]</label><?php echo $licenze?>                    
        </div>


        <div>                
            <label for="licenze">Costo licenze [b]:[/b]</label><?php echo $x?>                    
        </div>
        <div>                
            <label for="licenze">Iva [b]:[/b]</label><?php echo $iva?>                    
        </div>
        <div>                
            <label for="licenze">Ritenuta [b]:[/b]</label><?php echo $ritenuta?>                    
        </div>
        <div>                
            <label for="licenze">TOTALE [b]:[/b]</label><?php echo $totale?>                    
        </div>


        <form action="https://www.paypal.com/it/cgi-bin/webscr" method="post">
        <input type="hidden" name="cmd" value="_xclick">
        <input type="hidden" name="business" value="mail@hotmail.com">
        <input type="hidden" name="item_name" value="Nome dell'oggetto">
        <input type="hidden" name="currency_code" value="EUR">
        <input type="hidden" name="amount" value="<?php echo $totale?>">
        <input type="image" src="https://www.paypalobjects.com/it_IT/IT/i/btn/btn_paynow_LG.gif" border="0" name="submit" >
        </form>

        </fieldset>
    </div>
    e per concludere allego conto.php dove vengono effettivamente effettuati i calcoli che servono per generare il riepilogo

    Codice PHP:
    <?php

    error_reporting 
    (E_ALL & ~E_NOTICE);

    list(
    $value$professione$riten) = explode(', '$_POST['professione']);        // formato (%cnpaia; professione; 0
    list($tax$nazione) = explode(', '$_POST['nazione']);
    $n $_POST['licenze'];

    $a 0.21;                    // Imposta valore dell'IVA
    $b 0.20;                    // Imposta valore della ritenuta
    $prezzo1 350;                    // Imposta prezzo base licenza
    $prezzo2 250;                    // Imposta prezzo scontato
    $nsconto 5;                    // imposta numero min licenze per prezzo scontato

        
    if ($n >= $nsconto)
              {
    $prezzo $prezzo2;
        }else{ 
            
    $prezzo $prezzo1;}

    $x        $prezzo $n;            // calcolo del prezzo

        
    if ($tax == 0)
              {
    $valuex 0.04;
        }else{ 
            
    $valuex $value;}

    $cnpaia     $x $valuex;            // calcolo del contributo CNPAIA

        
    if ($tax == 0)
              {
    $ivax 0$ritenutax 0;
        }elseif (
    $riten == 1)
            {
    $ivax $a$ritenutax 0
        }else     {
    $ivax $a$ritenutax $b;
            }

    $iva         = ($x$cnpaia) * $ivax;

    $ritenuta     $x $ritenutax;

    $totale     $x $cnpaia $iva $ritenuta ;

    ?>
    La prima cosa che mi chiedevo è... un codice impostato in questo modo si può considerare ammissibile?
    come è possibile migliorarlo?

    Vorrei inoltre implementarlo ulteriormente, eliminare il bottone "conferma" e far si che il riepilogo si compili automaticamente man mano che l'utente completi il form... leggendo in rete credo che la soluzione a questo problema avvenga mediante ajax + jquery ma... non sono sicuro e non saprei da che parte iniziare per implementarlo...

    cosa ne dite? è fattibile?

    Grazie
    M

  2. #2
    nessuno ha qualche consiglio in merito ?
    ho cercato documentazione su ajax ma... non ne vengo a capo...

  3. #3
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    Non ci siamo.
    Innanzitutto gli errori mettili tutti, notice compresi.
    Poi manca uno straccio di controllo sulle variabili che ti arrivano.
    Nessun controllo, nessun filtro, nessun escape.
    Prima di fare l'ajax, che è fighissimo, per carità, ma è solo un abbellimento, devi pensare alla sicurezza di base.

  4. #4
    Hai perfettamente ragione...
    Per ora non ho implementato nessun sistema di controllo sui dati imputati e lo ho fatto di proposito perchè vorrei prima vedere se sono in grado di raggiungere la "forma" del form che mi sono presupposto!

    Sicuramente in una seconda fase valuterò la sicurezza dei dati. Si nota infatti che, per ora, i dati imputati generano solamente il totale ma non vengono salvati da nessuna parte...
    Probabilmente il mio approccio al problema è sbagliato ma è dato dall'inesperienza nel campo!

    Alla luce di queste considerazioni, avresti qualche consiglio su come implementare il tutto? ajax è la strada giusta?

    E' possibile fare un esempio di come ottenere ciò? Anche con un solo dato del form per iniziare...

    Grazie, M

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.