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, gracias
data:{nom:nom,email:email}
, los valores tienen las clavesnom
yemail
. Pero tú estás buscando en una clavemon
aquí:$mon=$_POST['mon'];
, debes cambiarlo a$nom=$_POST['nom'];
ElUndefined 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 unUndefined variable $nom
porque usas esa variable en la instrucción SQL pero nunca la declaras. Para depurar más a fondo pon unvar_dump($_POST);
después delsession_start();
y dinos qué muestra?array(0) { }
significa que no se está enviando nada al archivo.php
. ¿Depuraste del lado del cliente quenombre
ypassword
tienen valores, por ejemplo poniendo unalert(nombre);
y unalert(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 ...https://www.elDominio/laCarpeta/elArchivo.php?nuevoParametro=nuevoValor