Pagina 1 di 2
Abilitare php da PCA
Inviato: 02/04/2012, 14:20
da mark
Salve,
sto creando una pagina con dei calcoli in una pagina personalizzata di PhpBB3.
Ho fatto tutto ciò, ma il calcolo non funziona nel forum, mentre se lo provo su una pagina in php funziona.
Per risolvere questo problema mi hanno detto che devo abilitare da PCA il php, ma non so dove e nemmeno che me l'ha consigliato...
Voi lo sapete?
La pagina in questione sarebbe questa:
http://www.funivieminiatura.it/forum/giri_motore.php
Re: Abilitare php da PCA
Inviato: 02/04/2012, 15:35
da Barrnet
Scheda "Generale", sezione "Configurazione server" : clicca su sicurezza, qui trovi "Permetti php negli stili", mettilo su "Si".
Re: Abilitare php da PCA
Inviato: 02/04/2012, 17:08
da mark
Fatto, anche aggiornato template e tema, ma purtroppo i calcoli continuano a non funzionare...
Re: Abilitare php da PCA
Inviato: 02/04/2012, 20:08
da Micogian
Non serve abilitare il php, cosa tra l'altro sconsigliata.
Bisogna capire la filosofia di phpbb, da un lato c'è un file php che fa delle operazioni e trasforma il risultato in variabili da passare al template. Il Template, dal canto suo, passa i valori necessari al php con un modulo "form".
Il risultato è che il php riceve dal template i valori da utilizzare, fa il calcolo e crea una variabile contenente il risultato che viene passato al template.
In sostanza, ammettendo che nel template ci siano 2 moduli INPUT che si chiamano "alfa" e "beta", il php riceverà i dati in questo modo:
Codice: Seleziona tutto
$alfa = request_var('alfa', '0');
$beta = request_var('beta', '0');
//se alfa e beta sono diversi da 0 viene eseguito il calcolo con i valori ricevuti:
if ($alfa <> '0' && $beta <> '0')
{
$risultato = $alfa * $beta ;
}
//Viene creata la variabile per il template:
$template->assign_var('RISULTATO', $risultato);
A questo punto nel template il valore {RISULTATO} visualizzerà il valore richiesto.
Re: Abilitare php da PCA
Inviato: 02/04/2012, 20:46
da mark
Ringrazio micogian della risposta.
Ora: io ho fatto la pagina.php, che si chiama "giri_motore.php" e si trova nella cartella /forum dove sta tutto il forum in phpbb.
Codice: Seleziona tutto
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
page_header('Calcolo della velocità del motore');
$template->set_filenames(array(
'body' => 'template_motore.html',
));
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();
?>
E il template "template_motore.html" in /forum/styles/mio_tema/template/
Codice: Seleziona tutto
<!-- INCLUDE overall_header.html -->
<div>
<?
$prim=$_POST['prim'];
$seco=$_POST['seco'];
if ($prim!=null or $seco!=null){
if ($prim==null){ $prim=0;}
if ($seco==null){ $seco=0;}
$vel=$prim;
$diam=$seco;
$vel=$vel*60;
$diam=$diam*3.14;
$risu=$vel/$diam;
}
?>
<form action="#" method="post">
<strong>Velocità in linea <input type="text" name="prim" size="5" maxlength="5" value="<? echo $prim;?>"> cm/s<br>
Diametro puleggia <input type="text" name="seco" size="5" maxlength="5" value="<? echo $seco;?>"> cm<br>
<input type="submit" value="Calcola"><br></strong>
<strong>Il risultato è:</strong>
<?
echo $risu
?>
<strong> rpm (giri al minuto)</strong>
</form>
</div>
<!-- INCLUDE overall_footer.html -->
Sinceramente non ho ben capito cosa dovrei fare...
Re: Abilitare php da PCA
Inviato: 02/04/2012, 21:57
da Micogian
Mi sembrava chiaro.
Il file PHP riceve i valori dal template, esegue l'operazione e crea la variabile RISULTATO:
Codice: Seleziona tutto
$prim = request_var('prim', '0');
$seco = request_var('seco', '0');
// request_var sostituisce $_POST e il valore predefinito è '0'
$vel=$prim;
$diam=$seco;
$vel=$vel*60;
$diam=$diam*3.14;
$risu=$vel/$diam;
// Crea le variabili
$template->assign_vars(array(
'PRIM' => $prim ,
'SECO' => $seco,
'RISU' => $risu,
));
Nel template togli il php e la Form diventa:
Codice: Seleziona tutto
<form action="giri_motore.php" method="post">
<strong>Velocità in linea <input type="text" name="prim" size="5" maxlength="5" value="{PRIM}"> cm/s<br />
Diametro puleggia <input type="text" name="seco" size="5" maxlength="5" value="{SECO}"> cm<br />
<input type="submit" value="Calcola"><br /></strong>
<strong>Il risultato è:</strong>
{RISU}
<strong> rpm (giri al minuto)</strong>
</form>
Re: Abilitare php da PCA
Inviato: 03/04/2012, 13:59
da mark
Grazie micogian, adesso funziona tutto alla perfezione!
Tu sei stato molto chiaro, ma sono io che non sono ancora molto esperto di php.
Re: Abilitare php da PCA
Inviato: 03/04/2012, 17:04
da mark
Controllando meglio mi sono accorto di un piccolo errore che mi viene segnalato:
[phpBB Debug] PHP Warning: in file [ROOT]/giri_motore.php on line 26: Division by zero
Questo perché il valore impostato è 0. Se modifico:
Codice: Seleziona tutto
$prim = request_var('prim', '0');
$seco = request_var('seco', '0');
con 1 l'errore scompare.
Però sarebbe meglio lasciare i due campi vuoti, senza un valore predefinito. è possibile?
Ho provato a cancellare i due valori, ma da errore.
Questo è il codice php:
Codice: Seleziona tutto
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
page_header('Calcolo della velocità del motore');
$template->set_filenames(array(
'body' => 'template_motore.html',
));
$prim = request_var('prim', '0');
$seco = request_var('seco', '0');
// request_var sostituisce $_POST e il valore predefinito è '0'
$vel=$prim;
$diam=$seco;
$vel=$vel*60;
$diam=$diam*3.14;
$risu=$vel/$diam;
// Crea le variabili
$template->assign_vars(array(
'PRIM' => $prim ,
'SECO' => $seco,
'RISU' => $risu,
));
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();
?>
Re: Abilitare php da PCA
Inviato: 03/04/2012, 18:07
da Micogian
Questo lo avevo previsto. Qui non centra il php ma la matematica.
Non si può moltiplicare un valore per 0.
Infatti, se guardi il mio primo post io avevo usato una condizione che eseguiva il calcolo solo se i due valori sono diversi da 0.
Al limite sostituisci 0 con 1 nelle variabili iniziali.
Re: Abilitare php da PCA
Inviato: 03/04/2012, 19:15
da mark
Messo. Adesso è tutto ok, l'unica cosa è che compare ancora quell'errore quando i due campi sono vuoti, ma tanto nessuno li lascerà vuoti... credo...