Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794

    Mysql - problema con carattere '+' in unsa stringa

    Salve a tutti,

    In una pagina php effettuo l'inserimento a tabella di una stringa che contiene il carattere + (più) ma quest'ultimo viene interpretato come spazio vuoto.

    Es.: se ho il testo PANNOLINI 0+ il risultato viene PANNOLINI 0 (spazio).

    Ho provato ad utilizzare varie funzioni per interpretare quel carattere + ma niente.

    Qualcuno potrebbe aiutarmi?

    Grazie mille.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Senza il codice poca speranza.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Senza il codice poca speranza.
    badaze grazie mille per la risposta.
    Il codice semplicemente è questo:

    include 'conf/connect.php';
    mysql_set_charset("utf8");

    $idevento = $_GET[idevento];
    $regalo = $_GET[regalo];

    $regalo = htmlspecialchars($regalo);
    $insert_new_present = "insert into regalos (idevento, regalo) values ($idevento, '$regalo')";

    mysql_query($insert_new_present);

    La variabile $regalo invece di contenere la stringa "PANNOLINI 0+", contiene "PANNOLINI 0 " e praticamente il carattere + viene sostituito da uno spazio

    Grazie mille.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Il problema sta nell'invio dei dati in GET, non nella query.

    Prova a fare
    echo $_GET['regalo'];

    vedi cosa stampa.

    se i parametri di un URL possono contentere caratteri non alfanumerici, passa sempre il tutto alla funzione urlencode() prima di generare il link.

    P.S. per le chiavi degli array usa sempre gli apici, come se fossero stringhe.

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Vedo che usi il metodo GET. Sicuro che il + viene tramandato con i dati ?

    Se fai un print $regalo; subito dopo l'assegnazione, cosa vedi ?

    Di più :
    • Scriverei $_GET['idevento']; e $_GET['regalo'];
    • Userei mysqli e non più MySQL che non esiste più con php 7.
    • Controllerei in dati in entrata prima di inserirli. Cosi com'è è vulnerabile.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Il problema sta nell'invio dei dati in GET, non nella query.

    Prova a fare
    echo $_GET['regalo'];

    vedi cosa stampa.

    se i parametri di un URL possono contentere caratteri non alfanumerici, passa sempre il tutto alla funzione urlencode() prima di generare il link.

    P.S. per le chiavi degli array usa sempre gli apici, come se fossero stringhe.
    Se faccio un echo $_GET['regalo'] il risultato è sempre lo stesso ovvero PANNOLINI 0 (spazio) e il + sparisce.

    Ho provato a passare il tutto ad una funzione encode in javascript ma niente, caratteri strani.

    Nella pagina dove invio i dati c'è il charset UTF8.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Vedo che usi il metodo GET. Sicuro che il + viene tramandato con i dati ?

    Se fai un print $regalo; subito dopo l'assegnazione, cosa vedi ?

    Di più :
    • Scriverei $_GET['idevento']; e $_GET['regalo'];
    • Userei mysqli e non più MySQL che non esiste più con php 7.
    • Controllerei in dati in entrata prima di inserirli. Cosi com'è è vulnerabile.
    Ho messo gli apici ma niente da fare, il problema è sempre lo stesso.

    I dati in entrata, prima del get sono corretti, il + lo mantiene. In fase di recupero nella pagina PHP il + scompare.

    Grazie mille.

    p.s.: come si passa da mysql a mysqli?

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da ylio82 Visualizza il messaggio
    Ho messo gli apici ma niente da fare, il problema è sempre lo stesso.

    I dati in entrata, prima del get sono corretti, il + lo mantiene. In fase di recupero nella pagina PHP il + scompare.

    Grazie mille.
    Hai letto ciò che ti ho scritto io? Devi usare la funzione urlencode() prima di generare il link coi parametri.

    p.s.: come si passa da mysql a mysqli?
    Usando le funzioni mysqli_ invece di quelle mysql_
    Chiaramente tra le une e le altre ci sono delle differenze, quindi affidati alla documentazione su php.net per sapere quali parametri sono necessari. I nomi delle funzioni sono rimasti più o meno gli stessi, in più c'è la "i"
    Ultima modifica di Alhazred; 27-11-2016 a 13:41

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    794
    [QUOTE=Alhazred;25419604]Hai letto ciò che ti ho scritto io? Devi usare la funzione urlencode() prima di generare il link coi parametri.

    Non posso usare la funzione urlencode() prima di generare il link in quanto uso angularjs e invio i dati ad una pagina php tramite un $http get. Ho provato ad usare una funzione urlencode di javascript ma cmq non succede nulla, anzi prima di inviare i dati al link, il più lo sostituisce con carattere strano.

    Grazie mille

  10. #10
    Quote Originariamente inviata da ylio82 Visualizza il messaggio
    ...il più lo sostituisce con carattere strano...
    quale?

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.