codice php in body???

17 contenuti / 0 new
Ultimo contenuto
codice php in body???

Ciao ragazzi

Ho realizzato un portalino, ora mi hanno chiesto la possibilità di poter inserire php all'interno delle pagine così ho abilitato il php filter.

Ma chi doveva inserire gli script mi dice che non funziona come dovrebbe.

Io non m'intendo granchè di php e mi sono limitato a provare in locale una serie di esempi come su questa pagina del portale principale:

http://drupal.org/node/21867 in particolare ho fatto una prova con http://drupal.org/node/909220
e quindi creare un blocco con lo script riportato in esempio.

Dopo il salvataggio mi è scomparso il sito. Non mi prreoccupo perchè era un'installazione pulita di prova e posso rifarla al volo senza patemi ma ora mi chiedo qual'è il modo corretto d'inserire php in una pagina di drupal?

Drupal Version:

Ciao,
dar la possibilità ed inserire php è molto pericoloso per il sito!!
Nel senso che la persona che ha questa possibilità deve saper quel che fa, se no rischi che possa compromettere non solo la visualizzazione dei sito ma la stessa sua sicurezza di dati (database) e file..

Per il tuo problema non hai dato nessuna informazione che possa aiutarci a capire cosa sia successo...(che vuol dire scomparso??!!)....inoltre l'esempio da te visionato è per drupal 6 e non 7... quindi può esserci un problema di compatibilità dello script stesso..

per poterne comunque saperne di più ti consiglio di aggiungere queste righe al file .htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

"teoricamente" ti dovrebbe mostrare gli errori che avvengono anche "in caso di interruzione dello script"...

So bene che è pericoloso ma la persona è fidata, è un programmatore e collega dell'azienda per la quale sto lavorando, lo stesso script su un altra macchina "non" drupal funziona, me lo ha mostrato lui stesso ma non ho avuto modo di approfondire le differenze. Scomparso vuol dire che è come se non comunicasse più col db. Ma ripeto non è un problema perchè era un'installazione di prova, la stessa cosa dovremmo farla però sul sito vero e proprio e vorrei esser sicuro di quello che faccio.
Appena ho un po' di tempo provo ad inserire le righe che mi hai passato, se intanto alla luce di quanto vi ho detto avete altri suggerimenti da darmi ne sarei davvero felice.

Ciao, l'esempio che stai utilizzando è gia' sbagliato nella prima riga per Drupal 7.

Non esiste più "db_result" e db_query() si usa in tutt'altra maniera in D7. Il sito non ti si vede perché sicuramente andrà in fatal error a causa della db_result().

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

Ragazzi vi ho già detto che di php non ne capisco granché, se mi rispondete in questo modo non ne verrò mai a capo. M'indicate cortesemente che tipo di formalismi allora usa drupal 7 per inserire php all'interno del body? almeno posso riferirlo a chi di dovere

grazie motocad.

in pratica ho dato ad un'occhiata allo script che ha scritto il mio collega e il funzionamento è questo: dovrebbe attivare una schermata nella quale sia possibile selezionando provincia e comune verificare una lista di responsabili della società in quella zona. Nello script dunque si stabilisce un collegamento con un db, oracle per la precisione. Lo stesso script lui lo ha provato su un server dove non era installato drupal e funziona correttamente, seleziono provincia e comune, si collega al db e mi restituisce dei risultati. Tutto ciò senza formattazione naturalemente perchè era una prova e non aveva bisogno del cms.
In una prima prova in locale, drupal dava il via correttamente allo script,che caricava degli includes, e si apriva una pagina che voleva essere la famosa schermata di selezione provincia e comune. Peccato però che tale pagina si aprisse su sfondo bianco senza formattazione di sorta, perdendo tutti i riferimenti del tema e gli stili, oltre che menù, pulsanti etc... insomma veniva richiamata come se fosse proprio una pagina a parte, mentre si vorrebbe che l'esecuzione dello script avvenisse proprio su una pagina di drupal denominata lista_responsabili o qualcosa di simile.

Mi pare di capire che dovrei usare gli snippet per far interpretare correttamente php a drupal è giusto?
che tipo in particolare?

nessuno?

se devi inserirlo solo dentro una determinata pagina si utilizza "php filter"..come hai già fatto!
es: inserisco la pagina statica -> sul body si sceglie il formato di input "php filter" e tra tag di apertura del codice php si va ad inserire il codice php...

darti una mano come ti presenti, senza codice (che ovviamente non puoi e ti capiamo) e senza, soprattutto, uno straccio di errore su cui iniziare a pensare, non ci permette di aiutarti..mi dispiace..
almeno per quanto riguarda le mie capacità...

luca_cracco wrote:
darti una mano come ti presenti, senza codice (che ovviamente non puoi e ti capiamo) e senza, soprattutto, uno straccio di errore su cui iniziare a pensare, non ci permette di aiutarti..mi dispiace..
almeno per quanto riguarda le mie capacità...

Ciao Luca, questo è lo script, spero saprai dirmi qualcosa in più

<?php
   
//error_reporting(E_ERROR);
    /*** turn off error reporting ***/
    //ini_set('display_errors', 0);
    /*** turn on error logging ***/
    //ini_set('log_errors', 1);
   
include 'DataProvider.php';
   
$pagina = filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING);
// Trim array values using this function "trim_value"
/*function trim_value(&$value)
{
    $value = trim($value);    // this removes whitespace and related characters from the beginning and end of the string
}
    array_filter($_REQUEST, 'trim_value');    // the data in $_REQUEST is trimmed */
   
$_REQUEST['prov'] = isset($_REQUEST['prov']) ? trim($_REQUEST['prov']) : false;
    if(!
$_REQUEST['prov']) {
       
// primo giro
       
echo '<h1>Ricerca responsabile Area</h1>';
        echo
'<form name="ricercaAreaRespForm" method="post" action="'.$pagina .'">';
        echo
'<fieldset><legend>Scelta Provincia</legend><br /><ul>';
        global
$global;
       
$ORAData = new CDataProvider($global);
        if (!
$ORAData) {
           
//error_log("Classe CDataProvider NON istanziata\n",3,"/home1/storico_newweb/pietro/debug.log");
           
die("Impossibile connettersi al database");
        }
        global
$ORAData; // VARIABILE DA CDATAPROVIDER
        // QUERY
       
$result = $ORAData->getAllProvincia();
        if (
$result && is_array($result) && count($result)) {   
           
$html = '<li><label for="prov">Provincia :&nbsp;&nbsp;</label>';
           
$html .= '<select name="prov" id="prov"><option></option>';
            for (
$i=0;$i<count($result);$i++)
            {
               
$html .= '<option value="'.$result[$i]["ID_PROVINCIA"].'">'.$result[$i]["NOME"].'</option>';
            }
       
$html .= '</select></li>';
        }
        echo
$html;
        echo
'<label for="invia">';
        echo
'<button name="invia" id="invia" class="g-button blue">Ricerca &raquo;</button>';
        echo
'<br/><br/></ul></fieldset>';
        echo
'</form>';
        exit;
    } else {
       
// secondo giro
       
echo '<h1>Dettaglio Ufficio Territoriale di Governo</h1>';
        echo
'<br />';
        global
$global;
       
$ORAData = new CDataProvider($global);
        if (!
$ORAData) {
           
//error_log("Classe CDataProvider NON istanziata\n",3,"/home1/storico_newweb/pietro/debug.log");
           
die("Impossibile connettersi al database");
        }
        global
$ORAData; // VARIABILE DA CDATAPROVIDER
        // QUERY
        // dati prefettura
       
$result = $ORAData->getPrefettura($_REQUEST['prov']);
        if (
$result && is_array($result) && count($result)) {   
       
$html  = '<h2>UTG di '.$result[0]["NOME"].'</h2><br />';
       
$html .= '<div class=\'outer\'  style=\'min-width:500px\'>';
       
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
       
$html .= '     <span class=\'descr\'>Indirizzo :</span>';
       
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["INDIRIZZO"].'</span>';
       
$html .= '</div><br />';
       
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
       
$html .= '     <span class=\'descr\'>C.A.P. :</span>';
       
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["CAP"].'</span>';
       
$html .= '</div><br />';
       
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
       
$html .= '     <span class=\'descr\'>Telefono :</span>';
       
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["PREFISSO"].' - '.$result[0]["TELEFONO"].'</span>';
       
$html .= '</div><br />';
       
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
       
$html .= '     <span class=\'descr\'>Fax :</span>';
       
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["PREFISSO"].' - '.$result[0]["FAX"].'</span>';
       
$html .= '</div><br />';
       
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
       
$html .= '     <span class=\'descr\'>E-mail :</span>';
       
$html .= '     <span class=\'text\'>&nbsp;<a title="Link all\' indirizzo e-mail." href="mailto:'.$result[0]["EMAIL"].'">'.$result[0]["EMAIL"].'</a></span>';
       
$html .= '</div><br />';
       
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
       
$html .= '     <span class="descr">Sito Web :  </span>';
       
$html .= '     <span class=\'text\'>&nbsp;<a title="Link al Sito Web" href="'.$result[0]["SITO_WEB"].'">'.$result[0]["SITO_WEB"].'</a></span>';
       
$html .= '</div><br />';
       
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
       
$html .= '     <span class=\'descr\'>Prefetto :</span>';
       
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["COGNOME_PREFETTO"].' '.$result[0]["NOME_PREFETTO"].'</span>';
       
$html .= '</div><br />';
       
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
       
$html .= '     <span class=\'descr\'>Data Ultimo Aggiornamento :</span>';
       
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["DATA_AGGIORNAMENTO"].'</span>';
       
$html .= '</div><br />';
       
$html .= '</div><br />';
        echo
$html;
        }
echo <<<EOT
<script type="text/javascript">
<!--
$.getDocWidth = function(){
    return Math.max(
        $(document).width(),
        $(window).width(),
        /* For opera: */
        document.documentElement.clientWidth
    );
};
$.getDocHeight = function(){
    return Math.max(
        $(document).height(),
        $(window).height(),
        /* For opera: */
        document.documentElement.clientHeight
    );
};
function f_scrollTop() {
    return f_filterResults (
        window.pageYOffset ? window.pageYOffset : 0,
        document.documentElement ? document.documentElement.scrollTop : 0,
        document.body ? document.body.scrollTop : 0
    );
}
function f_filterResults(n_win, n_docel, n_body) {
    var n_result = n_win ? n_win : 0;
    if (n_docel && (!n_result || (n_result > n_docel)))
        n_result = n_docel;
    return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
        function ShowDialog(refer)
        {
            var top = ($.getDocHeight() - $("#dialog"+refer).height()) /2;
            var left = ($.getDocWidth() - $("#dialog"+refer).width()) /2;
            //faccio apparire il box lightbox al centro dello schermo con effetto fadeIn impostabile
            $("#overlay").show();
            $("#dialog"+refer).css({"top":top+f_scrollTop(),"left":left}).fadeIn(300);
            //$("#dialog"+refer).fadeIn(300);
            $("#overlay").click(function (e)
            {
                HideDialog(refer);
            });
            $("#dialog"+refer).click(function (e)
            {
                HideDialog(refer);
            });
        }
        function HideDialog(refer)
        {
            $("#overlay").hide();
            $("#dialog"+refer).fadeOut(300);
        }
//-->
</script>
EOT;
       
$result = $ORAData->getRespPrefettura($_REQUEST['prov']);
        if (
$result && is_array($result) && count($result)) {   
            echo
'<div id="tabe" class="tabella">';
            echo
'<table cellpadding="2" style="min-width:500px">';
            echo
'<thead><tr><th>Area</th><th>Referente</th></tr></thead>';
            echo
'<tbody>';
            echo
'<tr>';
           
$codici_resp = array();
            for (
$i=0;$i<count($result);$i++)
            {
               
$html  = '<tr>';
               
$html .= '<th>'.$result[$i]["DESCRIZIONE"].'</th>';
               
$html .= '<td><a href="javascript:ShowDialog(\''.$result[$i]["ID_RESPONSABILE"].'\');" onkeypress="javascript:ShowDialog(\''.$result[$i]["ID_RESPONSABILE"].'\')" class="linkTitle" title="Si aprirà in un nuovo browser il dettaglio del referente selezionato." onclick="javascript:ShowDialog(\''.$result[$i]["ID_RESPONSABILE"].'\');">';
               
$html .= ' '.$result[$i]["COGNOME"].' '.$result[$i]["NOME"].' </a></td>';
               
$html .= '</tr>';
               
$codici_resp[] = $result[$i]["ID_RESPONSABILE"];
                echo
$html;
            }
            echo
'</tbody></table>';
            echo
'</div><br /><br />';
            echo
'<div id="overlay" class="web_dialog_overlay"></div>';
            for (
$i=0;$i<count($codici_resp);$i++)
            {
                global
$ORAData; // VARIABILE DA CDATAPROVIDER
                // QUERY
                // dati prefettura
               
$result = $ORAData->getDatiResp($codici_resp[$i]);
                if (
$result && is_array($result) && count($result)) {
                   
$html = '<div id="dialog'.$result[0]["ID_RESPONSABILE"].'" class="web_dialog">';
                   
$html .= '<div class="heading">Dettaglio del Referente';
                   
$html .= '<a class="align_right" href="javascript:HideDialog('.$result[0]["ID_RESPONSABILE"].')" onkeypress="javascript:HideDialog('.$result[0]["ID_RESPONSABILE"].')" id="btnClose">Chiudi</a>';
                   
$html .= '</div>';
                   
$html .= '<div class="content"><p>';
                   
$html .= '<div class=\'outer\' style=\'width:330px\'>';
                   
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
                   
$html .= '     <span class=\'descr\'>Area :</span>';
                   
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["DESCRIZIONE"].'</span>';
                   
$html .= '</div><br />';
                   
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
                   
$html .= '     <span class=\'descr\'>Qualifica :</span>';
                   
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["QUALIFICA"].'</span>';
                   
$html .= '</div><br />';
                   
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
                   
$html .= '     <span class=\'descr\'>Nome :</span>';
                   
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["NOME"].'</span>';
                   
$html .= '</div><br />';
                   
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
                   
$html .= '     <span class=\'descr\'>Cognome :</span>';
                   
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["COGNOME"].'</span>';
                   
$html .= '</div><br />';
                   
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
                   
$html .= '     <span class=\'descr\'>Telefono :</span>';
                   
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["TELEFONO"].'</span>';
                   
$html .= '</div><br />';
                   
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
                   
$html .= '     <span class=\'descr\'>Fax :</span>';
                   
$html .= '     <span class=\'text\'>&nbsp;'.$result[0]["FAX"].'</span>';
                   
$html .= '</div><br />';
                   
$html .= '<div class=\'container\'><div class=\'filler\'></div>';
                   
$html .= '     <span class=\'descr\'>E-mail :</span>';
                   
$html .= '     <span class=\'text\'>&nbsp;<a title="Link all\' indirizzo e-mail." href="mailto:'.$result[0]["EMAIL"].'">'.$result[0]["EMAIL"].'</a></span>';
                   
$html .= '</div><br />';
                   
$html .= '</div><br />';
                   
$html .= '</div></p></div>';
                    echo
$html;
                }
            }
        }
        echo
'<a title="Nuova ricerca" href="'. $pagina .'">Effettua una nuova ricerca</a>';
        echo
'</div>';
    }
 
?>

e io il codice ce l'ho messo adesso, chi sa aiutarmi o darmi qualche suggeruimento?

Dai ragazzi, vorrei solo sapere se il suddetto script alla luce di quanto mi dite su snippet php dev'essere scritto in modo differente

Abbi un attimo di pazienza...da una lettura veloce non rilevo errori o altro...ci do un occhiata come ho 10 minuti liberi e ti rispondo!..

intanto in locale se riesc..riproponi la piattaforma drupal o una di prova e inserisci come già detto le seguenti righe all'inizio del file .htaccess..

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

e poi aggiungi il blocco di codice su una pagina statica con il filtro Php sul body e mi scrivi che errori ti da a video!! fidati fa così che vediamo subito dov'è l'errore!!

ciao luca a questo link trovi la pagina che mi restituisce

http://wtrns.fr/3PE-f5sr1TCFqJr

sicuro che venga incluso/richiamato il file DataProvider-php??