1. Skip to Menu
  2. Skip to Content
  3. Skip to Footer>

PDFImprimirE-mail

Comparar contraseñas con foro phpBB3


Hace un tiempo me vi obligado a comparar las contraseñas que me introducían en una web con las de un foro phpBB3. Ahora os dejo aquí la solución a mi problema.
Al cambiar de versión a phpBB3, el sistema de encriptación de las contraseñas fue modificado. Estuve investigando con qué algoritmo se encriptaban y no conseguí encontrarlo. Desde luego que md5 no era y otros muchos usuarios se preguntaban lo mismo en los foros.
El camino que opté fue "tomar prestado" el código que valida las contraseñas del propio foro y usarlo a mi antojo.
Este es el código empleado.

{code lang:php title:"Código PHP" lines:false hidden:false}
// Poner aquí vuestros valores 
$localhost = 'localhost'; 
$username = 'username_db'; 
$password = 'pass'; 
$db_name= 'name_db'; 

mysql_connect("$localhost", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Usuario y contraseñas recibidas por post
$username=$_POST["username"]; 
$password=$_POST["password"]; 

$username = stripslashes($username); 
$password = stripslashes($password); 
$username = mysql_real_escape_string($username); 
$password = mysql_real_escape_string($password);

// Definimos que estamos dentro del sistema phpBB para así poder usar sus recursos, variables, etc
define('IN_PHPBB', true);

// Poner vuestra ruta a este archivo.
// Este es el fichero que comparará la contraseña que nos
// han introducido con la que se encuentra en la tabla phpbb_users
include("phpbb3/includes/functions.php"); 

$sql = "SELECT * FROM phpbb_users WHERE username='".$username."'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
mysql_free_result($result);

if (!$row) {
   // Usuario no existe
}

if (!phpbb_check_hash((string) $password, $row['user_password'])) {    
   echo "COMPARACION FALLIDA";
}
else {     
    echo "COMPARACION CORRECTA";

{/code}
Espero que os ayude.