New question

Question:

Date: 23-03-2016 11:37:53 (In Spanish)

Logueo de usuarios[Resolved]

Estoy usando este código para un logueo de usuarios pero no me ha funcionado, me podrían colaborar con otro código para intentar o señalarme el error que tengo en este.
Gracias

<?php
//configurando los datos de la db
$servername = "localhost";
$username = "root";
$password = "contraseña";
$dbname = "cursophp";

session_start();

//conectando a la base de datos
mysqli_connect($localhost, $root, $contraseña);
mysqli_select_db($dbname)or die('cannot select database');

if ($_POST['nombre']) {

//comprobacion del envio de nombre de usuario y password
    $nombre = $_POST['nombre'];
    $password = $_POST['password'];
    if ($password == NULL) {
        echo"la password no fue enviada";
    } else {
        $query = mysqli_query("SELECT nombre, password FROM php WHERE nombre='$nombre'") or die(mysqli_error());
        $data = mysqli_fetch_array($query);
        if ($data['password'] != $password) {
            echo"login incorrecto";
        } else {
            $query = mysqli_query("SELECT nombre, password' FROM php WHERE nombre='nombre'")or die(mysqli_error());
            $row = mysqli_fetch_array($query);
            $_SESSION["s_nombre"] = $row['nombre'];
            echo"has sido logueado correctamente" . $_SESSION['s_nombre'] . "y puedes acceder a la pagina_de_usuario.php.";
        }
    }
}
?>
Tags: $_SESSION - MySQL - PHP - Question - Session Votes: 1 - Answers: 7 - Views: 24 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 23-03-2016 13:32:14 cambia esta linea
    if($_POST['nombre']){
    


    por esta

    if(isset($_POST['nombre'])){
    
    
      Votes: 3 - Link answer
     
  • Date: 23-03-2016 14:50:30 ya lo resolviste¿?   Votes: 2 - Link answer
     
  • Date: 23-03-2016 15:46:45 Hola,
    De verdad necesitas un poco mas el concepto te paso este como guia para que mejores el tuyo y aprendas de el es uno basico.
    Recuerda siempre cifrar tus constraseñas ya sea con MD5() o lo que es SHA1().
    Aquí he usado MD5.
    <?php
        session_start();
        include('acceso_db.php');
        if(isset($_POST['enviar'])) { // comprobamos que se hayan enviado los datos del formulario
            // comprobamos que los campos usuarios_nombre y usuario_clave no estén vacíos
            if(empty($_POST['usuario_nombre']) || empty($_POST['usuario_clave'])) {
                echo "El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>";
            }else{
                // "limpiamos" los campos del formulario de posibles códigos maliciosos
                $usuario_nombre = mysqli_real_escape_string($link, $_POST['usuario_nombre']);
                $usuario_clave = mysqli_real_escape_string($link, $_POST['usuario_clave']);
                $usuario_clave = md5($usuario_clave);
                // comprobamos que los datos ingresados en el formulario coincidan con los de la BD
                $sql = mysqli_query($link, "SELECT usuario_id, usuario_nombre, usuario_clave FROM usuarios WHERE usuario_nombre='".$usuario_nombre."' AND usuario_clave='".$usuario_clave."'");
                if($row = mysqli_fetch_array($sql)) {
                    $_SESSION['usuario_id'] = $row['usuario_id']; // creamos la sesion "usuario_id" y le asignamos como valor el campo usuario_id
                    $_SESSION['usuario_nombre'] = $row["usuario_nombre"]; // creamos la sesion "usuario_nombre" y le asignamos como valor el campo usuario_nombre
                    header("Location: " .$_POST[url]);
                }else {
    ?>
                Error, <a href="acceso.php">Reintentar</a>
    <?php
                }
            }
        }else {
            header("Location: acceso.php");
        }
    ?>
    

    Saludos
    Equipo de Anime Sensei
      Votes: 2 - Link answer
     
  • Date: 23-03-2016 18:49:16 Te invito a que uses el BBCode para código php que lo encuentras en la parte de abajo de cada Textarea.

    Saludos
    Equipo ElCapa8
      Votes: 1 - Link answer
     
  • Date: 28-03-2016 07:39:16 Hola Jairo Tan simple como esto primer archivo connecty.php asi le puedes llamar, en este caso sera usando la libreria mysqli sin POO o en PDO:

    <?php
    $server = '127.0.0.1'; //servidor
    $username = ''; //usuario de la base de datos mysql
    $password = ''; //password del usuario de la base de datos mysql
    $database = 'users'; //nombre de la base de datos seleccionada
    
    $binary_key0fYPORT896548_pui = new mysqli(); // creamos un objecto
    $binary_key0fYPORT896548_pui->connect($server, $username, $password, $database);
    /*
     Las 2 lineas de arriba se pueden resumir en:
     $conexion = new mysqli($server, $username, $password, $database);
     Recuerden que el @ adelante de las funciones significa que no generará error o warnings
    */
    if($binary_key0fYPORT896548_pui->connect_errno) //verificamos si hubo un error al conectar, recuerden que pusimos el @ para evitarlo
    {
        die('Error de conexión: ' . $binary_key0fYPORT896548_pui->connect_errno); //si hay un error termina la aplicación y mostramos el error
    }
    ?>
    


    ese archivo es la conexion a nuestra gran base de datos mysql, ahora el logeo en este caso lo hare en una pagina solo para que entiendas como, yo por general hago un archivo php sin el html para otro archivo y asi llamarlo mediante ajax, bueno aqui va:

    <?php
    session_start();
    if(isset($_SESSION['id'])):
    header("Location: http://tuweb.com");
    else:
    if(isset($_POST['name']) && isset($_POST['password'])) {
    require_once("../connecty2.php");
    $name = $_POST['name'];
    $pass = $_POST['password'];
    $sql = "SELECT id, name, password FROM php WHERE name = '{$name}' AND password = '{$pass}'";
    $query = $binary_key0fYPORT896548_pui->query($sql);
    if($row = mysqli_fetch_array($query)) {
    $_SESSION['name'] = $row['name'];
    $_SESSION['id'] = $row['id'];
    $result = 'Has Iniciado Sesion Correctamente ^^';
    } else if(empty($_POST['name']) AND empty($_POST['password']))
    $result = "los 2 campos estan vacios";
    else if(empty($_POST['name']))
    $result = "el campo name esta vacio";
    else if(empty($_POST['password']))
    $result = "el campo password esta vacio";
    else
    $result = "el nombre o el password es incorrecto";
    }
    endif;
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>USERS</title>
    </head>
    <body>
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
    <input type="text" name="name" />
    <input type="password" name="password" />
    <input type="submit" />
    </form>
    <span><?php echo @$result;?></span>
    </body>
    </html>
    


    y asi de facil, se hace una legeo en php usando mysqli claro yo hice otra cosa por eso podia usar -> en vez de mysqli_query(), y hmm que mas otros puntos ha resaltar es la encryptacion de contraseñas como dice el ElCapa8 pero no con md5 o sha1 al menos no cosas tan importantes como el password, asi que aqui te dejo un link referente a eso, en este grupo: Encryptacion Passwords

    Otra cosa que resaltar es que tu hicistes doble vez una conexion a una DB de datos, se recomienda hacer las menores posibles llamadas en una base de datos por que imaginate osea por un usuario que se inicie sesion ahi como tu lo hicistes seria 2 llamadas a la tabla ahi no hay problema pero sin son 1000 usuarios al mismo tiempo? exacto seria 2000 consultas a DB asi que sho la hice con 1, siempre es recomendable eso buscar la forma de comprobar o hacer algo en sql solo con una llamada si es posible, espero a verte ayudado.

    Saludos ^w^
      Votes: 2 - Link answer
     
  • Date: 29-03-2016 19:06:22 Hola,
    Amigo te pido que si ya resolviste la pregunta cambies el estado a RESUELTA.

    Saludos
    Equipo ElCapa8
      Votes: 1 - Link answer
     
  • Date: 01-04-2016 20:42:30 Vas a tener algunos problemitas de seguridad jaja. Pasate a un framework urgente, te recomiendo Laravel   Votes: 1 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com