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

Discussione: Ancora slashes

  1. #1

    Ancora slashes

    Allora ecco il problema,

    Accetto un campo e tramite :

    $nome = mysql_real_escape_string($nome);

    metto gli slashes (un print prima e dopo l'operazione lo conferma)

    Se però guardo nel database (mysql ovviamente) il campo non ha gli slashes ma la funzione non da errore.

    Quando vado a "riprendere" il dato per visualizzarlo:

    $nome = ($row['nome']);

    la visualizzazione è corretta

    Se passo alla modifica però mi trovo il campo "troncato" all'apostrofo/apice.

    Le magic_quotes sono disabilitate

    Dove sbaglio ?

    php 5.2.4

    Enrico

  2. #2
    Se però guardo nel database (mysql ovviamente) il campo non ha gli slashes ma la funzione non da errore.
    Come "guardi nel database"?

    Se passo alla modifica però mi trovo il campo "troncato" all'apostrofo/apice.
    Hai applicatio htmlspecialchars() prima di inserire il valore nell'attributo value del tag input?

  3. #3
    Originariamente inviato da filippo.toso
    Come "guardi nel database"?
    Con PhpMyAdmin vedo il campo e non ha shashes ma è scritto come da input.


    Hai applicatio htmlspecialchars() prima di inserire il valore nell'attributo value del tag input?
    No, questo attributo non l'ho ancora applicato, mi riservavo di farlo appena risolto il problema principale dello slashes.

    Per quello che posso capire l'errore dovrebbe essere nel primo passaggio la visualizzazione mi dice che lo slashe è stato applicato ma poi non me lo registra in mysql.

    grazie

    enrico

  4. #4
    Con PhpMyAdmin vedo il campo e non ha shashes ma è scritto come da input.
    Questo perchp phpMyAdmin si occupa di rimuovere eventuali slashes automaticamente.

    No, questo attributo non l'ho ancora applicato, mi riservavo di farlo appena risolto il problema principale dello slashes.
    Ti suggerisco di studiarti questo codice ed il suo risultato renderizzato dal browser:

    Codice PHP:
    <?php $name ' 123 " 456 '?>
    <input type="text" value="<?php echo($name); ?>" />

    <?php $name htmlspecialchars($name); ?>
    <input type="text" value="<?php echo($name); ?>" />

  5. #5
    Originariamente inviato da filippo.toso
    Questo perchp phpMyAdmin si occupa di rimuovere eventuali slashes automaticamente.
    Perfetto, questo è a posto allora.

    Si presume quindi che nel database il campo abbia lo slashes anche se non posso vederlo tramite phpMyAdmin.

    Però quando riprendo il campo per visualizzarlo lo slashes non c'é.

    Ti suggerisco di studiarti questo codice ed il suo risultato renderizzato dal browser:

    Codice PHP:
    <?php $name ' 123 " 456 '?>
    <input type="text" value="<?php echo($name); ?>" />

    <?php $name htmlspecialchars($name); ?>
    <input type="text" value="<?php echo($name); ?>" />
    Studiato.

  6. #6
    Ho fatto delle nuove prove:

    sia la funzione adslashes che la funzione mysql_escape_string funzionano perfettamente (e vorrei vedere ) se infatti attarverso phpMyAdmin esporto l'archivio mi inserisce correttamente gli slashes.

    Il problema nasce quando io vado a "riprendere" il campo con la funzione:



    $nome = ($row['nome']);

    In questo caso applicare stripslashes non serve a nulla ed il campo in modifica mi risulta "troncato".

    Ho preparato anche un piccolo archivio di prova per verificare il giro ma funziona così.

    Proposte ? Idee ?

    Le magic_quotes ovviamente sono sempre disabilitate.

    enrico

  7. #7
    Codice PHP:
    $nome htmlspecialchars(stripslashes($row['nome'])); 

  8. #8
    Intanto grazie della risposta.

    Però non risolve, li problema si presenta dopo:

    <tr>
    <td align="right" width="235">
    <font face="Arial" color="#FF0000">Nome :</font>

    </td>
    <td>
    <input type="text" name="nome" size="70" maxlength="70"
    <? print "value='$nome'>\n"; ?>
    </td>
    </tr>
    Quando faccio l'input per modificare la variabile ed è qui che mi trovo il campo "trobacato"



    enrico

  9. #9
    Posta un estratto di codice HTML della pagina inviata al browser.

  10. #10
    Ecco come arriva l'html

    <html>
    <head>
    <title></title>
    </head>
    <body bgcolor="#C3E0BD">
    [img]images/intestazioneweb.gif[/img]

    all'attacco
    <form action="updatebib.php" method="post">
    <table>
    <tr>
    <td align="right" width="235">
    <font face="Arial" color="#FF0000">Numero Scheda :</font>


    </td>
    <td>
    <input type="hidden" name="id" value=''>
    </td>
    </tr>
    <tr>
    <tr>
    <td align="right" width="235">
    <font face="Arial" color="#FF0000">Nome :</font>


    </td>
    <td>
    <input type="text" name="nome" size="70" maxlength="70"
    value='all'attacco'>
    </td>
    </tr>

    </table>
    <div align='center'>

    <input type='image' src='images/modifica.gif' border='0' width='200' height='62' alt='' />

    </div>


    </form>
    </body>
    </html>
    Vedo anche io l'apice di troppo nella stringa "all'attacco".

    Ricapitolo:

    magic_off nel php.ini
    addslashes prima di passare la variabile al database (usare mysql_escape_string non cambia la cosa).

    Nel campo del database è tutto ok (lo slashes non si vede tramite phpmyadmin ma mi hai detto che è normale)

    Nel "riprendere" il campo per la modifica l'assegnazione è corretta ma quando faccio la display per poter modificare ottengo il problema.

    enrico

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 © 2026 vBulletin Solutions, Inc. All rights reserved.