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

Discussione: [PHP] stripslashes

  1. #1
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732

    [PHP] stripslashes

    Ciao ragazzi,

    domanda stupida: ma quando si usa la funzione stripslashes()?

    Sò a cosa serve ma a tutti gli effetti quando faccio una insert a DB previo addslashes() poi da PhpMyAdmin vedo il testo corretto e senza gli slash davanti quindi ad esempio (\ ") e non (\\ \")

    Dato questo quando vado a recuperare i dati dalla tabelle non ho alcun bisogno di stripslashes(), è normale questo? Dipende dalla versione di MySQL che fa uno stripslashes dall'SQL?

    Uso la 5.0.15 grazie a XAMPP.

    Grazie anticipatamente per le risposte.

  2. #2
    Utente di HTML.it L'avatar di Angarat
    Registrato dal
    Nov 2003
    Messaggi
    157
    secondo me dipende da come è configurato php...

  3. #3
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Originariamente inviato da Angarat
    secondo me dipende da come è configurato php...
    Nello specifico?

    se faccio un ECHO dell'SQL vedo ad es:
    Codice PHP:
    INSERT INTO tabella SET campo '\"' 
    poi però a DB ho solo " e non \"

    a questo punto mi chiedo se è SEMPRE così oppure perchè si usa stripslashes() nel recupero dei dati da DB.

    Queste ed altre cosucce tipo htmlentities() mi stanno facendo un pò impazzire quindi volevo avere le idee chiare.

  4. #4
    Se ad esempio hai php configurato con magic_quotes_gpc attivo e passi una stringa con addslashes ti ritroverai una stringa del genere da inserire nel db
    $stringa = "L\\\'acqua è salata";

    In questo caso ti serve stripslashes

  5. #5
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Originariamente inviato da cubalibre810
    Se ad esempio hai php configurato con magic_quotes_gpc attivo e passi una stringa con addslashes ti ritroverai una stringa del genere da inserire nel db
    $stringa = "L\\\'acqua è salata";

    In questo caso ti serve stripslashes
    Si ma in sarebbe inutile fare prima l'addslashes in questa situazione, cosicche si tornerebbe al punto di partenza dato che l'addslashes viene fatto in automatico dalla direttiva magic_quotes impostata ad ON.

    Per completezza infatti ho disabilitato le MAGIC_QUOTES in PHP

  6. #6
    Si ok, ma non tutti possono modificare le impostazioni del PHP, se poi a te non serve non la usi

  7. #7
    Utente di HTML.it L'avatar di Angarat
    Registrato dal
    Nov 2003
    Messaggi
    157
    infatti prima è meglio testare il server di lavoro (remoto) e configurare poi il server di test (locale)...

  8. #8
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Si scusa se insisto ma a me sembra che qui PHP non centri.

    Se le MAGIC_QUOTES sono attive NON faccio l'addslashes()

    SE le MAGIC_QUOTES non sono attive faccio l'addslahes()

    ma questo mi serve solo per evitare l'SQL INJECTION poi a DB io, come detto prima, vedo i caratteri senza lo slash anteposto, quindi quando vado a recuperarli IN QUALE CASO mi devo avvalere di stripslashes()?

    io da PhpMyAdmin vedo (\ ") e non (\\ \")

    è così solo su MySQL 5?

    Se si allora si spiegherebbe la NON necessità in questo caso di stripslashes.

    Su MySQL 4.x come si vede?

    Così (\ ") o cosi (\\ \")?

    Grazie.

  9. #9
    Si scusa se insisto ma a me sembra che qui PHP non centri.
    stripslashes è una funzione php

    Se le MAGIC_QUOTES sono attive NON faccio l'addslashes()

    SE le MAGIC_QUOTES non sono attive faccio l'addslahes()
    Non sempre ci si trova a lavorare su db con record inseriti da script propri, potresti trovarti nella situazione in cui i record sono stati inseriti usando addslashes() e con magic_quotes abilitato, da un cms che non ha effettuato il controllo ad esempio, e quindi con qualcosa del genere "L\\\'aereo volava ad alta quota"

    è così solo su MySQL 5?
    Su MySQL 4.x come si vede?
    Il manuale di php parla di database, non di MySql, ora io non lo so, ma potrebbe tornar utile con altri tipi di database


    Per concludere può capitare che magic_quotes_gpc sia disabilitato, tu fai addslashes, inserisci nel db e poi vuoi riutilizzare quella stessa variabile in un echo ad esempio (senza usarne una seconda)

  10. #10

    .........

    Ciao.
    Codice PHP:
    if (!get_magic_quotes_gpc()) {
       
    $lastname addslashes($_POST['lastname']);
    } else {
       
    $lastname $_POST['lastname'];

    Questo ti evita i doppi //.
    Si usano addslashes per fare l'escape
    dei caratteri quote ('), double quote ("), backslash (\)
    che possono dar noia al database.
    Quando recuperi i valori dal Db non importa usare stripslashes
    in quanto la stringa recuperata non contiene slashes
    in quanto servono solamente appunto per fare escape.
    Provare per credere.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.