• User Attivo

    Inserire codice PHP in un post

    Ciao, avrei la necessità di inserire uno script in php da me scritto in un post e in una pagina di wordpress.

    Ho quindi un qualcosa tipo:

    <?php
    $response_template='
    <br>
    <center>
    <div align="center">
    <table border="0" cellspacing="1" cellpadding="2" width="570">
    <tr>
    <td align="center">
    %%ACTION%% %%LIST%%@%%DOMAIN%%
    </td>
    </tr>
    <tr>
    <td style="color:red; font-weight:normal; font-family:verdana, arial, helvetica, serif;">
    Riceverai una mail a breve su "%%ADDRESS%%" L'unica cosa che ti rimane da fare e' usare la funzione "Rispondi" del tuo client di posta
    ed inviare la risposta: non e' necessario aggiungere altro al messaggio. Questo e' necessario per evitare che qualcuno utilizzi indirizzi email che non possiede realmente.
    </td>
    </tr>
    </table>
    </div>
    </center>
    ';

    ?>

    <center><div align="center">
    <table border="0" cellspacing="0" cellpadding="0" width="75%">
    <form method="post">
    <tr>

    etc... etc... (l'ho riportato solo per rendere l'idea di quello che voglio fare).

    IL problema è che non riesco a trovare il modo di far capire a wordpress quello che voglio fare... ho provato a mettere tutto fra i tag <code> e </code> ma non c'è niente da fare, qualunque cosa provi sembra non capire mai che si tratta di uno script in php... che posso farci?


  • User Attivo

    risolto: bisogna utilizzare n plugin come PHP-exec


  • User Attivo

    Oppure runPHP 🙂


  • User Attivo

    azz purtroppo in realtà il codice smette di funzionare correttamente con entrambi i plugin.. a prima vista sembra tutto ok, in realtà c'è qualcosa che non funziona...

    Questo è il mio codice:

    <?php
    $DOMAIN='miosito.it';
    $LISTS[]='nomelista';

    $response_template='
    <br />
    <center>
    <div align="center">
    <table border="0" cellspacing="1" cellpadding="2" width="99%">
    <tr>
    <td align="center">
    %%ACTION%% %%LIST%%@%%DOMAIN%%
    </td>
    </tr>
    <tr>
    <td style="color:red; font-weight:normal; font-family:verdana, arial, helvetica, serif;">
    Riceverai una mail a breve su "%%ADDRESS%%" L'unica cosa che ti rimane da fare è usare la funzione "Rispondi" del tuo client di posta
    ed inviare la risposta a questa email: non è necessario aggiungere altro al messaggio, semplicemente clicca su "Rispondi" e invia. Questa procedura è necessaria per evitare che qualcuno utilizzi indirizzi email che non possiede realmente.
    </td>
    </tr>
    </table>
    </div>
    </center>
    ';

    ?>

    <center>
    <div align="center">
    <table border="0" cellspacing="0" cellpadding="0" width="99%">
    <form method="post">
    <tr>
    <td align="center">Indirizzo email</td>
    <td align="center"><input type="text" name="addy" size="30"></td>
    </tr>
    <tr>
    <td align="center">Nome Lista</td>
    <td align="center"><select name="list"><?php
    if ( is_array($LISTS)) {
    foreach ( $LISTS as $val ) {
    echo '<option value="'.$val.'">'.$val.'@'.$DOMAIN.chr(10);
    }
    }
    ?></select>
    </tr>
    <tr>
    <td align="center">Azione</td>
    <td><select name="action"><option value="subscribe">Iscriviti<option value="unsubscribe">Rimuovi iscrizione</select></td>
    </tr>
    <tr><td colspan="3" align="center"><input type="submit" value="GO!"></td>
    </tr>
    </form>
    </table>
    </center></div>
    <?php
    switch ( $_POST['action'] ) {
    case 'subscribe':
    if ( !empty($_POST['addy']) ) {
    if ( mail($list.'-subscribe-'.str_replace('@', '=', $_POST['addy']).'@'.$DOMAIN ,'iscrizione', 'iscrizione') ) {
    show_tpl($response_template, 'ISCRITTO A: ', $list, $DOMAIN, $_POST['addy']);
    }
    }
    break;

        case 'unsubscribe':
        if ( !empty($_POST['addy']) ) {
            if ( mail($list.'-unsubscribe-'.str_replace('@', '=', $_POST['addy']).'@'.$DOMAIN ,'annulla iscrizione', 'annulla') ) {
                show_tpl($response_template, 'RIMOSSO DA: ', $list, $DOMAIN, $_POST['addy']);
            }
        }
        break;
    }
    
    function show_tpl($tpl, $action, $list, $domain, $address) {
        $tpl=str_replace('%%ACTION%%',  $action, $tpl);
        $tpl=str_replace('%%LIST%%',    $list, $tpl);
        $tpl=str_replace('%%DOMAIN%%',  $domain, $tpl);
        $tpl=str_replace('%%ADDRESS%%', $address, $tpl);
        echo $tpl;
    }
    

    ?>

    una volta compilato il form, se il codice in questione è in una pagina php separata, allora tutto va a buon fine, altrimenti pare che non ottenga correttamente il nome della lista, in quando al posto di

      ISCRITTO A:  [EMAIL="[email protected]"][email protected][/EMAIL]
    

    ottengo solo

      ISCRITTO A:  @miodominio.it

  • User Attivo

    Ho dovuto aggiungere un $list = $_POST e ora tutto pare funzionare correttamente.

    Come nell'altro mio post in questa sezione, penso che rimarrà il mistero (qualcuno sa risolverlo?), ma almeno funziona 🙂