Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Login en PHP y MYSQLI

Estas en el tema de Login en PHP y MYSQLI en el foro de PHP en Foros del Web. Hola gente, antiguamente tenia mi login con mysql y usaba simplemente mysql_query() ahora decidi pasarme a mysqli que es mucho mas seguro segun me dijeron, ...
  #1 (permalink)  
Antiguo 10/10/2016, 14:26
 
Fecha de Ingreso: julio-2014
Ubicación: Montevideo
Mensajes: 78
Antigüedad: 9 años, 9 meses
Puntos: 2
Login en PHP y MYSQLI

Hola gente, antiguamente tenia mi login con mysql y usaba simplemente mysql_query()
ahora decidi pasarme a mysqli que es mucho mas seguro segun me dijeron, el tema es que luego de investigar mucho y preguntar en foros (otros porque aca nadie sabia) logre solucionar unos errores que tenia antes pero ahora me ocurre que aunque funciona el login me deja ingresar con cualquier contraseña.

Código PHP:
$nombre_str $_POST["username"];
$email_str $_POST["username"];
$pass_str $_POST["password"];
    
    
            
$user_id=null;

            
$sentencia $con->prepare("SELECT id, nombre, skin, nivel, adminlvl FROM cuenta WHERE nombre=? OR email=? AND pass=? "); 
                        
$sentencia->bind_param("sss"$nombre_str$email_str$pass_str); 
                        
$sentencia->execute();
                        
$sentencia->store_result();

if(
$sentencia->num_rows>0){
   
$sentencia->bind_result($id$nombre$skin$nivel$adminlvl);        
   while (
$sentencia->fetch()) {

$user_id $id;
$nombre $nombre;
$skin $skin;
$nivel $nivel;
$admin $adminlvl;
      
   } 

__________________
¿Necesitas Hosting Web? - [JSFIDDLE="www.intechservers.com/hosting"]Intech Servers Hosting[/JSFIDDLE]
¿Necesitas Sitio Web? - [JSFIDDLE="www.intechservers.com/web"]Intech Servers Web[/JSFIDDLE]
  #2 (permalink)  
Antiguo 10/10/2016, 14:58
 
Fecha de Ingreso: agosto-2011
Mensajes: 87
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Login en PHP y MYSQLI

Si vienes de mysql_query(), Porque no usas "mysqli_query()"?

http://php.net/manual/es/mysqli.query.php
  #3 (permalink)  
Antiguo 10/10/2016, 15:13
 
Fecha de Ingreso: julio-2014
Ubicación: Montevideo
Mensajes: 78
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: Login en PHP y MYSQLI

Porque eso es inseguro, si lo hago cuando tengo una consulta simple que no lleva variables ingresadas por el usuario pero cuando es asi prefiero usar prepare, execute y todas esas cosas que hacen la consulta mucho mas segura ante ataques Sql Inyection
__________________
¿Necesitas Hosting Web? - [JSFIDDLE="www.intechservers.com/hosting"]Intech Servers Hosting[/JSFIDDLE]
¿Necesitas Sitio Web? - [JSFIDDLE="www.intechservers.com/web"]Intech Servers Web[/JSFIDDLE]
  #4 (permalink)  
Antiguo 10/10/2016, 15:36
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Login en PHP y MYSQLI

Si no me equivoco tu problema es la consulta
Código SQL:
Ver original
  1. SELECT id, nombre, skin, nivel, adminlvl FROM cuenta WHERE nombre=? OR email=? AND pass=?

Estás preguntando, (nombre) o (email y pass), cuando deberías de preguntar (nombre o email) y (pass)


Prueba a ponerla así y nos cuentas
Código SQL:
Ver original
  1. SELECT id, nombre, skin, nivel, adminlvl FROM cuenta WHERE ( nombre=? OR email=? ) AND pass=?
__________________
Unset($vida['malRollo']);
  #5 (permalink)  
Antiguo 10/10/2016, 15:58
 
Fecha de Ingreso: agosto-2011
Mensajes: 87
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Login en PHP y MYSQLI

Ahora si comprendo el porque intentas pasarte de mysql_query() a "sentencias preparadas" por cierto el del post anterior te dio la respuesta que buscabas !!
  #6 (permalink)  
Antiguo 11/10/2016, 06:41
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 10 meses
Puntos: 39
Respuesta: Login en PHP y MYSQLI

Bunas, no soy un erudito, pero si te preocupa la seguridad, yo que tú me pasaba a PDO ya que estás por el cambio, hazlo por completo.

Por otro lado si te preocupa la seguridad en exceso, no te va a valer con preparar las consultas, eso te evitará las inyecciones de "novatos" por decirlo así, pero siempre que algo sea a través de un proceso que todo el mundo conoce y del que hay mucha información siempre habrá alguien que te va a saber entrar.

Lo mejor para esto es en lugar de usar prepare lo cual consume muchos más recursos del servidor, yo que tú me peraraba un código hecho por ti mismo y que solo conozcas tú para evitar este tipo de inyecciones y no comerte mucho la cabeza después a la hora de hacer consultas y sobre todo, hacerlas de la manera que menos recursos consuman del servidor. Pero esto es solo una opinión, son temas de candentes debates en las que hay tanta diversidad de opiniones como estrellas en el universo.
__________________
Diseño Web - Arisman Web
  #7 (permalink)  
Antiguo 11/10/2016, 06:45
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 10 meses
Puntos: 39
Respuesta: Login en PHP y MYSQLI

Bunas, no soy un erudito, pero si te preocupa la seguridad, yo que tú me pasaba a PDO ya que estás por el cambio, hazlo por completo.

Por otro lado si te preocupa la seguridad en exceso, no te va a valer con preparar las consultas, eso te evitará las inyecciones de "novatos" por decirlo así, pero siempre que algo sea a través de un proceso que todo el mundo conoce y del que hay mucha información siempre habrá alguien que te va a saber entrar.

Lo mejor para esto es en lugar de usar prepare lo cual consume muchos más recursos del servidor, yo que tú me peraraba un código hecho por ti mismo y que solo conozcas tú para evitar este tipo de inyecciones y no comerte mucho la cabeza después a la hora de hacer consultas y sobre todo, hacerlas de la manera que menos recursos consuman del servidor. Pero esto es solo una opinión, son temas de candentes debates en las que hay tanta diversidad de opiniones como estrellas en el universo.
__________________
Diseño Web - Arisman Web

Etiquetas: login, mysql, mysqli, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:43.