0

Estoy realizando una página inicial de verificación de usuarios, con sus respectivas contraseñas. Esta información la extraigo de una tabla de la base de datos MySQL. He realizado la conexión a la base de datos correctamente, y a la hora de realizar la conexión o probar el fichero "index.php" me da el siguiente error:

no muestra si esta conectada.

conexiones.php

<?php
$conexion = new mysqli("localhost","root","admin123","trujii")

    if($conexion)
    {
        echo "conexion exitosa";

        else
        {
            echo "conexion no exitosa";
        }
    }

?>

index.php

<!DOCTYPE html>
<html>
<head>
    <title>index</title>
</head>
<body>
    <center>
        <br/><br/>
        <form action="proceso.php" method="POST">
            <input type="text" name="usuario" value="" placeholder="usuario..."/>
            <input type="password" name="contrasena" value="" placeholder="contrasena..."/>
            <input type="submit" value="aceptar"/>
        </form>

    </center>

</body>
</html>

proceso.php

<?php
    session_start();

    $usuario = $_POST['usuario'];
    $contrasena = $_POST['contrasena'];

    include("conexion.php");

    $proceso = $conexion->query("SELECT * FROM admin WHERE user = '$usuario' AND pw = '$contrasena'"); 

        if ($resultado = mysqli_fetch_array($proceso)) 
        {

            $_SESSION['u_usuario'] = $usuario;
            //header("Location: sesion.php");
            echo "sesion exitosa";
        }
             else
            {
                //header("Location: index.php");
                echo "sesion no exitosa";
            }

?>
  • en tu sentencia sql prueba poniendo – Leonel Mar 07 '18 at 16:33
  • 2
    Hola cristian, lee sobre [inyección SQL](https://es.stackoverflow.com/q/10518/250) y [cómo evitarla en PHP](https://es.stackoverflow.com/q/18232/250). El código compartido es vulnerable a ese tipo de ataques y no debería usarse en entornos con acceso público. Aparte, se pueden detectar varios problemas más de seguridad (sesiones persistentes, contraseñas no hasheadas...) Mi recomendación sería no realizar un sistema de logueo propio y usar uno ya creado y confiable. – Alvaro Montoro Mar 07 '18 at 16:34
  • como puedo conseguir uno ya creado? – cristian trujillo Mar 07 '18 at 16:39
  • Me parece que a las respuestas añadidas les ha faltado indicarte que te falta el **;** al finalizar la declaración de la instancia de la conexión. – A. Palacio Mar 07 '18 at 17:36

1 Answers1

0

en tu sentencia sql prueba poniendo $proceso = $conexion->query("SELECT * FROM admin WHERE user = '".$usuario."' AND pw = '".$contrasena."'"); concatenar la variable usuario y contraseña en tu sql. Espero te ayude

Leonel
  • 826
  • 8
  • 20
  • Estas dos maneras serían equivalentes al ser las comillas externas dobles. y no simples. Usar una o la otra no debería afectar. – Alvaro Montoro Mar 07 '18 at 17:05
  • la idea es que no esta concatenando, las variables. @AlvaroMontoro – Leonel Mar 07 '18 at 17:07
  • Se están _concatenando_ porque se están usando comillas dobles, la cadena se procesa y se cambian las variables por su valor. Hacer `$nombre="Alvaro"; $frase="Mi nombre es $nombre";` es equivalente a hacer `$nombre="Alvaro"; $frase="Mi nombre es " . $nombre;`. Si las comillas fueran simples, entonces la variable no se cambiaría por su valor. – Alvaro Montoro Mar 07 '18 at 17:09
  • Puedes encontrar más información sobre eso en [esta pregunta](https://es.stackoverflow.com/q/92944/250) o en la [documentación de PHP](http://php.net/manual/es/language.types.string.php). – Alvaro Montoro Mar 07 '18 at 17:11