Despu茅s de varios ataques al PHP-Nuke de la web de El Rinc贸n del C me decid铆 a usar un gestor de contenidos creado a medida y escrito desde cero (man铆as que tiene uno). Uno de los problemas a los que me enfrent茅 fue recuperar la informaci贸n los foros, que usaban una versi贸n de PHPBB integrada en PHP-Nuke. Quer铆a seguir usando PHPBB as铆 que no me ha quedado m谩s remedio que separar el PHPBB del PHP-Nuke. He seguido estos pasos (sacados m谩s o menos de aqu铆):
- Instalar desde cero unos foros PHPBB con la 煤ltima versi贸n 2.x (la 3.0 est谩 en fase beta en el momento de escribir este post).
- Borrar las tablas: Auth-access, Topics, Categories, Forums, Users, Posts, Posts_text.
- Desde la base de datos “vieja” exportar estas tablas y volcarlas a la nueva instalaci贸n (ojo con los prefijos de las tablas). Exportar la estructura y los datos.
Hay gente que dice tener problemas con las contrase帽as, pero parace que en este caso no ha habido ninguno.
S铆 que he tenido algunos problemas por la estructura de la base de datos. Por ejemplo en la tabla phpbb_users faltaban dos campos: ‘user_login_tries’, ‘user_last_login_try’. Esto lo he solucionado a帽ad铆endolos a mano:
alter table phpbb_users add `user_login_tries` smallint(5) unsigned NOT NULL default '0'
alter table phpbb_users add `user_last_login_try` int(11) NOT NULL default '0'
Tambi茅n he encontrado un problema con las fechas de registro que ten铆an este formato:
Nov 10, 2000
y estaba almacenado en un campo con tipo varchar en lugar de estar en formato timestamp (y almacenado en un campo tipo int).
Para solucionar esto he creado un script llamado index2.php:
$sql = "select user_id, user_regdate from phpbb_users where 1";
$usuarios_query = $bd->Execute($sql);
while (!$usuarios_query->EOF)
{
$fechaOriginal = $usuarios_query->fields['user_regdate'];
$mesTexto = substr($fechaOriginal, 0, 3);
$dia = substr($fechaOriginal, 4, 2);
$agno = substr($fechaOriginal, 8, 4);
switch($mesTexto)
{
case 'Jan': $mes = 1;break;
case 'Feb': $mes = 2;break;
case 'Mar': $mes = 3;break;
case 'Apr': $mes = 4;break;
case 'May': $mes = 5;break;
case 'Jun': $mes = 6;break;
case 'Jul': $mes = 7;break;
case 'Aug': $mes = 8;break;
case 'Sep': $mes = 9;break;
case 'Oct': $mes = 10;break;
case 'Nov': $mes = 11;break;
case 'Dec': $mes = 12;break;
}
$fechaModificadaTimestamp = mktime(0, 0,0, $mes, $dia, $agno);
$fechaModificada = date("d m Y", $fechaModificadaTimestamp);
echo "
$fechaOriginal -> $dia $mes $agno -> $fechaModificada";
$actualizaSql = "update phpbb_users set user_regdate='" . $fechaModificadaTimestamp . "' where user_id='" . $usuarios_query->fields['user_id'] . "'";
$bd->Execute($actualizaSql);
$usuarios_query->moveNext();
}
Ojo, que este script usa un API de fabricaci贸n propia, habr铆a que hacerle alguna modificaci贸n para que funcionara sin necesidad de usar ning煤n API. 驴Alguien se anima?
Despu茅s de esto ya s贸lo queda cambiar el tipo del campo de varchar a int.
Tags:
foros,
php,
phpbb,
phpnuke