Cita:
Iniciado por Uri Macías
Ya he separado el código de JS y PHP, espero que no sea un posterior problema la presentación de todo el código.
Respecto a lo demás, si
display_errors = On, y todo funciona correctamente hasta donde se supone debe de hacer la validación.
si no es molestia muestro el código entero.
Código PHP:
<?php
ini_set('session.cookie_lifetime','120');
ini_set('session.gc_maxlifetime','120');
session_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Prueba de autenticación</title>
<script language="javascript" type="text/javascript">
try{alert("está por enviar datos")}catch(e){print e}
function vacio(campo) {
for ( i = 0; i < campo.length; i++ ) {
if ( campo.charAt(i) != " " ) {
return true
}
}
return false
}
function valida(Formulario){
var retorna = false
if(vacio(Formulario.usuario.value) == false){
retorna = false
}
else{
if(vacio(Formulario.contrasena.value) == false){
retorna = false
}
else
return retorna = true
}
}
if (retorna == false){
alert ("No debe haber campos vacios")
}
return retorna
}
</script>
</head>
<body>
<?php
if(!isset($_POST['usuario'])){
formulario();
}
else{
autentica($_POST['usuario'], $_POST['contrasena']);
}
?>
</body>
</html>
<?php
function formulario(){
print '<form name="autentica" method="post" action="inicioPrueba.php" onSubmit="return valida(this);">
<label>Usuario</label>
<input name="usuario" type="text" id="usuario" size="16" maxlength="16">
<label>Contraseña</label>
<input name="contrasena" type="password" id="contrasena" size="16" maxlength="16">
<input type="submit" name="Submit" value="Registrar">
</form>';
}
function autentica($nick, $pass){
if(!isset($_SESSION['intentos'])){
$_SESSION['intentos']=1;
}
else{
$_SESSION['intentos'] += 1;
}
if($_SESSION['intentos'] < 4){
include "../Connections/conexion.php";
$query = sprintf("SELECT * FROM tb_usuarios WHERE nick='%s' and pass='%s'",
mysql_real_escape_string($nick),
mysql_real_escape_string($pass));
$resultado = mysql_query($query);
if(!$resultado){
$message = 'Consulta inválida: ' . mysql_error() . "\n";
$message .= $query;
die($message);
}
else{
if($row = mysql_fetch_row($resultado)){
print $row[7] . "\n";
print $row[8];
}
else{
print "El usuario o contraseña son inválidos, por favor intente de nuevo";
formulario();
}
}//Fin If valida resultado
}//Fin comprobación de intentos
else{
print "A intentado más de tres veces. Por favor intente de nuevo en dos minutos";
}
}
?>
Prueba con la claúsula try { } catch (e) { }. Te escribo el ejemplo:
Código HTML:
function valida(Formulario){
try {
var retorna = false
if(vacio(Formulario.usuario.value) == false){
retorna = false
}
else{
if(vacio(Formulario.contrasena.value) == false){
retorna = false
}
else
return retorna = true
}
}
if (retorna == false){
alert ("No debe haber campos vacios")
}
return retorna
} catch (e) {
alert ("Ocurrio una excepcion no controlada: " + e.message)
return false
}
}
De esta manera no enviará el formulario y te mostrará el error en caso de q se ejecute la función. Una vez tengas la función completamente testeada y depurada puedes eliminar la claúsula o el alert, como veas.
Saludos