Visualizzazione dei risultati da 1 a 6 su 6

Discussione: S.O.S.

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    129

    S.O.S.

    Dunque... ho un problema che non so risolvere , vi faccio una panoramica della situazione e poi copio i codici....

    Dunque, sito in php con MySql per il db.

    Pagina dalla bachaca (tutti gli utenti fanno un Login).

    L'utente scrive un messaggio con una parola apostrofata del tipo:
    <<Ora mi riposo un po'>> e il messaggio non viene inserito nel db.

    Idem se l'utenete volesse solo modificare un suo messaggio senza apostrofo in un messaggio con l'apostrofo, la modifica non verrebbe fatta.

    Copio qui sotto i codici, il primo è quello della pagina in cui viene scritto il messaggio (a mio avviso tutto ok);
    Il secondo codice è quello della pagina che visualizza il messaggio e che inserisce il record nel db.



    ###1° codice###
    <table cellpadding=2 cellspacing=0 border=0>
    <tr>
    <form action="bacheca.php" method=Post>
    <input type=hidden name=ID value="<?= $IDAraldo ?>">
    <input type=hidden name=p value="<?= $p ?>">
    <input type=hidden name=IDMsg value="<?= $IDMsg ?>">
    <input type=hidden name=IDMsgPadre value="<?= $IDMsgPadre ?>">
    <td valign=top bgcolor=#666666>[img]img/stemmi/<?= $ImgGilda_S ?>[/img] <?= htmlspecialchars($Login) ?> - <?= htmlspecialchars($DescGilda_S) ?></td>
    </tr>
    <? if ($IDMsgPadre > 0) { ?>
    <tr>
    <td valign=top bgcolor=#666666>Commento al messaggio <?= htmlspecialchars($TitoloPadre) ?> di <?= htmlspecialchars($AutorePadre) ?></td>
    </tr>
    <? } ?>
    <tr>
    <td align=left valign=top bgcolor=#666666>Titolo: <input type=text size=65 name=Titolo value="<?= htmlspecialchars($Titolo) ?>"></td>
    </tr>
    <tr>
    <td bgcolor=#666666><textarea cols=72 rows=15 name=Messaggio><?= htmlspecialchars($Messaggio) ?></textarea></td>
    </tr>
    <tr>
    <td bgcolor=#666666><hr size=1 color=gold></td>
    </tr>
    #
    #
    #
    #eccetera... eccetera... si vieni rimandati a bacheca.php
    #
    #
    #
    #</table>
    </body>
    </html>





    Stufi? Ora arriva il bello:


    ###2° Codice###
    <? session_start();
    include #eccetera....
    #
    #
    #eccetera....
    #
    #
    #
    #
    #
    $Messaggio = trim($Messaggio);
    $Titolo = trim($Titolo);
    $Titolo = substr($Titolo, 0, max(255, strlen($Titolo)));

    If ($Titolo == '') {
    $Titolo = 'Nuovo Messaggio';
    }

    If ($Messaggio != '') {
    #I controlli Master + Capo sono impliciti nel codice precedente
    #Effettuare controllo PG Esistente
    If ($IDMsg == '') {
    #----- nuovo messaggio! -----
    $MySql = 'INSERT INTO MessaggioAraldo (IDAraldo, IDMessaggioPadre, Titolo, Messaggio, Autore, IDGilda, Img, Corporazione, IDRazza, DataMessaggio)';
    $MySql .=" VALUES ($IDAraldo,";
    $MySql .=" '$IDMsgPadre',";
    $MySql .=" '$Titolo',";
    $MySql .=" '$Messaggio',";
    $MySql .=" '".pars($Login)."',";
    $MySql .=" '".pars($IDGilda_S)."',";
    $MySql .=" '".pars($ImgGilda_S)."',";
    $MySql .=" '".pars($DescGilda_S)."',";
    $MySql .=" '".pars($IDRazza_S)."',";
    $MySql .=" NOW())";
    #echo $MySql;
    $Result = mysql_query($MySql);

    $MySql = "SELECT * FROM MessaggioAraldo WHERE IDAraldo = '$IDAraldo' ORDER BY IDMessaggio DESC";
    $Result = mysql_query($MySql);
    $rs1 = mysql_fetch_array($Result);
    $IDMsg = $rs1['IDMessaggio'];
    $rs1->close;

    } else {
    #----- correzione messaggio! -----
    $MySql = "UPDATE MessaggioAraldo SET ";
    $MySql .=" Titolo = '$Titolo',";
    $MySql .=" Messaggio = '$Messaggio'";
    $MySql .=" WHERE IDAraldo = '$IDAraldo'";
    $MySql .=" AND IDMessaggio = '$IDMsg'";
    if ($Esilio_S != '1') {
    $MySql .=" AND Autore = '".pars($Login)."'";
    }
    #echo $MySql;
    $Result = mysql_query($MySql);
    }
    #
    #eccetera.......
    #
    #</body>
    </html>


    ---------------------------------------------

    S.O.S. Ho le bacheche bloccate e non so come risolverlo, avevo pensato che mancasse l'htmlspecialchars() ma ho visto che c'è... cosa posso fare?


    Marco

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    129
    Premetto che gli stessi files messi sullo spazio web di www.altervista.org, funzionano correttamente.



  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    129
    Ancora un chiarimento... nel db, utilizzo un campo di tipo text, potrebbe essere quello il problema?


    Marco

  4. #4
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Secondo me dovresti correggere le seguenti cose nei tuoi script:

    1 - usi le variabili globali anzichè $_POST['nome_var'], e questo ti causerà problemi di funzionamento su qualunque macchina con php > 4.2.0 (mi sembra strano che su altervista funzioni)

    2 - fai le query ma non hai messo nessuna segnalazione di errore, io ti consiglio di farle così
    Codice PHP:
    mysql_query($query) or die('La query "'.$query.'" ha restituito il seguente errore: '.mysql_error()); 
    anche se questo mostra la query è non sempre può essere desiderabile, quindi se la query può contenere dati che non vuoi che nessun motivo siano visti evita di stamparla a video, se non in fase di sviluppo.

    Per quanto riguarda il tuo errore al 99% potresti risolvere chiamando la funzione mysql_escape_string sui dati prima di inserirli, infatti è proprio l'apice che ti causa un errore di sintassi mysql.

    Ciao.

  5. #5
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    aggiungi

    $frase = addslashes($frase);
    prima di inserire il commento, la frase o quello che sia nel db, e poi metti

    stripslashes($frase)

    quando li devi mostrare

    a) studia il regolamento del forum (con quel titolo, ti kiuderanno il 3d di sicuro)
    b) studia i caratteri di escape
    c) http://it2.php.net/manual/it/function.addslashes.php e http://it2.php.net/manual/it/function.stripcslashes.php

  6. #6
    leggi il regolamento e riapri la discussione con un titolo a norma
    ciao

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.