GDRCD 5 - html: perchè qui SI e qui NO? O.o [RISOLTO]
GDRCD 5 - html: perchè qui SI e qui NO? O.o [RISOLTO] postato il 26/03/2017 00:39:41 nel forum programmazione, open source e hosting e modificato da total fantasy il 28/03/2017 18:50:37
Salve, ho una domanda: perchè se metto tra gli apostrofi singoli un codice html nelle stringe sotto il METEO funziona (appare l'immagine) mentre se la metto nei presenti no?
/* Finestra presenti */
$MESSAGE['interface']['logged_users']['sing']='<img src="themes/'.strtolower($PARAMETERS['themes']['current_theme']).'/imgs/icons/ico_sereno.png" alt="Sereno" title="Sereno" style="vertical-align:middle">';//Presente (QUI NON FUNZIONA)
$MESSAGE['interface']['logged_users']['plur']='<img src="themes/'.strtolower($PARAMETERS['themes']['current_theme']).'/imgs/icons/ico_sereno.png" alt="Sereno" title="Sereno" style="vertical-align:middle">';//Presenti (QUI NON FUNZIONA)
/* Pannello informazioni */
$MESSAGE['interface']['meteo']['status'][0]='<img src="themes/'.strtolower($PARAMETERS['themes']['current_theme']).'/imgs/icons/ico_sereno.png" alt="Sereno" title="Sereno" style="vertical-align:middle">';//(QUI FUNZIONA)
$MESSAGE['interface']['meteo']['status'][1]='<img src="themes/'.strtolower($PARAMETERS['themes']['current_theme']).'/imgs/icons/ico_variabile.png" alt="Variabile" title="Variabile" style="vertical-align:middle">';//(QUI FUNZIONA)
Il codice non è identico? O.o
Pagine → 1 2
26/03/2017 21:11:03
dipende di sicuro da come, nella relativa pagina PHP, stampa quelle immagini.
27/03/2017 09:48:01
Sicuramente irenes c'ha preso.. in ogni caso che errore restituisce?
27/03/2017 21:40:46
Innanzitutto grazie per l'aiuto. Nel file presenti.inc.php stampa in questo modo:
<div class="page_title_presenti">
<h2><?php echo gdrcd_filter('out',$MESSAGE['interface']['logged_users']['plur']); ?></h2>
</div>
Mentre (ho fatto paragone nella pagina info_location.inc.php meteo):
<div class="pagina_info_location">
<?php /* HELP: Il box delle informazioni carica l'immagine del luogo corrente, lo stato e la descrizione. Genera, inoltre, il meteo */
$result = gdrcd_query("SELECT mappa.nome, mappa.descrizione, mappa.stato, mappa.immagine, mappa.stanza_apparente, mappa.scadenza, mappa_click.meteo FROM mappa_click LEFT JOIN mappa ON mappa_click.id_click = mappa.id_mappa WHERE id = ".$_SESSION['luogo']."", 'result');
$record_exists = gdrcd_query($result, 'num_rows');
$record = gdrcd_query($result, 'fetch');
/** * Fix: quando non si è in una mappa visualizza il nome della chat
* Quando si è in una mappa si visualizza il nome della mappa
* @author Blancks
*/
if (empty($record['nome']))
{
$nome_mappa = gdrcd_query("SELECT nome FROM mappa_click WHERE id_click = ". (int)$_SESSION['mappa']);
$nome_luogo = $nome_mappa['nome'];
}else
{
$nome_luogo = $record['nome'];
}
?>
<div class="page_title_location">
<h2><?php echo gdrcd_filter('out', $nome_luogo); ?></h2>
</div>
<div class="page_body">
<?php
if($record_exists>0 || $_SESSION['luogo']==-1){
gdrcd_query($result, 'free');
?>
<!--Nome luogo-->
<?php
if (empty($record['nome'])===FALSE) { $nome_luogo=$record['nome']; }
elseif ($_SESSION['mappa']>=0) { $nome_luogo=$PARAMETERS['names']['maps_location']; }
else { $nome_luogo=$PARAMETERS['names']['base_location']; }
?>
<!--Immagine/descrizione -->
<div class="info_image_location">
<?php
if (empty($record['immagine'])===FALSE) { $immagine_luogo=$record['immagine']; }
else { $immagine_luogo='standard_luogo.png'; }
?>
<img src="themes/<?php echo gdrcd_filter('out',$PARAMETERS['themes']['current_theme']);?>/imgs/locations/<?php echo $immagine_luogo?>" class="info_image_location"/*class="immagine_luogo"*/ alt="<?php echo gdrcd_filter('out',$record['descrizione']); ?>" title="<?php echo gdrcd_filter('out',$record['descrizione']); ?>" >
</div>
<?php if ((isset($record['stato'])===TRUE)||(isset($record['descrizione'])===TRUE)){
/* echo '<div class="box_stato_luogo"><marquee onmouseover="this.stop()" onmouseout="this.start()" direction="left" scrollamount="3" class="stato_luogo"> '.$MESSAGE['interface']['maps']['Status'].': '.gdrcd_filter('out',$record['stato']).' - '.gdrcd_filter('out',$record['descrizione']).'</marquee></div>'; } else { echo '<div class="box_stato_luogo"> </div>'; */
}?>
<br/>
<?php
if($PARAMETERS['mode']['auto_meteo']=='ON'){
/* Meteo */
$ore=strftime("%H");
$minuti=strftime("%M");
$mese=strftime("%m");
$giorno=strftime("%j");
$caso=((floor($giorno/3))%2)+1;
/** * Bug FIX: corretta l'assegnazione della $minima
* @author Blancks
*/
switch ($mese)
{
case 1: $minima = $PARAMETERS['date']['base_temperature']+0; break;
case 2: $minima = $PARAMETERS['date']['base_temperature']+4; break;
case 3: $minima = $PARAMETERS['date']['base_temperature']+8; break;
case 4: $minima = $PARAMETERS['date']['base_temperature']+14; break;
case 5: $minima = $PARAMETERS['date']['base_temperature']+20; break;
case 6: $minima = $PARAMETERS['date']['base_temperature']+28; break;
case 7: $minima = $PARAMETERS['date']['base_temperature']+30; break;
case 8: $minima = $PARAMETERS['date']['base_temperature']+28; break;
case 9: $minima = $PARAMETERS['date']['base_temperature']+20; break;
case 10: $minima = $PARAMETERS['date']['base_temperature']+14; break;
case 11: $minima = $PARAMETERS['date']['base_temperature']+8; break;
case 12: $minima = $PARAMETERS['date']['base_temperature']+0; break;
}
/** * Fine fix */
if($ore<14){$gradi=$minima+(floor($ore/3)*$caso);}
else{ $gradi=$minima+(4*$caso)-((floor($ore/3)*$caso))+(3*$caso);}
$caso=($giorno+($ora/4))%12;
switch ($caso)
{
case 0: $meteo_cond=$MESSAGE['interface']['meteo']['status'][0]; break;
case 1: $meteo_cond=$MESSAGE['interface']['meteo']['status'][0]; break;
case 2: $meteo_cond=$MESSAGE['interface']['meteo']['status'][1]; break;
case 3: $meteo_cond=$MESSAGE['interface']['meteo']['status'][2]; break;
case 4: if($minima<4){$meteo_cond=$MESSAGE['interface']['meteo']['status'][4];} else {$meteo_cond=$MESSAGE['interface']['meteo']['status'][3];} break;
case 5: $meteo_cond=$MESSAGE['interface']['meteo']['status'][1]; break;
case 6: $meteo_cond=$MESSAGE['interface']['meteo']['status'][0]; break;
case 7: $meteo_cond=$MESSAGE['interface']['meteo']['status'][1]; break;
case 8: if($minima<4){$meteo_cond=$MESSAGE['interface']['meteo']['status'][4];} else {$meteo_cond=$MESSAGE['interface']['meteo']['status'][3];} break;
case 9: $meteo_cond=$MESSAGE['interface']['meteo']['status'][2]; break;
case 10: $meteo_cond=$MESSAGE['interface']['meteo']['status'][0]; break;
case 11: $meteo_cond=$MESSAGE['interface']['meteo']['status'][0]; break;
}
$meteo=$meteo_cond./*" - ". */$gradi."°C "; //.Tempo();
} else { $meteo=gdrcd_filter('out',$record['meteo']); }
?>
<?php if(empty($meteo)===FALSE){ ?>
<div class="page_title_meteo">
</div>
<span class="meteo_date"><center><b>
<?php echo strftime('%d').'/'.strftime('%m').'/'.(strftime('%Y')+$PARAMETERS['date']['offset']);?></br>
<?php/*</span>
<span class="meteo">*/ ?>
<?php echo $meteo;?>
</>
<?php } ?>
<?php } else {echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['location_doesnt_exist']).'</div>';} ?> </b></center>
</div><!-- page_body -->
</div><!-- Pagina -->
AMMETTO: ho fatto dei tentativi tutti totalmente fuori strada. Ergo, non 'cho capito niente >.<
27/03/2017 21:51:55
gdr-online.com ha scritto: in ogni caso che errore restituisce?
Prima anche solo di guardare il codice bisogna capire l'errore.
E' un errore di sintassi di PHP ? L'immagine viene semplicemente fuori rotta ? Altro ?
27/03/2017 22:29:39 e modificato da total fantasy il 27/03/2017 22:30:58
Semplicemente STAMPA il codice dell'immagine in versione testo.
OVVERO: se inserisco nei tag tale codice
img src="themes/advanced/imgs/icons/titolo_avventurieri.png" alt="Avventurieri" title="Avventurieri" style="vertical-align:middle">
MOSTRA
img src="themes/advanced/imgs/icons/titolo_avventurieri.png" alt="Avventurieri" title="Avventurieri" style="vertical-align:middle">
27/03/2017 22:30:26
<?php echo gdrcd_filter('out',$MESSAGE['interface']['logged_users']['plur']); ?>
function gdrcd_filter($what, $str)
{
switch (strtolower($what))
{
...
case 'out':
$str = htmlentities($str, ENT_QUOTES, 'utf-8');
break;
...
}
return $str;
}
l'opzione out di gdrcd_filter() passa la stringa per htmpentities, quindi alcuni caratteri come <> vengono trasformati nelle loro corrispettiev entità html per non essere eseguite come codice ma lette come stringa, per questo non ti funziona.
27/03/2017 22:33:03
Quindi da ignorante a che funzione devo appellarmi per far leggere il codice html come nel caso del meteo?
(Grazie ragazzi)
27/03/2017 23:05:26
Se vuoi che venga renderizzata come immagine devi togliere quel gdrcd_filter_out().
Per fare un riassunto di cosa fanno le principali opzioni di quella funzione, cosa che può servire anche ad altri:
- out: trasforma i caratteri che le hanno nelle loro corrispettive entità html, questo evita appunto che del codice inserito da un utente come background, messaggi, post nei forum, possa essere eseguito con potenziali pericoli.
- get o in: rimuove tutti i backslash \\ prima di aggiungerne uno sui caratteri che lo necessitano (',",\\,null) viene usata nel gdrcd prima di inserire qualsiasi tipo di stringa nel database
- num: forza il tipo della variabile a ad essere un intero.
28/03/2017 09:12:32
total fantasy ha scritto: Semplicemente STAMPA il codice dell'immagine in versione testo.
OVVERO: se inserisco nei tag tale codice
img src="themes/advanced/imgs/icons/titolo_avventurieri.png" alt="Avventurieri" title="Avventurieri" style="vertical-align:middle">
MOSTRA
img src="themes/advanced/imgs/icons/titolo_avventurieri.png" alt="Avventurieri" title="Avventurieri" style="vertical-align:middle">
A parte i commenti tecnici di Dyrr sul codice... sei sicuro che non ti manchi un "<" prima di "img" nella pagina?
Di solito quando stampa il codice vuol dire che non lo ha visto come tale ed il fatto che manchi il simbolo di "<" nella stampa può essere un segnale...
28/03/2017 11:49:58
total fantasy ha scritto: Semplicemente STAMPA il codice dell'immagine in versione testo.
Perfetto, individuato il problema andiamo ad indagare le cause.
Assumendo che tu abbia operato come hai descritto nel topic iniziale, e cioè:
total fantasy ha scritto:
/* Finestra presenti */
$MESSAGE['interface']['logged_users']['sing']='<img src="themes/'.strtolower($PARAMETERS['themes']['current_theme']).'/imgs/icons/ico_sereno.png" alt="Sereno" title="Sereno" style="vertical-align:middle">';//Presente (QUI NON FUNZIONA)
$MESSAGE['interface']['logged_users']['plur']='<img src="themes/'.strtolower($PARAMETERS['themes']['current_theme']).'/imgs/icons/ico_sereno.png" alt="Sereno" title="Sereno" style="vertical-align:middle">';//Presenti (QUI NON FUNZIONA)
La spiegazione di dyrr indica una plausibile causa:
dyrr ha scritto: l'opzione out di gdrcd_filter() passa la stringa per htmpentities, quindi alcuni caratteri come <> vengono ... lette come stringa, per questo non ti funziona.
Verifichiamo quindi lo spezzone di codice che hai riportato:
total fantasy ha scritto:
<div class="page_title_presenti">
<h2><?php echo gdrcd_filter('out',$MESSAGE['interface']['logged_users']['plur']); ?></h2>
</div>
E infatti, come indica dyrr, c'è proprio la funzione gdrcd_filter col parametro "out" in uso.
Prova a rimuoverlo e a stampare direttamente la variabile e facci sapere il risultato ;-)
Discussione seguita da
Pagine → 1 2
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Tibia ↗
Exclusive Villa GdR ↗
World of the Sea Battle ↗
Storie di Agarthi ↗
Sea of Conquest ↗
New Orleans ↗
State of Survival ↗
Neverness to Everness ↗
Raja Dunia ↗
Tiles Survive ↗