Calcolatore php

di il
4 risposte

Calcolatore php

Ciao a tutti,

sono nuovo del forum. Mi chiamo max85 e sto approciando al mondo della programmazione php.

Apro questo post per giocarmi subito due quesiti relativi ad un mio progetto che vorrei sviluppare sia per necessità che per esercizio di studio  php. In poche parole vorrei provare a realizzare una serie di script matematici tecnici che, forniti alcuni dati di input, mi forniscono un output/soluzione secondo algoritmi standard. (esempio: inserisco le informazioni di una linea elettrica e lo script mi elabora il dimensionamento del cavo, i parametri di un certo componente e ottengo le info relative al dissipatore da utilizzare ecc.

Ho già iniziato ad abbozzare qualcosa ma volevo chiedere dei suggerimenti su alcune scelte iniziali:

1) pensavo di utilizzare un sistema di form e di passare i dati dalla pagina iniziale alla pagina con risultati mediante variabili nell'url recuperate all'occorrenza con $_GET…. tutti i dati sono numerici e inseriti nel form iniziale dall'utente, nessun script prevede chiamate a server mysql (quindi non dovrei aver problemi di sicurezza, giusto? altre tecniche più eleganti? )

2) ho una pagina con un menu che si genera automaticamente con uno script php che visualizza cartelle e sottocartelle presenti nel server. esse corrispondono a menu e sotto-menu. selezionando il sotto-menu interessato includo nella home lo scrpit presente nella directory interessata. Tutto così funziona, però mi sorge un dubbio: tale sistema, basato su menu creati da uno script all'apertura della pagina e da pagine incluse sulla base delle scelte di sottomenu, potrà mai essere indicizzato?

vi ringrazio in anticipo per le risposte

4 Risposte

  • Re: Calcolatore php

    Il vantaggio di utilizzare $_GET è che i dati inseriti dall'utente nella form vengono inviati nell'URL e quindi possono essere facilmente recuperati dalla pagina di destinazione. L'inconveniente è che i dati inseriti dall'utente possono essere visibili nell'URL e quindi potrebbero essere utilizzati in modo dannoso se non vengono convalidati o sanitizzati.

    Per quanto riguarda la tua seconda domanda, il fatto che il menu venga generato dinamicamente da uno script PHP potrebbe essere un problema per l'indicizzazione del tuo sito web da parte dei motori di ricerca. I motori di ricerca in genere eseguono una scansione statica delle pagine del tuo sito web, quindi non vedranno il menu generato dinamicamente. Una possibile soluzione per questo problema sarebbe utilizzare una tecnologia come l'Ajax per aggiornare dinamicamente solo alcune parti della pagina, in modo che i motori di ricerca possano ancora scansionare il tuo sito web.

    Altresì, esiste il Sitemap, un file xml utilizzato per aiutare i motori di ricerca a scoprire le pagine del tuo sito.

  • Re: Calcolatore php

    Grazie mille per la dritta.

    Ovviamente bisogna sempre scendere a compromessi. Per quanto riguarda il passaggio delle variabili è poco elegante utilizzare cookie?

    la pagina che raccoglie dati ad esempio avrà tanti setcookie quante sono le variabili (nel seguente codice ad esempio genero il cookie per la variabileA di valore 12.3

    $expire = 3600;
    setcookie("variabileA", 12.3, time() + $expire);

    e nella pagina dell'elaborazione recupero i valori con

    $_COOKIE["variabileA"]

    Secondo voi quale processo è migliore? GET/POST o COOKIE?

    Per quanto riguarda invece l'indecizzazione potrei creare tutto in worpress che aiuta sicuramente l'indicizzazione e le singole calcolatrici le includo negli articoli via codice… qui devo ancora fare alcuni ragionamenti in merito però.

    Grazie ancora per la collaborazione

  • Re: Calcolatore php

    Poiché HTTP è stateless occorre altro modo su come visualizzare i dati, se vuoi creare API la url non dovrà essere più lunga di 255 caratteri, gli header hanno una limitazione, anche il metodo POST sebbene come semplice testo è difficile sforare la soglia limite.

    La risposta è tramite modulo html con metodo POST. Sebbene non stai utilizzando database comunque l'output è markup HTML “pagina HTML” occorre ugualmente la sanificazione del tuo input però se sono sequenze numeriche puoi recuperare e aggiungere il cast esplicito (int) quando ti aspetti intero, (float) quando ti aspetti virgola mobile e tutti i problemi rilevanti dalla perdita di precisione. Il concetto è che il cliente HTML invia stringa e tu poi fai qualcosa ad esempio

    <?php
    
    $var = '12';
    
    if(!empty($var)) {
    
    //tramite url mi aspetto che il dato è intero?
    
    //oppure nel dubbio verifico if(trim($var, '0123456789')) {$int = (int) $var;}
    echo '' . $int; //Output markup html concatenazione stringa tramite l'operatore punto
    }

    La firma di setcookie prevede stringa ma in generale può essere una trappola non gestire esplicitamente il tipo di una variabile, come detto in precedenza la virgola mobile perde precisione e nel manuale online esiste esempio anche per la differenza macchina epsilon che è accurata per i casi limiti della perdita di precisione. https://www.php.net/manual/en/language.types.float.php

  • Re: Calcolatore php

    Grazie per la dritta.

    Ho provato a realizzare la seguente soluzione. Secondo voi è abbastanza sicuro? Grazie in anticipo

    file index.php:  racchiude i form di invio dati e lo script di elaborazione dati

    <?php
    
    $datoA = (int) ($_COOKIE["datoA"]);
    $datoB  = (int) ($_COOKIE["datoB"]);
    
    if((!empty($datoA)) && (!empty($datoB)))  {
    	.....
    }
    
    ?>
    
      <form action="elaborazione.php">
    	 <label for="datoA">datoA:</label><br><br>
     		 <input type="number" id="datoA" name="datoA" step=".01">
    	 <label for="datoB">datoB:</label><br><br>
     		 <input type="number" id="datoB" name="datoB" step=".01">
     	 <input type="submit" value="Calcola"><br>
    
      </form>

    file elaborazione.php: setta i cookie con i dati e rimanda al file index

    <?php
    
    $expire = 60*60;
    
    $datoA = (int) ($_GET["datoA"]);
    $datoB = (int) ($_GET["datoB"]);
    
    setcookie("datoA", $datoA, time() + $expire);
    setcookie("datoB", $datoB, time() + $expire);
    
    header('Location: index.php', true, 301);
    ?>
Devi accedere o registrarti per scrivere nel forum
4 risposte