New question

Question:

Date: 01-10-2019 05:28:12 (In Spanish)

cargar una clave password_hash a la base de datos[Unresolved]

Hola necesito ayuda con el siguiente problema, estoy creando un login con encriptando password_hash el cual funciona excelente en el servidor local que tengo (Xampp) pero lleve el codigo a mi dominio Web y por alguna razon no funciona me da error http error 500 y no entiendo porue motivo este es mi codigo

index.php

 <!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>iniciar sesion</title>
	<link rel="stylesheet" type="text/css" href="inistyle.css">
	<link rel="stylesheet" type="text/css" href="animate.css">
</head>
<body>

	<header style="background-color: #EB0000;">
		
	</header>
	<header style="background-color: #000000"></header>
	
	<center>
		<div class="logo">
		<img class="animated bounceInDown" src="img/logo.jpg">
	</div>
		<form action="proceso.php" method="POST">
			<table>
				<td>
					<input class="animated bounceInUp" type="text" name="usuario" value="" placeholder="usuario" required="">
				</td>	
			</table>
			
			<table>
				<td>
					<input class="animated bounceInUp" type="password" name="clave" value="" placeholder="clave" required="">
				</td>	
			</table>
			<table>
				<td>
					<input class="animated bounceInUp" type="submit" value="Ingresar">
				</td>	
			</table>
		</form>
	</center>
</body>
</html>


este es el formulario de ingreso el cual me lleva al archivo proceso.php

proceso.php

 <?php
	session_start();

	$usuario=$_POST['usuario'];
	$clave= $_POST['clave'];
	$_SESSION['usuario']=$usuario;
	

	include("conexion.php");
	$sql="SELECT * FROM usuarios2 WHERE usuario='$usuario'";
	$result=mysqli_query($conexion, $sql);
	$contador=0;	
		
		while($row = mysqli_fetch_array($result)){			
					
			if (password_verify($clave, $row['clave'])) {
						$contador++;
					}
			if ($contador>0) {
					$user=$row['usuario'];
				}	
		}			

		if ($contador>0) {
			if ($user == $usuario) {
			header("location:menu_sistemas");
			}

		if ($user == 'invitado') {
			header("location:menu");
			}

		}else{
			echo "Usuario o Contraseña incorrecta";
		}
?>



aquí esta mi problema ya que en el servidor local tengo acceso perfecto pero en el servidor WEB da error, ahora quiero aclarar lo siguiente, los usuarios ya están en la base de datos ya que los agregue de la base de datos del servidor local, lo que hice fue que como funciono en el servidor local, tome la tabla USUARIOS2 y la exporte, tome el archivo .sql y lo importe a la base de datos del dominio y ahora no puedo acceder a la web porque cada vez que ingreso da error http 500, hice la verificación de console con F12 y no muestra ningún error aclaro tambien que la clave es un Varchar de 255 caracteres

Ahora aqui viene lo interesante, Prove creando un formulario de ingreso desde la web el cual es este

 <!doctype html>
<html>
    
    <head>
    
        <meta charset="utf-8">
        <title>Documento sin título</title>
        
        <style>
		
		table{
			width:300px;
			margin:auto;
			background-color:#FFC;
			border:2px solid #F00;
			padding:5px;
			
		}
		
		td{
			text-align:center;
			
		}
		h1{text-align:center}
		
		</style>
        
    </head>
    
    <body>
    <h1>REGÍSTRATE</h1>
    
        <form action="pagina_insertar_usuarios.php" method="post">
        <table><tr>
          <td>
            Usuario</td><td><input type="text" name="usu" id="usu"></td></tr>
           <tr>
             <td> Contraseña </td><td><input type="text" name="contra" id="contra"></td></tr>
           
           <tr><td colspan="2"> <input type="submit" name="enviando" value="¡Dale!">
        </td></tr></table>
        </form>
    
    </body>
    
</html>


el cual me lleva al siguiente codigo php

 <?php

	$usuario= $_POST["usu"];
	$contrasenia= $_POST["contra"];
	
	$pass_cifrado=password_hash($contrasenia, PASSWORD_DEFAULT, array("cost"=>12));
				
		include("conexion.php");
		
		$sql = "INSERT INTO usuarios2 VALUES('id','$usuario','$pass_cifrado')";
	    mysqli_query($conexion,$sql);		

?>


aplique este método ya que lei que posiblemente podría ser porque los usuarios tenían que ser creados nuevamente desde el archivo en el dominio pero me tope con lo siguiente, cuando yo le digo que cargue la Variable $pass_cifrado pero algo pasa ya que no carga nada a la tabla asi hice lo siguiente:

 <?php

	$usuario= $_POST["usu"];
	$contrasenia= $_POST["contra"];
	
	//$pass_cifrado=password_hash($contrasenia, PASSWORD_DEFAULT, array("cost"=>12));
				
		include("conexion.php");
		
		$sql = "INSERT INTO usuarios2 VALUES('id','$usuario','$contrasenia')";
	    mysqli_query($conexion,$sql);		

?>


en el archivo php Tache la linea del password_hash y cargue la variable $contrasenia y funciona correctamente pero obvio lo que esta es cargando la clave sin ecriptar lo cual no me sirve y Mi pregunta es Porque el Password_hash me esta ocasionando problemas para cargar la clave encriptada y si es así podría ser el password_verify quien me está causando problema en el login con el archivo PROCESO.PHP

cualquier ayuda seria de gran ayuda e importancia ya que tengo el sistema cerrado ya que sin esta seguridad quedaría vulnerable gracias.
Tags: Database - HTML - HTML5 - MySQL - PHP - PHP Advanced Votes: 0 - Answers: 7 - Views: 13 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 01-10-2019 07:23:51 Hola puedes indicar que error te esta dando al momento de insertar
    y una pregunta que valor es tu id
    "INSERT INTO usuarios2 VALUES('id','$usuario','$contrasenia')";
    
      Votes: 0 - Link answer
     
  • Date: 01-10-2019 08:44:12 hola te explico el id lo agrega solo la base de datos con el auto_increment y el error no me lo indica, en el navegador yo abro los archivos y voy a la consola para ver el error y no hay nada, de verdad no marca ningun error pero voy a la base de datos y no carga los datos ingresados pero si tacho el código password_hash si carga los datos pero si encriptar   Votes: 0 - Link answer
     
  • Date: 01-10-2019 10:38:01 Qué dicen tus logs?
    Cuando hay un error 500 (Internal Server Error) los errores generalmente no se despliegan sino que se van a un log.

    La ubicación del archivo log depende de la configuración de cada aplicación pero por lo general el log del servidor web captura información relacionada. En el caso de Apache revisa el contenido del archivo /var/log/apache2/error.log. Si estás usando algún framework entonces checa las configuraciones del mismo.

    Saludos
      Votes: 0 - Link answer
     
  • Date: 03-10-2019 08:40:14 Hola Ernesto, aclaro que en el Servidor local(Xampp) el sistema funciona bien, mi problema es cuando lo llevo a cpanel y cargo los archivos php, cuando realizo el Login por Chrome da error el archivo proceso.php, con respecto al Log estoy revisando la carpeta Log en el Cpanel y tengo una serie de archivos relacionados con el sistema son archivos .gz pero ninguno q diga error   Votes: 0 - Link answer
     
  • Date: 03-10-2019 09:59:07 Ten en cuenta que hay algunas diferencias si estás usando Windows en local y Linux en el servidor.

    Una de las puñetas habituales es que Windows no distingue mayúsculas y minúsculas, mientras que Linux sí, y quizás haya algunas diferencias a la hora de encriptar. Probaría a inicializar esas claves en el servidor.
      Votes: 0 - Link answer
     
  • Date: 05-10-2019 13:01:30 Probaste eliminando el array con el coste? Por default el valor que viene es de 10 y según la documentación oficial depende del hardware que soporte el valor que le incrementes   Votes: 0 - Link answer
     
  • Date: 07-10-2019 16:18:00 Debes revisar qué versión de PHP tiene el servidor. A veces esos servidores no actualizan sus versiones de PHP (aunque password_verfy funciona desde php 5.5) y entonces no tienes disponibles algunas funciones. También busca el archivo llamado 'error.log' en el directorio raíz de tu aplicación, puede ser que encuentres una idea de qué está pasando.   Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com