Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    46

    Problema query con un "&"

    Sicuramente è una cavolata, solo che non riesco a venirne a capo..

    In pratica ho un input di tipo testo in cui va inserita una variabile e in base al valore di quella variabile estraggo dei dati con una query di selezione.

    Il problema è che in quel campo di input ci potrebbe anche essere una variabile che contiene caratteri speciali, in particolare mi è capitato un &

    Ho provato, chiamato il mio input "variabile", a inserire htmlspecialchars prima della query del tipo:


    $variabile = htmlspecialchars ($variabile);

    $sql = "SELECT * FROM tabella WHERE campo='$variabile'";

    ma quando mi estraggo i record non ne trovo nemmeno uno..
    Ho provato a vedere cosa mi passa $variabile dopo averla fatta passare per htmlspecialchars ma mi risulta solo tutto ciò che è a sinistra di &, ad esempio se $variabile=tom&jerry vedo solo $variabile=tom

    Cosa devo fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    secondo me non ti arriva proprio il secondo pezzo , il secondo pezzo (jerry) viene interpretata come nuova variabile.
    prova ad usare il metodo post per inviare i dati.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    46
    prova ad usare il metodo post per inviare i dati.
    Lo uso già in quel form..

  4. #4
    $variabile = str_replace("&","_",$variabile);
    oppure
    $variabile = str_replace("&","\&",$variabile);

    \ dovrebbe essere interpretato come carattere di escape...
    http://www.mcganass.com

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    46
    Niente da fare, mi vede solo "tom" e non "tom&jerry"..

  6. #6
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    ho provato a fare come Mcgannas ma ci vorrebbe un secondo passagio:
    $variabile = str_replace("&","\&",$variabile);
    fin qui prende il carattere come testo normale e non particolare ma aggiunge lo slash.
    $variabile = str_replace("\&","&",$variabile);
    qui esce lo slash con la &(\& e compromette il nome)
    quindi levo la barretta da qusta \& interpretata ora come carattere normale.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    46
    Già prima del primo passaggio però mi elimina "&jerry" quindi anche aggiungendo e togliendo le slashes non trova il carattere & cui aggiungerle.

  8. #8
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Io ho provato questo e funziona. Mi stampa tom&jerry.
    $variabile = 'tom&jerry';
    $variabile = str_replace("&","\&",$variabile);
    $variabile = str_replace("\&","&",$variabile);
    echo $variabile;

  9. #9
    htmlspecialchars dovrebbe funzionare, ma visto che si stanno provando un pò di strade quando recuperi la variabile prova a fare così:

    codice:
    $variabile=htmlentities($_POST['varibaile'], ENT_QUOTES);
    echo $variabile;


    cosa ottieni?
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    il problema, penso, è che il valore arriva in post ed al momento di recuperare il valore del campo, nel passaggio sparisce &jerry
    prova a mettere nel php di arrivo dal post
    Codice PHP:
    foreach ($_POST as $variabile)
    {
    echo 
    $variabile.' valore '.$_POST[$variabile].'
    '
    ;


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.