0

La página de la validación no me recibe el arreglo de los datos del formulario, después de haber pasado por el Js, y este al enviarlos al php por ajax, en esta última, no me aparecen los datos para validar.
Podrian ayudarme?.

pagina index.php
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    <link rel="stylesheet" href="estilos.css">
    <link rel="stylesheet" type="text/css" href="fuentes/iconic/css/material-design-iconic-font.min.css">
    <title>Login</title>
    <!-- Custom fonts for this template-->
    <link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
    <link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
    <!-- Custom styles for this template-->
    <link href="css/sb-admin-2.min.css" rel="stylesheet">

</head>

<body class="bg-gradient-primary">
    <div class="container">
        <!-- Outer Row -->
        <div class="row justify-content-center">
            <div class="col-xl-10 col-lg-12 col-md-9">
                <div class="card o-hidden border-0 shadow-lg my-5">
                    <div class="card-body p-0">
                        <!-- Nested Row within Card Body -->
                        <div class="row">
                            <div class="col-lg-6 d-none d-lg-block bg-login-image"></div>
                            <div class="col-lg-6">
                                <div class="p-5">
                                    <div class="text-center">
                                        <h1 class="h4 text-gray-900 mb-4">Welcome Back!</h1>
                                    </div>
                                    <form action="#" method="POST" class="user">
                                        <div class="form-group">
                                            <label for="usuario">Nombre</label>
                                            <input type="text" class="form-control form-control-user" id="nombre" name="nombre" 
 type="text" placeholder="Digite nombre de Usuario...">
                                        </div>
                                        <div class="form-group">
                                            <label for="password">Contraseña</label>
                                            <input type="password" class="form-control form-control-user" id="password" name="password"  placeholder="Password" autocomplete="on">
                                        </div>
                                        <div class="form-group">
                                            <div class="custom-control custom-checkbox small">
                                                <input type="checkbox" class="custom-control-input" id="customCheck">
                                                <label class="custom-control-label" for="customCheck">Remember
                                                    Me</label>
                                            </div>
                                        </div>
                                        <button type="submit" value="Enviar" id="Enviar" class="btn btn-primary btn-user btn-block">
                                            Entrar
                                        </button>
                                        <hr>
                                    </form>
                                    <hr>
                                    <div class="text-center">
                                        <a class="small" href="forgot-password.html">Forgot Password?</a>
                                    </div>
                                    <div class="text-center">
                                        <a class="small" href="register.php">Create an Account!</a>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- Bootstrap core JavaScript-->
    <script src="vendor/jquery/jquery.min.js"></script>
    <script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
    <!-- Core plugin JavaScript-->
    <script src="vendor/jquery-easing/jquery.easing.min.js"></script>
    <!-- Custom scripts for all pages-->
    <script src="js/sb-admin-2.min.js"></script>
    <script type="text/javascript" src="./codigo.js"></script>
</body>

</html>

Esta es la página js valido una parte, y la otra, la envio por ajax a la página progreso.php. // aqui si puedo cargar los valores que traigo del formulario...en la liena console.log muestro como se pasan del form al js...ver imagen Codigo.js:

$('#Enviar').click(function(e){
    e.preventDefault();
    nombre= $('#nombre').val();
    password= $('#password').val();
    console.log("matriz de datos de PHP",nombre, password);
    $.ajax({
        url:"proceso.php",
        type:'post',
        method: 'POST',
        data:{nombre:nombre,password:password},
        success:function(respuesta){ 
        },  
        error: function(xhr, status) {
            alert('Disculpe, existió un problema');
        },
    
        // código a ejecutar sin importar si la petición falló o no
        complete : function(xhr, status) {
            alert('Petición realizada');}

    })
})

Esta es la página donde valido con la base de datos... pero como no me llega información, no puedo comparar.

Página validar:


<?php
session_start();
var_dump($_POST);
include_once 'conexion.php';
$objeto = new Conexion();
$conexion = $objeto->Conectar();

if(isset($_POST['nombre'])) {
  echo "La variable está definida.";
} else {
  echo "La variable no está definida.";
}
$nombre=$_POST['nombre'] ?? null;
$password=$_POST['password'] ?? null;
var_dump($nombre);
$consulta = "SELECT * FROM usuario WHERE usuario='$nombre' AND password='$password' ";
$resultado = $conexion->prepare($consulta);
$resultado->execute();
if($resultado->rowCount() >= 1){
  $data = $resultado->fetchAll(PDO::FETCH_ASSOC);
}else{
  $data=null;
}
echo "Estos datos fueron almacenados en la base de datos: <br> Nombre:".$nombre."<br>"."Correo: ".$password;
print json_encode($data);

Estos son los errores que me salen de la página en el navegador.

errores pagina proceso.php

array(0) { } 
La variable no está definida.
NULL 
Estos datos fueron almacenados en la base de datos:
Nombre:
Correo: null

Soy nuevo en esto de la programación, graciasintroducir la descripción de la imagen aquí

7
  • Hola. Si analizas lo que pasas vía Ajax: data:{nom:nom,email:email}, los valores tienen las claves nom y email. Pero tú estás buscando en una clave mon aquí: $mon=$_POST['mon'];, debes cambiarlo a $nom=$_POST['nom']; El Undefined array key "email" no debería ocurrir, si es que nos estás mostrando el código .php del archivo correcto. Me extraña además que no arroje un Undefined variable $nom porque usas esa variable en la instrucción SQL pero nunca la declaras. Para depurar más a fondo pon un var_dump($_POST); después del session_start(); y dinos qué muestra?
    – A. Cedano
    Commented el 23 jun. a las 15:44
  • hola, buenas tardes ...hice las correcciones que me planteas y aun asi nada,cambie todo formulario: <input type="text" id="nombre" name="nombre" <input type="password" id="password" name="password" js nombre= $('#nombre').val(); password= $('#password').val(); $.ajax({ url:'proceso.php', type:"POST", //datatype: "json", data:{nombre:nombre,password:password}, valida.php if(isset($_POST['nombre'])) { echo "La variable está definida."; } else { echo "La variable no está definida."; } $nombre=$_POST['nombre'] ?? null; $password=$_POST['password'] ?? null; Commented el 23 jun. a las 16:15
  • Para depurar más a fondo pon un var_dump($_POST); después del session_start(); y dinos qué muestra? respuesta: array(0) { } Commented el 23 jun. a las 16:18
  • Pon el nuevo código en la pregunta pulsando en editar. Si te sale array(0) { } significa que no se está enviando nada al archivo .php. ¿Depuraste del lado del cliente que nombre y password tienen valores, por ejemplo poniendo un alert(nombre); y un alert(password); después de crear las variables y antes de lanzar la petición Ajax? Verifica además que la ruta del archivo .php sea la correcta con respecto a la ruta donde se encuentra el código Javascript. Según esto: url:"proceso.php" ambos archivos deben estar en la misma carpeta. También, puede que ...
    – A. Cedano
    Commented el 23 jun. a las 18:17
  • ... se haya quedado en memoria el código viejo. Para descartar eso, prueba en una nueva ventana en modo incógnito, o cambiando la URL, mandando nuevos parámetros, por ejemplo: https://www.elDominio/laCarpeta/elArchivo.php?nuevoParametro=nuevoValor
    – A. Cedano
    Commented el 23 jun. a las 18:18

0

Examina otras preguntas con la etiqueta o formula tu propia pregunta.