Correcto formato de array en PHP 5.3 – php mysqli

Pregunta:


Poseo el siguiente codigo para hashear los registros de una base de datos:

<?php
  include '__conexion.php';
  require_once 'funciones/passwordLib.php'; // Libreria de PHP5.5 Hash de contraseñas 
  ini_set('max_execution_time', 300); //300 seconds = 5 minutes
  //Sentencia.
  $stmt = $conexion->prepare("SELECT contrasena FROM usuarios");//Selecciono solo los datos a utilizar, en tu caso la contraseña.
  //Ejecutar sentencia.
  $stmt->execute();
  //Ligamos resultado BD.
  $stmt->bind_result($contrasena_txt_plano);
  while ($stmt->fetch()) {

    //Creamos nuestro Hash.
    $hash = password_hash($contrasena_txt_plano, PASSWORD_BCRYPT);//BCRYPT, que tendrá siempre 60 caracteres. (¡Imporante comprobar que tu columna contrasena en caso varchar pueda obtener 60 caracteres!

    //Creo un array, con el hash y la contrasena de texto plano.
    $arr[] = ['contrasena' => $contrasena_txt_plano, 'hash' => $hash]; 
    echo "seleccionadno";

  } 

  $stmt->close();//Cerramos sentencia 'select'.



  //Recorremos el array, para hacer nuestro 'UPDATE'.
  for ($i=0; $i<count($arr); $i++) { 

    //Actualizamos datos.
    $actualiza = $conexion->prepare("UPDATE usuarios SET hash=? WHERE contrasena=?");    
    $actualiza->bind_param("ss",$arr[$i]['hash'],$arr[$i]['contrasena']);

    $comprobar = $actualiza->execute();

    //Comprobamos si se ejecuto nuestra sentencia.
    if (false===$comprobar) {
      exit('Nuesta sentencia UPDATE fallo: ' . htmlspecialchars($actualiza->error));
    } else {
      echo "Los datos se actualizaron correctamente.<br />";
    }

    $actualiza->close();    

  }
?>

Me presente el error HTTP ERROR 500 al ejecutarlo.

HTTP ERROR 500: Error de programacion.

Este archivo lo traje de un servidor donde esta implantado PHP 5.4.0 y lo inclui a un sistema PHP 5.3.3

Identifique que el error da en esta linea:

$arr[] = ['contrasena' => $contrasena_txt_plano, 'hash' => $hash]; 

Cual seria el correcto formateo de esta linea para servir en PHP 5.3.3

Preguntado por: Victor Alvarado

JackNavaRow

la definicion de array es incorrecta para la version 5.3 debe ser de la siguiente forma:

$arr[] = array('contrasena' => $contrasena_txt_plano, 'hash' => $hash); 

Fuente

Tags:,

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *