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

    Consigli nel ristrutturare un sito in PHP

    Ciao a tutti,
    Negli ultimi anni ho realizzato (copiato/studiato e modificato diversi script presenti su internet) diversi siti.
    Non è mai stata una cosa professionale, mi occupo di tutt'altro (ne web, ne design, e neanche informatica).
    L'avvicinamento al web è nato per caso, ma non ho avuto mai troppo tempo per approfondire il tutto per bene.
    Finalmente ho 10-15 giorni completamente liberi, e testa completamente libera dato che il viaggio a fine settembre è già perfettamente programmato!
    Comunque arrivo al dunque.
    Il sito a cui tengo di più è fatto con i piedi, e ho deciso di ristrutturarlo (rifarlò se si considera che l'unica cosa che penso tenere uguale è il database).
    Ho già letto quale è la preuccupazione maggiore nel ristrutturare un sito, "il posizionamento nei motori di ricerca", e ho anche visto che esistono centinaia di post che trattano tale problema.
    La mia domanda principale è un'altra:
    Avete consigli particolari da suggerire riguardo a moderni siti in php, a cosa devo prestare particolare attenzione?
    Ad esempio, ho notato che il mio vecchio sito era conforme al linguaggio php4, e ho deciso adesso di fare tutto in php5;
    ci sono altre cose che posso migliorare?
    Spero in qualche consiglio, perchè mi sono accorto che "se progetti male il primo pezzo di una struttura, è inutile cercare di rimediare con i pezzi successivi"!

  2. #2
    E' difficile darti una risposta generica e completa... vado un po' a naso...

    (*) Non fare due volte quello che puoi fare una volta. Per esempio, non scrivere in più pagine il codice per aprire una connessione e inviare una query; fallo in una sola funzione (o classe, se sei capace) e chiamala in tutte le pagine. Addirittura, se tutto il sito usa lo stesso template grafico, può essere un'unica pagina che, a seconda dei parametri ricevuti nella querystring, ne include altre.
    (*) SQL injection. Tanta gente non ci bada... e fa molto male. Ho visto perfino un programma per gestire la contabilità aziendale che è vulnerabile alle SQL injection.
    (*) URL leggibili. Aiutano sia i motori di ricerca sia gli utenti. Ad esempio, se ogni articolo ha un permalink:
    http://tuosito.it/?La_mia_autobiografia
    (*) Quando qualcosa non funziona, tu lo devi sapere. Metti delle if in punti strategici, per controllare che una certa operazione sia andata a buon fine. E se non è andata, registra l'errore da qualche parte e/o mandati una mail. Il messaggio di errore deve essere chiaro e preciso, ma non lungo.
    if ( !$dbLink->num_rows ) {
    $err = "[" . __FILE__ . "] Articolo non trovato; ID: $id";
    error_log($err, 1, 'tua@mail.it');
    }
    (*) Non fare mai:
    $sql = "SELECT * FROM xxx WHERE id=$_GET[id]";
    Non dovrebbe essere permesso e implicitamente crei una costante.

  3. #3
    Grazie,
    mi sembrano ottimi punti di partenza!
    Ho anche notato che spesso conviene costruire a blocchi, così è più facile trovare e modificare/ristrutturare una parte indipendentemente dalle altre.
    L'url encode per ora lo volevo tralasciare (tempo fa ci avevo messo giorni per capire il sistema, senza arrivare a una buona soluzione) , o è meglio considerarlo sin dall'inizio?
    Per quanto riguarda connessioni,query e inclusione di script vari, conviene farli tutti prima in un unico blocco?
    L'ultimo punto,
    (*) Non fare mai: $sql = "SELECT * FROM xxx WHERE id=$_GET[id]"; Non dovrebbe essere permesso e implicitamente crei una costante.
    non comprendo l'errore; è la mancanza di un controllo (tipo int....) o qualcos altro?

  4. #4
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    Una cosa anche utile sarebbe usare i template in modo da separare il linguaggio lato server dalla struttura xhtml.
    Errare humanum est, perseverare ovest

  5. #5
    scegliti un framework e rifarlo basandolo su di esso..dubito che ti basterebbero 15gg cmq
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Originariamente inviato da Pizzair
    Ho anche notato che spesso conviene costruire a blocchi, così è più facile trovare e modificare/ristrutturare una parte indipendentemente dalle altre.
    Per blocchi intendi pagine che vengono incluse?
    Se il tuo sito ha più di un template grafico e ci sono delle parti di pagina che vengono ripetute (intestazione, piè di pagina, menu...), allora sì.

    L'url encode per ora lo volevo tralasciare (tempo fa ci avevo messo giorni per capire il sistema, senza arrivare a una buona soluzione) , o è meglio considerarlo sin dall'inizio?
    Meglio farlo nel modo giusto fin dall'inizio, così non rischi di rifarlo dimenticandoti qualche pezzo

    Per quanto riguarda connessioni,query e inclusione di script vari, conviene farli tutti prima in un unico blocco?
    Supponendo che tu non sappia usare le classi, fai una funzione query:
    query(&$dbLink, $sql)
    Questa funzione controlla se $dbLink è una connessione aperta; se non lo è, la apre e assegna a $dbLink. Il simbolo strano significa che viene passata per referenza, e quindi tutte le modifiche che subisce all'interno della funzione rimangono anche nel resto della pagina.

    non comprendo l'errore; è la mancanza di un controllo (tipo int....) o qualcos altro?
    Intanto ti espone all'SQL injection. E poi, la sintassi giusta è:
    $_GET["id"]
    Ovviamente dentro le virgolette devi scrivere $_GET[id], altrimenti non funzionerebbe. Ma id non è una stringa, è una costante (le parole che non hanno un significato per PHP ma non iniziano con $ sono costanti). Siccome però la costante non è stata definita, la definisci implicitamente sul momento, e il suo valore è uguale al nome. Questa è una cosa sporchissima che succede solo in PHP.
    Se dopo cercherai di definire la costante:
    define('id', 128);
    ti darà errore, perchè l'hai già definita implicitamente.
    Non so se sono stato chiaro, mi rendo conto che è un processo un po' contorto...

  7. #7
    Grazie per tutte le risposte,

    scegliti un framework e rifarlo basandolo su di esso..dubito che ti basterebbero 15gg cmq
    Una cosa anche utile sarebbe usare i template in modo da separare il linguaggio lato server dalla struttura xhtml.
    ho già fatto un template migliorato, che migliorerò ulteriormente in futuro;
    per ora mi interessava maggiormente la parte in php;
    Non conosco nessun framework, ma sinceramente non vorrei utilizzarli; so che utilizzandoli risparmio tempo ed esce un prodotto nettamente migliore; preferisco fare da me.... (non so neanche io per quale motivo, forse perchè non amo vedere cose troppo simili, chissà se c'è qualcuno che la pensa come me!)

    Meglio farlo nel modo giusto fin dall'inizio, così non rischi di rifarlo dimenticandoti qualche pezzo
    Il vantaggio di utilizzare l'url rewrite è talmente positivo da renderne l'utilizzo "obbligatorio"?

    Ma id non è una stringa, è una costante (le parole che non hanno un significato per PHP ma non iniziano con $ sono costanti). Siccome però la costante non è stata definita, la definisci implicitamente sul momento, e il suo valore è uguale al nome. Questa è una cosa sporchissima che succede solo in PHP. Se dopo cercherai di definire la costante:
    Questa cosa con le costanti mi era già apparsa quand tempo fa utilizzavo EasyPhp, ma non ero mai riuscito a spiegarmi il perchè, e a modo mio, per "cancellare" i Notice, definivo le costanti prima di utilizzarle, grazie per la spiegazione!

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.