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
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.
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.
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.
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.
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 ) : ?> 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
Hecho! El código ya no se ve. Gracias!
P