Mi web garga en blanco y no respeta el index.php

Anoche de repente mi web se quedó completamente en blanco.
Intento acceder al dominio, www.miweb.com y aparece el navegador en blanco, el código que me aparece al hacer ver el código en el navegador es el siguiente:
<div id="lightbox" name="lightbox" style="position:absolute;visibility:hidden;top:-300;left:-300"></div>
<div name="items_added" id="items_added" class="items_added" style="visibility:hidden;position:absolute;z-index:1000"></div>
Tengo la certeza de que la web y servidor están funcionando correctamente ya que carga bien el info.php y en el panel de cotrol todo está correcto.
El problema es que el código que te he puesto antes no está en mi index.php.
Mi index.php es el siguiente:
<?$site="main";?>
<?include("admin/function/db.php");?>
<?include("inc/header.php");?>
<?
include("$DOCUMENT_ROOT/members/content.php");
?>
<?include("inc/footer.php");?>

1 respuesta

Respuesta
1
De hecho no me has demostrado que ese código no esté en tu index.php, puesto que en él tienes varios include.
El problema debe estar probablemente en header.php o en content.php
Y quizás se deba a que en db.php no se ha podido conectar con la base de datos.
Buenos días David, no descansamos ni un domingo, :-)
He comparado header.php, content.php, footer.php y sus respectivos archivos dependientes. Son iguales al 100%. De hecho me he comparado todos los archivos uno a uno con el script original. El único sospechoso es funtions.php que aparece como si alguien o algo (el propio instalable por ejemplo) le hubiera añadido un trozo. Los he comparado detenidamente con winmerge y este trocito que te pongo esta añadido de más en el funtions.php que está online:
function buildmenu5($t_id,$t_select,$otstup,$iid)
{
global $db;
global $dr;
$dp = new TMySQLQuery;
$dp->connection = $db;
global $itg;
global $nlimit;
$sql="select a.id,a.id_parent,b.id_parent,b.title,b.priority,b.upload from structure a,category b where a.id=b.id_parent and a.id_parent=".$t_id." order by b.priority,b.title";
$dp->open($sql);
while(!$dp->eof)
{
if($nlimit<1000)
{
$sel="";
if($t_select==$dp->row["id"]){$sel="selected";}
$otp="";
for($i=0;$i<$otstup;$i++)
{
$otp.="  ";
}
if($dp->row["upload"]==1)
{
$itg.="<option class='upload_ok' value='".$dp->row["id"]."' ".$sel.">".$otp.$dp->row["title"]."</option>";
}
else
{
$itg.="<option class='upload_error' value='' ".$sel.">".$otp.$dp->row["title"]."</option>";
}
buildmenu5($dp->row["id"],$t_select,$otstup+2,$iid);
}
$nlimit++;
$dp->movenext();
}

}
¿Cómo puedo comprobar si mi base de datos está funcionando correctamente y que db.php está correcto?
Muy agradecido.
Un saludo.
Por cierto compañero, en support de mi hosting me han dicho que es muy probable que me estén inyectando código y me he quedado algo blanco, me extraña mucho ya que aunque trabajo con la web online desde hace varios meses, ni siquiera está registrada en buscadores ni la conoce nadie.
Por si te he dado alguna pista.
Gracias!
Pues es posible que, en efecto, te hayan inyectado código. Que la web no 'la conozca nadie' no es ningún problema para los crackers que realizan búsquedas por IP. Simplemente prueban todas las IP en el puerto 80 y la que responde es una posible víctima, como la tuya.
Es muy posible que con la inyección de código hayan destrozado tu base de datos.
Primero, en db.php debes comprobar que las funciones de conexión, son exitosas o no: recoge el valor que devuelven y muestra un mensaje en caso de que fallen.
Para comprobar que tu base de datos está como debiera deberías acceder con algún utilitario como phpMyAdmin, que normalmente el proveedor ya tiene instalado. Consúltale.
Hola, phpMyAdmin me permite ver la base de datos y sus tablas con datos, he revisado los datos de las tablas y no veo ningún código extraño, me puedes dar alguna sentencia sql para lanzarla y comprobar que funciona. Yo he metido sentencias básicas como SELECT COUNT(*) AS TOTAL FROM CLIENTES y me responde bien, lo siento pero no tengo ni idea de sql y me da algo de reparo meter más mano.
¿Cómo puedo probar que las funciones de conexión son exitosas?, si no me es posible acceder a la web...
Un saludo, Gracias!
Los SELECT que tu hagas nunca pueden dañar la base de datos, así que siéntete libre para probar lo que quieras.
En db.php comprueba cómo se realiza la conexión. Mucha gente no comprueba el retorno de la función. Tienes ejemplos correctos en el manual:
http://es.php.net/manual/es/function.mysql-connect.php
Hola,
Problema solucionado. Se me inyectó un código.
Pude restaurar la base de datos y recuperar backup. Debo de mejorar la seguridad de mi site mucho. ¿Sabes de algún manual para principiantes?
Muchas gracias caballero.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas