Avisos
Vaciar todo

Problema con php insertado en artículo y búsquedas  

 
Pedro
 Pedro
Reputable Member

Hola,

buena parte de los artículos de mi joomla incluyen código php a través del plugin sourcerer.
El código que he insertado conecta con una base de datos diferente de la de joomla y muestra información. El problema es que, si hago una búsqueda de artículos en el front-end, en el listado de artículos que me aparecen como resultado de dicha búsqueda, se ve el código php. Adjunto un pantallazo, donde se llega a ver incluso la sentencia de conexión a la base de datos, con la contraseña a la vista de todos.

A ver, en principio utilizo una base de datos distinta de la de joomla, y el usuario que se conecta tiene acceso de sólo lectura a dicha base de datos, con lo que no creo que haya problemas de seguridad, pero... dos preguntas:

1/¿Hay alguna forma de evitar que se muestre esa información? En el módulo "buscar" no he encontrado ninguna opción.
2/Aparte de lo dicho... ¿lo que hago es seguro? El usuario tiene acceso de solo lectura, pero aún así me quedo más tranquilo si os lo consulto. Os copio pego el texto de los artículos:


<?php
$conexion = mysql_connect('localhost', 'cenxxxxxxxxc', 'xxxxx') or die ("Error de conexion.");
$bd = mysql_select_db("centrede_bdat", $conexion) or die ("Error de conexion a la base de datos o la base de datos no existe.");
$consulta = mysql_query("

SELECT tblBancos.NombreBanco, Format(Sum(tblFinanciacion.Importe),0) AS 'ImporteTotal', tblBancos.CodigoBancaarmada FROM tblBancos INNER JOIN tblFinanciacion ON tblBancos.IdBanco = tblFinanciacion.Banco GROUP BY tblFinanciacion.SumaAlTotal, tblBancos.NombreBanco, tblBancos.Espanyola HAVING (tblFinanciacion.SumaAlTotal=1) AND (tblBancos.CodigoBancaArmada=".$article->id.");", $conexion);

$fila = mysql_fetch_array($consulta);
echo "<h3>Financiación a la industria de las armas: ".$fila['ImporteTotal']."</h3>";
?>
{loadposition subtitulo_ficha_banco}

{loadposition grafico_banco}

DETALLE DE LA FINANCIACIÓN

{loadposition ficha_banco}

*Cambio realizado con el European Central Bank Eurosystem del mes correspondiente cuando la moneda es distinta del euro.


<?php
echo "<h2>RELACIÓN DE FABRICANTES DE ARMAS FINANCIADOS POR ".$fila['NombreBanco']."</h2>";
?>

{loadposition ficha_banco_fabricantes}

FUENTES:

{loadposition ficha_banco_fuentes}

URL del sitio: http://www.bancaarmada.org

Citar
Respondido : 03/03/2012 12:27 pm
Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola Pedro

Has utilizado la etiqueta { source } ? , ya que al parecer no esta trabajándose correctamente.

Te sugiero revises el siguiente artículo :
https://www.webempresa.com/blog/insertar-codigo-php-o-javascript-en-articulos-joomla.html

Saludos.

ResponderCitar
Respondido : 03/03/2012 3:37 pm

Pedro
 Pedro
Reputable Member

Hola Jhon,

Sí he utilizado la etiqueta source, aunque no sé por què no ha aparecido en el fragmento de código que os he copiado. Los trozos de php están dentro de la etiqueta, y al ver el artículo, el código se ejecuta correctamente.

El problema es si:

1/¿Hay alguna forma de evitar que se muestre esa información? En el módulo "buscar" no he encontrado ninguna opción.
2/Aparte de lo dicho... ¿lo que hago es seguro? El usuario de la base de datos tiene acceso de solo lectura, pero aún así me quedo más tranquilo si os lo consulto.

ResponderCitar
Respondido : 03/03/2012 5:46 pm
Johnny Heredia Montiel
 Johnny Heredia Montiel
Miembro Moderator

Hola Pedro,

He notado que dentro del código haces un llamado a una posición, porque no intentas utilizar solo el código dentro de las etiquetas que delimitan el código PHP. Te adjunto el código.

Verifica si el editor de textos que utilizas te genera el código automáticamente, prueba por un momento desactivando el editor de texto.

Saludos.

ResponderCitar
Respondido : 03/03/2012 10:47 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

Pedro
 Pedro
Reputable Member

Hola Johny,

Creo que ha sido al pegar el texto a este foro cuando he perdido las etiquetas source. De todas formas, insisto en que el código funciona perfectamente dentro de los artículos. El llamado a php se ejecuta sin problemas, y me muestra la información requerida de la base de datos. Por esa parte estoy encantado. Lo tengo con la misma estructura que aparece en tu archivo adjunto codigo.txt

Los problemas/dudas trascendentales que tengo son:

En primer lugar, si le doy a buscar, la vista previa del artículo (ver pantallazo), me aparece el trozo de código, en lugar de el php "procesado". Es decir, aparece: "echo("hola");" en lugar de aparecer "hola". Ya que parece que el código no se puede ejecutar aquí, me gustaría que no apareciera más que el título del artículo, pero no sé cómo hacerlo.

En segundo lugar, me preguntaba si era seguro hacer este uso del código, conectar con la base de datos desde dentro del artículo. Ver el código "desnudo" en los resultados de la búsqueda me ha preocupado.

ResponderCitar
Respondido : 04/03/2012 10:31 am
David Noguera
 David Noguera
Miembro Moderator

Hola Pedro,

el el tema es que en los resultados de las búsquedas no se ejecutan los plugins y por este motivo se ve el código desnudo.. habría que modificar el código del componente com_search para solucionar esto..revisa si tu plantilla tiene overrides para com_search, mira en /templates/tu-plantilla/html y mira si ahí dentro hay un directorio com_search...

Si no lo hay edita directamente el fichero: /public_html/components/com_search/views/search/tmpl/default_results.php

El código que hay es como esto:



<table class="contentpaneopenescape($this->params->get('pageclass_sfx')); ?>">
	
		
		results as $result ) : ?>
			
<span class="smallescape($this->params->get('pageclass_sfx')); ?>"> pagination->limitstart + $result->count.'. ';?> href ) : if ($result->browsernav == 1 ) : ?> <a href="href); ?>" target="_blank"> <a href="href); ?>"> escape($result->title); if ( $result->href ) : ?> section ) : ?>
<span class="smallescape($this->params->get('pageclass_sfx')); ?>"> (escape($result->section); ?>)
text; ?>
params->get( 'show_date' )) : ?> <div class="smallescape($this->params->get('pageclass_sfx')); ?>"> created; ?>
pagination->getPagesLinks( ); ?>

Tendrás que comentar o eliminar este código:

					text; ?>

De esta forma ya no debería de mostrarse el texto del artículo..

Sobre el tema de la seguridad, en principio ya no debería de tener más problemas..

Saludos

ResponderCitar
Respondido : 05/03/2012 10:39 am

Cursos Gratuitos WordPress

Pedro
 Pedro
Reputable Member

Hecho! El código ya no se ve. Gracias!
P

ResponderCitar
Respondido : 05/03/2012 3:51 pm