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

    verificare versione tabella

    ciao

    stavo pensando ad un modo che permetta alla mia applicazione di essere "sicura" del fatto che sta lavorando su un database strutturato in un particolare modo...

    ad esempio, supponiamo che una particolare classe o un insieme di funzioni usate per gestire un "modulo" necessitino della "tabella_a"

    cosa posso fare, per assicurarmi che una eventuale "tabella_a" presente nel database sia esattamente come mi aspetto io?

    la soluzione a cui ho pensato è:
    faccio un "describe table tabella_a" e il risultato lo metto in una funzione di hash, ad esempio MD5.

    Il risultato melo salvo nel codice e poi prima di caricare il modulo o l'insieme di funzioni faccio una cosa del tipo:

    Codice PHP:
    //stringa contentente il risultato della query "describe table tabella_a"
    $res="row 1 | rw 2 | ecc ecc";

    //hash ottenuto facendo l'md5 dell'ultima tabella utilizzata per questo modulo
    $hash="fjd593428432jdashedhsaiu.....";

    if(
    md5($res)==$hash){
    echo 
    "modulo ok";
    }else{
    echo 
    "la tabella presente nel database non va bene";


    cosa ne pensate?
    ciao e grazie
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  2. #2
    up..
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  3. #3
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    DESCRIBE <tabella> dà sempre gli stessi risultati da versione a versione di MySQL, oppure le versioni nuove magari aggiungono qualcosa all'output?

    [.:: JaguarXF ::.]
    __________________

  4. #4
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Eureka: sul libro "MySQL" di Paul DuBois, vi è scritto che alcune versioni di MYSQL riportano anche informazioni sulla sicurezza [....] a seguito di interrogazioni con DESCRIBE.

    Credo il metodo non vada bene.


    [.:: JaguarXF ::.]
    __________________

  5. #5
    il mio controllo non fa riferimento alla versione di mysql, ma alla struttura della tabella

    supponiamo di avere una tabella cosi
    codice:
    mysql> describe news;
    +-------------+--------------+------+-----+------------+----------------+
    | Field       | Type         | Null | Key | Default    | Extra          |
    +-------------+--------------+------+-----+------------+----------------+
    | id          | int(11)      | NO   |     | NULL       |                    | 
    | data        | date         | NO   |     | 0000-00-00 |                | 
    | titolo      | varchar(255) | NO   |     | NULL       |                | 
    | categoria   | varchar(255) | NO   |     | NULL       |                | 
    | descrizione | varchar(255) | NO   |     | NULL       |                | 
    | inizio_pub  | date         | NO   |     | 0000-00-00 |                | 
    | fine_pub    | date         | NO   |     | 0000-00-00 |                | 
    | id_foto     | int(11)      | NO   |     | 0          |                | 
    +-------------+--------------+------+-----+------------+----------------+
    che poi, per vari motivi viene aggiornata cosi


    codice:
    mysql> describe news;
    +-------------+--------------+------+-----+------------+----------------+
    | Field       | Type         | Null | Key | Default    | Extra          |
    +-------------+--------------+------+-----+------------+----------------+
    | id          | int(11)      | NO   | PRI | NULL       | auto_increment | 
    | data        | date         | NO   |     | 0000-00-00 |                | 
    | titolo      | varchar(255) | NO   |     | NULL       |                | 
    | categoria   | varchar(255) | NO   |     | NULL       |                | 
    | descrizione | varchar(255) | NO   |     | NULL       |                | 
    | inizio_pub  | date         | NO   |     | 0000-00-00 |                | 
    | fine_pub    | date         | NO   |     | 0000-00-00 |                | 
    | id_foto     | int(11)      | NO   |     | 0          |                | 
    +-------------+--------------+------+-----+------------+----------------+

    poi io, o chi amministra il tutto, aggiorna il codice ma non il database
    il campo id diventa autoincrement, l'applicazione ne tiene conto, ma se la tabella non viene aggiornata potrebbero uscire dei problemi...


    il mio sistema permette di notificarlo all'utente

    per quanto riguarda il discorso della sicurezza... detto cosi vuol dire niente e tutto... di per sè anche tenere attivo mysql è meno sicuro di tenere la macchina spenta... ;-)

    tu cosa proponi visto che il metodo non ti piace?
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  6. #6
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Non ci siamo capiti.
    Diverse versioni di MySQL potrebbero dare un output diverso a seguito di un DESCRIBRE pur se le la struttura delle tabelle è la medesima, dacchè potrebbero includere più informazioni riguardo il DESCRIBE stesso.

    Quindi l'hash sarebbe totalmente differente...

    [.:: JaguarXF ::.]
    __________________

  7. #7
    ah, ok, scusami non avevo capito!

    beh, in tal caso hai completamente ragione...

    come non detto!

    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  8. #8
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Così è scritto sul libro detto.
    In ogni modo, io non lo farei, è sempre possibile che nel futuro cambi qualcosa...


    [.:: JaguarXF ::.]
    __________________

  9. #9
    se quello che ti interessa e' verificare i cambiamenti strutturali della tabella controlla la data ora dell'ultima modifica del file .frm con filectime

    ti rende il timestamp dell'ultima modifica.... ma mi pare strano che uno user debba preoccuparsi di una tabella che deve essere assolutamente trasparente per lui....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Originariamente inviato da piero.mac
    se quello che ti interessa e' verificare i cambiamenti strutturali della tabella controlla la data ora dell'ultima modifica del file .frm con filectime
    Scusa, ma in caso di più installazioni a più clienti??

    ma mi pare strano che uno user debba preoccuparsi di una tabella che deve essere assolutamente trasparente per lui....
    A me pare un'idea molto intelligente invece. Certo all'utente non interessa, ma il programma potrebbe bloccarsi con un dato codice di errore onde evitare kaKate...

    [.:: JaguarXF ::.]
    __________________

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.