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

    Limite di un campo lontext:remoto si, locale no

    Ciao a tutti,

    vi spiego subito il problema. Io inserisco tramite una form PHP in una tabella MySQL delle notizie che vanno poi visualizzate tramite uno script php. La mia tabella è fatta così:

    codice:
    `id` int(11) NOT NULL auto_increment,   
    `data1` date NOT NULL,   
    `titolo` varchar(255) NOT NULL,   
    `testo` longtext NOT NULL,   
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;
    Sul mio server locale quando vado materialmente a fare l'inserimento questo va che è una meraviglia ed inserisce tutto quanto gli do in pasto. Ora, il problema si presenta sul server remoto: faccio lo stesso identico inserimento con gli stessi dati nella stessa tabella e li non funziona. Non prova nemmeno a fare l'inserimento nel DB e non risco a capire perchè.

    Si tratta forse di un'impostazione errata che è stata data al server remoto? Devo richiedere modifiche particolari?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  2. #2
    Sarebbe opportuno vedere il codice che utilizzi ed una copia del messaggio di errore restituito da mysql_error() quando la query non va a buon fine.

  3. #3
    questo è il codice che va ad inserire i dati nel DB

    Codice PHP:
    <?php
    session_start
    ();
    require(
    "./../conf/dbconf.inc.php");
    dbConnect();
    $res mysql_query"SELECT utenti_accesso.id FROM utenti_accesso, log_accessi WHERE utenti_accesso.id = log_accessi.id_utenti_accesso AND log_accessi.session_id = '".session_id()."';" );
    if (
    mysql_num_rows($res) > 0) {
        
    $dateform explode'/'$_POST["data1"] );
        
    $datafin $dateform[2].'-'.$dateform[1].'-'.$dateform[0];
        
    $tit =mysql_real_escape_string($_POST["titolo"]);
        
    $titolo stripslashes($tit);
        
    mysql_query"INSERT INTO news ( titolo, testo, data1 ) VALUES ('".$titolo."', '".$_POST["testo"]."', '".$datafin."');" );
        
    header ("LOCATION: ./new_elenco.php");
    } else {
        
    header ("LOCATION: ./index.php");
    }
    dbClose();
    ?>
    adesso apporto qualche modifica per la generazione dell'errore di mysql e poi posto anche quello
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  4. #4
    Perchè non applichi mysql_real_escape_string() a tutti i valori utilizzati nella query?

  5. #5
    Originariamente inviato da filippo.toso
    Perchè non applichi mysql_real_escape_string() a tutti i valori utilizzati nella query?
    Ho provato come mi hai suggerito di applicare mysql_real_escape_string() a tutti i valori della query, però non è cambiato nulla. In più non riesco a far generare l'errore con il relativo codice. Potresti cortesemente dirmi come applicare mysql_errno() e mysql_error() al mio codice?

    --- EDIT ---

    ecco il codice modificato per il mysql_real_escape_string()

    Codice PHP:
    <?php
    session_start
    ();
    require(
    "./../conf/dbconf.inc.php");
    dbConnect();
    $res mysql_query"SELECT utenti_accesso.id FROM utenti_accesso, log_accessi WHERE utenti_accesso.id = log_accessi.id_utenti_accesso AND log_accessi.session_id = '".session_id()."';" );
    if (
    mysql_num_rows($res) > 0) {
        
    $dateform explode'/'$_POST["data1"] );
        
    $datafin $dateform[2].'-'.$dateform[1].'-'.$dateform[0];
      
    mysql_real_escape_string(mysql_query"INSERT INTO news ( titolo, testo, data1 ) VALUES ('".$_POST["titolo"]."', '".$_POST["testo"]."', '".$datafin."');" ));

        
    header ("LOCATION: ./new_elenco.php");
    } else {

        
    header ("LOCATION: ./index.php");
    }
    dbClose();
    ?>
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  6. #6
    mi era venuto il sospetto che il tipo di carattere longtext non riuscisse a contenere tutto il testo che inserivo, però sul sito di mysql viene riportato quanto segue:

    codice:
    A TEXT column with a maximum length of 4,294,967,295 or 4GB (232 – 1) characters
     The effective maximum length is less if the value contains multi-byte characters. 
    The effective maximum length of LONGTEXT columns also depends on the configured maximum packet size in the client/server protocol and available memory. 
    Each LONGTEXT value is stored using a four-byte length prefix that indicates the number of bytes in the value.
    quindi il difetto credo risieda nella configurazione del server remoto.... Spero che qualcuno mi smentisca.....
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  7. #7
    Guarda che stai facendo degli errori macroscopici.

    Per prima cosa, se non sai come usare delle funzioni, leggi il manuale ufficiale:

    http://www.php.net/mysql_query // Example #1 Invalid Query
    http://www.php.net/mysql_real_escape_string // Example #1 Simple mysql_real_escape_string() example
    http://www.php.net/mysql_error // Example #1 mysql_error() example
    http://www.php.net/get_magic_quotes_gpc // Example #1 get_magic_quotes_gpc() example

  8. #8
    scusa ma non ti seguo. Ad esclusione del manuale riguardante le magic quotes, gli altri li avevo già visti e utilizzati. Con l'attuale codice sul mio server funziona perfettamente e fa gli inserimenti senza nessun bisogno di modifiche.
    Mi potresti cortesemente indicare quali sono questi errori macroscopici che ho fatto?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  9. #9
    esempio mysql_real_escape_string va applicato alle variabili e non alla funzione mysql_query?

  10. #10
    Originariamente inviato da Neo996sps
    scusa ma non ti seguo. Ad esclusione del manuale riguardante le magic quotes, gli altri li avevo già visti e utilizzati.
    Hai scritto "non riesco a far generare l'errore con il relativo codice". Questo significa che le due pagine relative a mysql_query() e mysql_error() non le hai lette ne utilizzate .

    Se hai letto la pagina relativa a mysql_real_escape_string() si vede che non lo hai fatto con la dovuta attenzione perchè il modo con cui hai utilizzato la funzione nel terzo post è totalmente errato.

    Per finire con get_magic_quotes_gpc(), nel primo post applicavi mysql_real_escape_string() a $_POST["titolo"] per poi annullarne totalmente l'efficacia tramite stripslashes().

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.