• Off-topic
  • Programmare in PHP nel 2021 ha senso o no?

Io sono tutt'altro che esperto in quel campo, anzi, però c'è qualcosa che non mi torna tanto

simonebortolin non permette di elaborare i dati post in formato json.²

Guarda che il decoding e encoding dei JSON è supportato, quindi non capisco a cosa ti riferisci

simonebortolin spesso è necessario avere funzionamenti diversi a seconda di GET o POST

Per questo credo sia sufficiente un IF, che puoi utilizzare per eseguire due blocchi di codice o anche due funzioni separate (come in altri linguaggi)

simonebortolin PHP 5.0 era molto insicuro e pieno di bachi, ma almeno era veloce, PHP 7.0 ha rallentato tanto l’esecuzione di PHP

Sicuro sia rallentato in maniera così generalizzata? Perché da alcuni benchmark risulta il contrario: https://www.phoronix.com/scan.php?page=news_item&px=PHP-5.3-PHP-7.4-Benchmarks
https://www.phoronix.com/scan.php?page=news_item&px=PHP-8.0-Performance-Bench-2020

    • [cancellato]

    Dipende sempre cosa ci devi fare.
    Per lo sviluppo web è superato, per altri tipi di utilizzo invece è ancora a fuoco.

      handymenny Guarda che il decoding e encoding dei JSON è supportato, quindi non capisco a cosa ti riferisci

      è assolutamente supportato si, ma non è così semplice: fai conto che in numerosi framework si ha che si fa
      call.respondJSON(array) e viene automaticamente convertito

      in php devi per l'output
      1) impostare header content type json
      2) essere sicuro che non c'è nessun echo né prima né dopo di spazi altrimenti si corrompe
      3) fare echo del json e sopratututto in grandi file non è detto che lo puoi fare generalizzato l'header content type json

      per ricevere un json via post devi fare: json_decode(file_get_contents('php://input'), true), cosa tutt'altro che ovvia e per niente comoda. Inoltre se il file è già stato parsato non funziona.

      Apprezzo molto questo commento: significa che mi sono espresso male.

      handymenny Per questo credo sia sufficiente un IF, che può anche eseguire due funzioni separate come in altri linguaggi

      no puoi fare if(isset($_POST)) ma se il post è vuoto non funziona (anzi il comportamento non è definito, per questo si mette come minimo un hidden o sumbit) e non puoi verificare PUT, GET, DELETE e tutti gli altri

      Si può dire che l'elaborazione PHP 7.0 è più veloce della 5.0 ma non il tempo di esecuzione di uno script PHP.
      In generale è più lento, poi fare un while(i<1000) i++ è più veloce.

        Come scritto sopra dipende cosa ci devi fare e se al lavoro lo richiedono o se lo fai solo per passione.

        Dove lavoravo prima tutti focalizzati su .net ed eravamo in 2 solo a conoscere php.
        È arrivato un clientone (commessa da oltre 500mila Euro… e tutti i siti erano in php.
        Indovina… tutti costretti a passare a php 😄

          simonebortolin sopratututto in grandi file

          qui abbiamo un problema di design però 🙂
          Ormai PHP è anche orientato agli oggetti, non ha nemmeno più tanto senso creare file da 100k righe

          Ho capito cosa vuoi dire, è un po' macchinoso, però se uno separa le API JSON dal resto (o implementa il resto con altri linguaggi), direi che non è un problema così grosso

          simonebortolin if(isset($_POST))

          Mi riferivo al REQUEST_METHOD che trovi qua: https://www.php.net/manual/en/reserved.variables.server.php

          simonebortolin Si può dire che l'elaborazione PHP 7.0 è più veloce della 5.0 ma non il tempo di esecuzione di uno script PHP.
          In generale è più lento, poi fare un while(i<1000) i++ è più veloce.

          Vuoi dire che una singola esecuzione di uno script è più lenta in php 7 (e successivi) ?

            uadopo Si è stata un eccezzione ma puó capitare.
            Come scritto dipende da cosa ti chiede (o meglio ha in casa) il cliente.
            Poi se conviene o no buttarci risorse se sei dipendente si, se sei freelance probabilmente no, a meno che non ti focalizzi su customizzazioni di wordpress e affini

            • [cancellato]

            Oggi per essere <buzzword del momento> developer (o meglio, oggi, coder) devi assolutamente usare il linguaggio/framework du-jour e cambiarlo domani mattina per non sentirti superato.

            Poi ogni linguaggio ha un campo di applicazione dove è meglio di altri - poi c'è chi sceglie il linguaggio in base a quanto costano poco gli sviluppatori (e si vede).

            WordPress che io sappia rimane in PHP - e rimane uno dei CMS più diffusi. Applicazioni che hanno backend più complessi e con specifici requisiti - spesso di interazione con altre applicazioni - possono beneficiare dall'usare altri linguaggi. In certi ambienti ad esempio fa comodo usare gli application server Java come Tomcat o JBoss. Chi ha a che fare con tecnlogie MS ha sicuramente la vita più facile in .NET.

            Rimane il fatto che con qualsiasi tecnologia di backend e di frontend le applicazioni web continuano a fare schifo, e anzi peggiorano da quando sono diventate "mobile first" - cioè vanno usate con un dito. 😁

              handymenny qui abbiamo un problema di design però 🙂
              Ormai PHP è anche orientato agli oggetti, non ha nemmeno più tanto senso creare file da 100k righe

              Ho capito cosa vuoi dire, è un po' macchinoso, però se uno separa le API JSON dal resto (o implementa il resto con altri linguaggi), direi che non è un problema così grosso

              Beh Wordpress usa questo design e fare tanti file su PHP è un problema di sicurezza: guarda wordpress spesso le falle stanno nei file script.php dei vari plugin.

              Supponi di fare tanti file piccoli c'è un grosso problema: tutti questi sono direttamente accessibili da www.miosito.it/businesslogic/file.php e questi sono una falla di sicurezza: potrei limitare l'accesso con htaccess, potrei fare tante robe: ma è un problema di design di php non mio.

              E pure i framework soffrono degli stessi problemi.

              handymenny Mi riferivo al REQUEST_METHOD che trovi qua: https://www.php.net/manual/en/reserved.variables.server.php

              There is no guarantee that every web server will provide any of these; servers may omit some, or provide others not listed here.

              handymenny Vuoi dire che una singola esecuzione di uno script è più lenta in php 7 (e successivi) ?

              Sì, l'esecuzione di una singola istruzione è più veloce, l'esecuzione di un intero script compreso l'avvio dell'interprete php è più lento

              [cancellato] ed io che stavo aspettando che aprivi il topic, dopo un po' mi sono stufato di aspettare e lo ho aperto io.... Sto comunque apprezzando molto alcuni commenti altrui 🙂

                simonebortolin Mescolando PHP e HTML si potrebbe pensare pure di generare CSS e JS custom in base a cosa genera il PHP: questa è una bad pratices perché il codice sarebbe molto più soggetto a SQL Injection.

                cos

                sono anni che non metto mano a php, ma generare contenuti dinamici non ha nulla a che vedere con l'sql injection, che tra l'altro si evita totalmente con le query parametrizzate (che una veloce ricerca mi indica chiamarsi prepared statements nel mondo php)

                  simonebortolin There is no guarantee that every web server will provide any of these; servers may omit some, or provide others not listed here.

                  Questo perché dipende dal webserver che usi. PHP non fa da webserver quindi non ha modo di garantirti i dati che gli passerà il tuo webserver

                  simonebortolin Supponi di fare tanti file piccoli c'è un grosso problema: tutti questi sono direttamente accessibili da www.miosito.it/businesslogic/file.php e questi sono una falla di sicurezza: potrei limitare l'accesso con htaccess, potrei fare tante robe: ma è un problema di design di php non mio.

                  Di solito è buona prassi separare nettamente (cioè mettere in cartelle diverse) ciò che è accessibile pubblicamente dal resto, ma questo l'ho visto fare a prescindere dalla tecnologia utilizzata.

                    • [cancellato]

                    [cancellato] le applicazioni web continuano a fare schifo, e anzi peggiorano da quando sono diventate "mobile first" - cioè vanno usate con un dito.

                    OT nell'OT... Nì, non sempre. Diventano sempre più pesanti, e per certi aspetti la moda di fare webapp invece che client standalone è assolutamente deleteria, ma per molti altri aspetti ti eviti un mare di complicazioni lato client, e te le rende usabili anche dove l'installazione di software sui terminali non è possibile.
                    Poi spesso la colpa è più dei designer, e di chi pone requisiti di essere responsive e mobile first dove non ha assolutamente senso se non perché va di moda (seriamente, un gestionale su smartphone? Really???).

                    handymenny Braccoz le query parametriche non servono per evitare le sql injection, una query è già sicura con mysqli_real_escape_string se:

                    • usi charset comuni
                    • usi la versione con la connessione al db
                    • non ti fai passare come parametro nomi di colonne (N.B. PDO rifiuta proprio questo tipo di query)

                    le query parametriche quelle con il ? secondo l'attuale letteratura sono da EVITARE in favore di:

                    • query classiche con i valori passati come variabile filtrata
                    • query autogenerate dal codice in maniera invisibile per l'utente (Stile lambda/Linq/dsl/...)

                    in quanto aumentano in maniera "stupida" la complicazione della query. Si usano le PDO solamente nel caso in cui si lavora con colonne o tabelle passate come parametro

                    la insicurezza derivata a attivare/disattivare pezzi di codice javascript da PHP è ovvio supponiamo di avere questo uno script in cui si fa var paperino = < php echo $_GET["paperino"]; >(c'è clouflare che mi blocca i < ? senza spazio )

                    Supponiamo che per qualche motivo sulla variabile paperino ci sia uno script che sfrutta una vulnerabilità SQL Injection o XSS, e che su pluto_get.php?value non ho fatto il filtro perché tanto è un valore passato da javascript sai quanto è difficile da testare questo codice, questa vulnerabilità era tra le top 10 owasp 10 anni fa quando era pieno di script js generati da php

                    handymenny sono d'accordo: ma mentre qualsiasi framework basato su java/python/node ci ha una cartella pubblic dove ci metti le risorse statiche, tutto il resto viene generato dallo script

                    in php è completamente diverso: un file php è visto come un file dentro la cartella pubblic e l'unico modo per inibire l'accesso è usare htaccess.

                      simonebortolin le query parametriche non servono per evitare le sql injection, una query è già sicura con mysqli_real_escape_string se

                      "se"

                      e' quel se su cui si basano le sql injection.

                      simonebortolin le query parametriche quelle con il ? secondo l'attuale letteratura sono da EVITARE in favore di:

                      cos

                      vabe, mi eietto dal thread

                        • [cancellato]

                        • Modificato

                        simonebortolin ed io che stavo aspettando che aprivi il topic, dopo un po' mi sono stufato di aspettare e lo ho aperto io.... Sto comunque apprezzando molto alcuni commenti altrui

                        Non vivo mica sul forum 😝e per fortuna hai avviata la discussione perché si sta rivelando proprio interessante!

                        [cancellato] Poi ogni linguaggio ha un campo di applicazione dove è meglio di altri - poi c'è chi sceglie il linguaggio in base a quanto costano poco gli sviluppatori (e si vede).

                        WordPress che io sappia rimane in PHP - e rimane uno dei CMS più diffusi. Applicazioni che hanno backend più complessi e con specifici requisiti - spesso di interazione con altre applicazioni - possono beneficiare dall'usare altri linguaggi. In certi ambienti ad esempio fa comodo usare gli application server Java come Tomcat o JBoss. Chi ha a che fare con tecnlogie MS ha sicuramente la vita più facile in .NET.

                        Confermo. Ho lavorato il PHP da autodidatta diversi anni fa ma posso assicurare che la forte tipizzazione e pattern in ambiente .NET lo rende molto più manutenibile e se si cambia azienda tendenzialmente non è un dramma lavorare sul codice di altri

                          • [cancellato]

                          • Modificato

                          simonebortolin le query parametriche quelle con il ? secondo l'attuale letteratura sono da EVITARE in favore di:
                          query classiche con i valori passati come variabile filtrata
                          query autogenerate dal codice in maniera invisibile per l'utente

                          in quanto aumentano in maniera "stupida" la complicazione della query

                          Cultura alimentata da chi con i database non ci ha mai lavorato in vita sua, e non ha mai capito come lavora il query planner. Riusare una stessa query con valori parametrici diversi significa ripescare direttamente dalla cache la migliore strategia di accesso al dato senza rifare l'analisi.
                          Involuzione informatica.

                          Sì, mi stanno abbondantemente sui $gioielli Hibernate e simili, e soprattutto le loro mer(d)avigliose query autogenerate illeggibili ed inutilmente prolisse perché per pigrizia recuperano tutti i campi degli "oggetti" che non servono, o fanno 3000 query per il lazy loading, quando basterebbe sapere cosa si vuole ottenere fin dal principio (ma implica essere capaci a programmare e a fare analisi, cosa non scontata).

                            Braccoz il tuo parere è gradito, non eittarti.

                            [cancellato] Cultura alimentata da chi con i database non ci ha mai lavorato in vita sua, e non ha mai capito come lavora il query planner. Riusare una stessa query con valori parametrici diversi significa ripescare direttamente dalla cache la migliore strategia di accesso al dato senza rifare l'analisi.
                            Involuzione informatica.

                            Ma scusa l'uso di query fatte attraverso comandi domain-specific languages (per esempio le LINQ di C#, o più in generare le funzioni lambda) per effettuare le query non è simile a quello delle query parametriche?
                            In quando mi sembra che la query PDO prima di essere inviata al DB viene compilata e trasformata in SQL.

                            Inoltre il query planner non dovrebbe essere sensibile ai parametri, e il risultato sarebbe simile a quello delle query "classiche" in quanto tutte le query arrivano al DB come stringa. Soprattutto per il fatto che non c'è una sintassi comune tra i vari linguaggi ma ognuno fa a sé (alcuni ? altri @nome, ...)

                            Infine inoltre le Prepared statement non proteggono da attacchi XSS né da attacchi SQL di seconda specie a Trigger o simili, quindi l'input deve essere sempre filtrato a priori.

                            Però forse ho capito: intendi che basta che sia un parametro che cambia ed il query planner non fa l'analisi?

                            [cancellato] Sì, mi stanno abbondantemente sui $gioielli Hibernate e simili, e soprattutto le loro mer(d)avigliose query autogenerate illeggibili ed inutilmente prolisse perché per pigrizia recuperano tutti i campi degli "oggetti" che non servono, o fanno 3000 query per il lazy loading, quando basterebbe sapere cosa si vuole ottenere fin dal principio (ma implica essere capaci a programmare e a fare analisi, cosa non scontata).

                            Sul fatto che ci siano strumenti come l'Hibernate che sono un ufficio complicazioni delle query sono d'accordo, ma non tutti gli strumenti di generazione query via funzioni/dsl sono così

                              Informativa privacy - Informativa cookie - Termini e condizioni - Regolamento - Disclaimer - 🏳️‍🌈
                              P.I. IT16712091004 - info@fibraclick.it

                              ♻️ Il server di questo sito è alimentato al 100% con energia rinnovabile