Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Sfruttare errori query mysql: è corretto?

    Ciao a tutti. Sto imparando i rudimenti di PHP e mysql e, avendo trovato una soluzione comoda ma "a naso" non ideale, vi pongo il mio quesito.

    E' corretto inserire in un ciclo if come condizione una query al database, sapendo che la query potrebbe portare, ad esempio, ad un dato inesistente o addirittura ad una tabella inesistente e in questi casi creare un else specifico?

    Ad esempio:

    if (query che genera un errore di connessione) {
    azione 1 }

    else {
    azione 2}

    Risultato: azione 2

  2. #2
    Fare un catching degli errori potrebbe essere una cosa utile ma molto più difficile di quanto tu possa credere.
    Hai presente quanti errori restituisce MySQL???
    Vorresti prevedere un'azione alternativa per ognuno??

    Peraltro, metti che MySQL restituisca un errore perché un qualche hacker tenta di bucare il tuo sito.
    Fornirgli una via alternativa (piuttosto che un DIE) potrebbe significare, garantirgli l'accesso.

    Non trovi??
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Ma io non volevo prevedere un azione per ogni tipo di errore. A me serviva um meccanismo che, quando c'è un errore qualsiasi nella connessione mysql, generasse del codice php alternativo. Non avevo però pensato al problema sicurezza.

    Comunque ho trovato una soluzione migliore usando una query sql più specifica con IF EXISTS ed ELSE

  4. #4
    Originariamente inviato da arx707
    A me serviva um meccanismo che, quando c'è un errore qualsiasi nella connessione mysql, generasse del codice php alternativo.
    Esiste già: è la funzione DIE().
    Se nella funzione poi metti una altra funzione o del codice PHP, questo viene correttamente eseguito.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    ottimo! grazie!

  6. #6
    Originariamente inviato da arx707
    Ma io non volevo prevedere un azione per ogni tipo di errore. A me serviva um meccanismo che, quando c'è un errore qualsiasi nella connessione mysql, generasse del codice php alternativo. Non avevo però pensato al problema sicurezza.

    Comunque ho trovato una soluzione migliore usando una query sql più specifica con IF EXISTS ed ELSE

    solo una cosa...tu non devi pensare che nel tuo programma possano verificarsi errori, tu devi fare in modo che non si verifichino.

    Creare un query con "IF EXISTS" non ha senso...se una tabella non esiste tu non devi fare alcuna query su quella tabella, mentre se la tabella esiste (e tu lo sai se una tabella esiste) ma è vuota allora la query non ti darà errori ma semplicemente non ti restituirà nulla (nel caso di una select)

    tu nel tuo codice non devi mai permettere cose tipo:
    Codice PHP:
    $tabella $_GET['tabella'];

    mysql_query("SELECT * FROM $tabella WHERE ..."); 
    non devi fare query su tabelle che non esistono, se permetti qualcosa del genere al 90% il database che hai strutturato è fatto male.

    Gli errori non vanno "sfruttati" ma vanno evitati e corretti.
    Administrator of NAMDesign.Net

  7. #7
    Infatti la tabella esiste. Ma ti spiego la situazione, magari, si trova una soluzione migliore.

    Ho una tabella "pagine" che contiene tutte le pagine.
    Ho poi una seconda tabella "menu" che contiene la posizione delle pagine nel menu
    Le due tabelle vanno separate perchè voglio che sia così concettualmente.

    Se però aggiungo una pagina nella tabella "pagine", devo fare in modo che la tabella "menu" se ne accorga e si aggiorni quando avvio una pagina php.

    Quindi in parole povere devo verificare se, per ogni riga della tabella "pagine", esista già una riga nella tabella "menu" ed eventualmente creare questa riga

  8. #8
    beh allora quando crei un nuovo elemento nella tabella "pagine" fai lo stesso con la tabella "menu" ma in questo modo:

    codice:
    REPLACE INTO menu ...
    in modo che la funzione REPLACE di MySQL faccia il lavoro sporco, ovvero se la riga (il riferimento) esiste nella tabella menu allora la aggiorna altrimenti la crea.
    Administrator of NAMDesign.Net

  9. #9
    Ok ci provo!

  10. #10
    Originariamente inviato da LeaderGL
    Gli errori non vanno "sfruttati" ma vanno evitati e corretti.
    Sono d'accordo, ma non del tutto.
    Prendo un esempio e ne descrivo lo scenario.
    Pagina pubblica di un qualsiasi sito, prendiamo un visualizzatore di news.
    La pagina sarà una serie di link a "leggi_news.php?id=xxx".
    Ora mettiamo che qualche utente, più o meno smaliziatamente sostituisca il numero che visualizza la news con un numero qualsiasi, o peggio ancora con una stringa malevola.
    La query DEVE essere bloccata e restituire un errore gestito in maniera oculata.
    Non trovate???

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.