Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    residenza
    Cagliari
    Messaggi
    198

    Prevenire visualizzazioni distorte di apostrofi e lettere accentate

    Partendo da una pagina, rimando due informazioni contenenti i seguenti testi "L'uccello vola" e "L'uccello canta" sulla pagina successiva in questo modo:

    Link di destinazione: MioSito.com/pagina.php?TITOLO=<?php the_title(); ?>&TITOLO2=<?php echo get_post_meta($post->ID, 'TITOLO_2', true); ?>


    La pagina di destinazione possiede il seguente codice:
    <?php echo $_GET['TITOLO'] ?>
    <?php echo $_GET['TITOLO2'] ?>

    Ma inspiegabilmente viene visualizzato:
    L’uccello vola
    L'uccello canta

    Esiste una particolare motivazione per cui l'informazione derivante dal php the_title debba essere storpiata, mentre invece quella del post_meta rimanga intatta?

    C'è un modo per eludere questo problema?

    Grazie


    EDIT: C'è anche un secondo problema...
    Quando l'url soprastante viene aperto NON da link diretto come ipotizzavo sopra, ma da script (ad esempio da un banale if x else y url=z) succede che:

    - Nel caso di php the_title, "L'uccello vola" viene ridotto a un banale L

    - Nel caso il post_meta contenga un apostrofo, il link non viene aperto a seguito del click, e si finisce per cliccare a vuoto come se l'url di destinazione impostato fosse un '#'
    Ultima modifica di danielepalmas88; 26-09-2016 a 12:19

  2. #2

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2010
    residenza
    Cagliari
    Messaggi
    198
    E' davvero molto molto dispersivo e tende a confondere la spiegazione che viene fornita.
    Poi in basso ci sono gli esempi forniti dagli utenti, che son tutti strutturati in una maniera diversa

    Alla fine ho provato a prendere il seguente codice, l'ho inserito nella mia pagina di destinazione...ma nada...! Non va.

    <?php
    function myUrlEncode($string) {
    $entities = array('%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D');
    $replacements = array('!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");
    return str_replace($entities, $replacements, urlencode($string));
    }
    ?>

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ma perché myUrlencode?
    Usa la funzione nativa così com'è e basta, i contributi degli utenti sono cose in più, ma la funzione urlencode() già fa il suo dovere.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2010
    residenza
    Cagliari
    Messaggi
    198
    Continuo a non capire. Scusate, ma credo di essere un po' tardo :"D o forse semplicemente incompetente.

    Premesso che il link di partenza si trova dentro una pagina wordpress, mentre quella di destinazione è una normale pagina .php che sta su un dominio esterno, dove dovrei inserire la stringa urlencode?
    a) header.php
    b) single.php
    c) pagina di destinazione

    E poi, va messa così com'è <?php echo '<a href="mycgi?foo=', urlencode($userinput), '">'; ?>

    Oppure deve diventare qualcosa del tipo <?php echo '<a href="MioSito.com/pagina.php?INFORMAZIONE=', urlencode($userinput), '">'; ?>

    Scusate la basilarità delle domande, ma davvero non sono molto pratico, e pur leggendo le guide non riesco proprio ad interpretare
    Ho provato un sacco di esperimenti invertendo le varie ipotesi summenzionate, ma nessuna ha dato esito positivo...!
    Ultima modifica di danielepalmas88; 26-09-2016 a 17:13

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    $userinput = "L'uccello vola";
    <a href="miosito.com/pagina.php?informazione=<?php echo urlencode($userinput) ?>">Link</a>

    Poi in pagina.php riprendi il parametro con
    $parametro = urldecode($_GET['informazione']);

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2010
    residenza
    Cagliari
    Messaggi
    198
    Grazie infinite :-)

    C'è però un altro problema: questo funziona fintanto che io posso inserire manualmente l'userinput:
    <?php $userinput = "testo digitato manualmente"; ?>

    Se invece lo volessi impostare come serve a me, inserendolo dentro il file header.php affinché valga per tutti i post di cui ho decine di post_meta salvati...
    <?php $userinput = "<?php echo get_post_meta($post->ID, 'BLABLABLA', true); ?>"; ?>
    oppure...
    <?php $userinput = "<?php the_title ?>"; ?>

    ...ecco che smette di funzionare, e lo spazio per l'informazione rimane vuoto...

    (Tra l'altro ho notato che questo codice funziona facendo il suo dovere soltanto se inserisco l'userinput sull'header.php. Mentre sul single post "single.php" non manda nessuna informazione neppure digitandola manualmente)
    Ultima modifica di danielepalmas88; 27-09-2016 a 18:08

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Scusa, ma credo proprio che i tag <?php non si possano annidare.

    <?php $userinput = get_post_meta($post->id, "....", true); ?>

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2010
    residenza
    Cagliari
    Messaggi
    198
    non va con il the title
    Ultima modifica di danielepalmas88; 27-09-2016 a 18:34

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.