[code][code][code]
HOLA NECESITO QUE ME EJECUTE EL INDEX.PHP EN OTRA PAGINA NO EN LA MISMA
DESPUES DE VALIDAR EL USUARIO QUE ESTOY HACIENDO MAL.
DE ANTEMANO MUCHAS GRACIAS
[code LOGIN.PHP]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Acceso al sistema</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link type="text/css" rel="stylesheet" href="screen.css" />
<script language="javascript" type="text/javascript" src="js/ajax.js"></script>
<script type="text/javascript">
$(function() {
// highlight
var elements = $("input[type!='submit'], textarea, select");
elements.focus(function(){
$(this).parents('li').addClass('highlight');
});
elements.blur(function(){
$(this).parents('li').removeClass('highlight');
});
$("#frmlogin").validate()
});
</script>
</head>
<body>
<div id="page">
<div id="header">
<table width="800" border="0" class="">
<tr>
<td><img src="img/logo.jpg" width="228" height="77" /></td>
<td>
<h1>SISTEMA CONTROL DE RECAUDOS (RECAUDOS-WEB)</h1>
</td>
</tr>
</table>
</div>
<div id="content" >
<p id="status"></p>
<form name="frmlogin" id="frmlogin" method="POST" action="#" onSubmit="enviarAccesoUsuario(); return false">
<fieldset>
<legend>Acceso al Sistema</legend>
<ul>
<li>
<label for="usuario"><span class="required">Usuario : </span></label>
<input name="usuario" type="text" class="text required" id="usuario" size="20" maxlength="10" minlength="4" />
</li>
<li>
<label for="pass1"><span class="required">Clave : </span></label>
<input name="pass1" type="password" class="text required" id="pass1" size="20" maxlength="10" minlength="4" />
</li>
<li>
<label class="centered info"><a id="registrar" href="frmusuarios.php">Registrar ...</a></label>
</li>
</ul>
</fieldset>
<fieldset class="submit" align="center">
<table width="60%" border="0" >
<tr>
<td> </td>
<td><input type="submit" class="button" name="submit" value="Entrar ..." /></td>
<td><input type="reset" class="button" name="limpiar" value="Limpiar ..." /></td>
<td> </td>
</tr>
</table>
</fieldset>
<div class="clear"></div>
<div id="resultado"></div>
</form>
</div>
</div>
</body>
</html>
[/code]
[code AJAX.JS]
function objetoAjax(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function enviarAccesoUsuario(){
//donde se mostrará lo resultados
divResultado = document.getElementById('resultado');
divResultado.innerHTML = '<img src="img/loading.gif">';
//valores de las cajas de texto
usu = document.frmlogin.usuario.value;
pa1 = document.frmlogin.pass1.value;
//instanciamos el objetoAjax
ajax=objetoAjax();
//uso del metodo POST
//archivo que realizará la operacion
//validarusuario.php
ajax.open("POST", "validarusuario.php", true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
//mostrar resultados en esta capa
divResultado.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//enviando los valores
ajax.send("usuario="+usu+"&pass1="+pa1)
}
[/code]
[code VALIDARUSUARIO.PHP]
<?php
session_start(); //abrimos la sesion para poder despues pasar variables de una pagina a otra
include_once('Connections/miconexionsql.php');
function quitar($mensaje) //funcion para quitar caracteres no permitidos
{
$nopermitidos = array("'",'\\','<','>',"\"",";","$","%","&","/","|","{","}","[","]","+","#");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}
function mysql_escape($cadena) {
if(get_magic_quotes_gpc() != 0) {
$cadena = stripslashes($cadena);
}
return mysql_real_escape_string($cadena);
}
//variables POST
$estado= "0"; //creo la variable $estado=0 para compararla despues con el campo de la BD estado y si son cero le dejara pasar
$usuario = $_POST['usuario'];
$pass1 = $_POST['pass1'];
if($usuario==NULL) {
echo "No permite [USUARIO] en blanco.";
return false;
}
if($pass1==NULL) {
echo "No permite [CLAVE] en blanco.";
return false;
}
Conectar();
$result = mysql_query("SELECT usuario, clave, estado FROM ma_usuarios WHERE usuario='$usuario'");
if($row = mysql_fetch_array($result)){
// ciframos "Ciframos" el password
$clave = sha1(md5($pass1));
if($row['clave'] == $clave){
$_SESSION["s_usuario"] = $row['usuario'];
if( $estado == $row['estado']){
?>
<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>
<?
}else{
echo '<span class="Estilo5">Cuenta de Usuario sin activar</span>';
session_destroy();
}
}else{
echo '<span class="Estilo5">Clave incorrecta.</span>';
}
}else{
echo '<span class="Estilo5">Usuario no Existente.</span>';
}
mysql_close();
?>
[/code]
Hola, no he analizado mucho el codigo, pero revise esta parte:
<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>
Hagalo desde la funcion (ajavascript) que valida al usuario.
window.location.href="loquesea.php";
ajax no ejecuta javascript cuando carga un archivo, o sea, si el archivo cargado tiene javascript no lo ejecuta, por eso no te esta funcionando U_U
Busca en inet que han hecho una solucion, o sea
básicamente tienes que captar el contenido del archivo cargado
buscar los tags "<script" </script>" y todo o que este dentro ponerlo dentro de un "eval()" =\
Sorry, es que ahora no andaba con mucho tiempo y tuve que salir. Usa solucion facil puede ser la siguiente:
En el script php, hacer la validacion y devolverle al ajax (por ejemplo) la cadena "hola", con javascript se toma ese valor y se redirecciona:
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
//mostrar resultados en esta capa
if(ajax.responseText=="hola"){
window.location.href="donde_sea.php";
}else{
divResultado.innerHTML = ajax.responseText
}
}
}
Listo.. eso debe funcionarle perfectamente ;D
yo pense que era
document.location.href= 'pagina'
window.location.href="pagina"; carga la nueva pagina y habilita el boton de atras (seria algo asi como hacer clic en un enlace que le envia a otra pagina). document.location.href="pagina"; no habilita el boton de atras...
dado el caso Mr. Crowley ha dado la respuesta :xD
si ya cargo yl el texto es "xxxxx"
hacer lo que uno imageine, por ejemplo, otra funcion en ajax llamando la pagina de inicio
fin
:xD
[code]
Gracias Mr. Crowley y a todos en el foro...
PERO ME PRESENTA LO SIGUIENTE.
EN FORMA LOCALHOST ME FUNCIONA COMO QUIERO. PERFECTO
PERO CUANDO LO SUBO A INTERNET ME SUCEDE QUE ECHO "Usuario Valido" ME QUEDA SOLO Y NO PASA AL INDEX.PHP.
LA VERDAD SOY NUEVO EN AJAX - PHP - MYSQL TENGO A PENAS UN MES PERO ESTOY APREDIENDO GRACIAS A TODOS USTEDES.
AGRADECIENDOLES DE ANTEMANO..
BUENO LA MODIFICACION QUE HICE FUE LA SIGUIENTE.
[code]
[code VALIDARUSUARIO.PHP]
if($row = mysql_fetch_array($result)){
// ciframos "Ciframos" el password
$clave = sha1(md5($pass1));
if($row['clave'] == $clave){
$_SESSION["s_usuario"] = $row['usuario'];
if( $estado == $row['estado']){
echo "Usuario Valido";
}else{
echo '<span class="Estilo5">Cuenta de Usuario sin activar</span>';
session_destroy();
}
}else{
echo '<span class="Estilo5">Clave incorrecta.</span>';
}
}else{
echo '<span class="Estilo5">Usuario no Existente.</span>';
}
[/code]
[code AJAX.JS]
function enviarAccesoUsuario(){
//donde se mostrará lo resultados
divResultado = document.getElementById('resultado');
divResultado.innerHTML = '<img src="img/loading.gif">';
//valores de las cajas de texto
usu = document.frmlogin.usuario.value;
pa1 = document.frmlogin.pass1.value;
//instanciamos el objetoAjax
ajax=objetoAjax();
//uso del metodo POST
//archivo que realizará la operacion
//validarusuario.php
ajax.open("POST", "validarusuario.php", true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
// alert(ajax.responseText)
if (ajax.responseText=="Usuario Valido"){
window.location.href="index.php";
}else{
divResultado.innerHTML = ajax.responseText
}
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//enviando los valores
ajax.send("usuario="+usu+"&pass1="+pa1)
}
[/code]
Como es eso de que "le queda solo y no pasa al index"?? :-(
SI CLARO ME MUESTRA LA PAGINA EN BLANCO MOSTRANDOME EN LA PARTE SUPERIOR "Usuario Valido" Y QUEDA AHI. Y NO PASA AL INDEX.PHP EN FORMA LOCALHOST SI FUNCIONA PERFECTO.
Ok, entonces eso quiere decir que no esta funcionando la condicion ajax.responseText=="Usuario Valido"...
se la salta y pasa a divResultado.innerHTML = ajax.responseText
Este es un ejemplo basico:
Archivo login.php (no se porque le puse extension .php, total no es requerido)
[code]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Ejemplo Ajax</title>
<script type="text/javascript" language="javascript" src="ajax.js"></script>
</head>
<body>
<div id="divCapa">Hola mundo!</div>
<form name="frmLogin">
Usuario: <input type="text" id="txtUsuario" name="txtUsuario">
Contraseña: <input type="password" id="txtContrasena" name="txtContrasena">
<input type="button" value="Ingresar" onClick="javascript:fntValidar_Usuario();">
</form>
</body>
</html>
Archivo ajax.js:
function fntAjax(){
var xmlhttp = false;
try {
//crear objeto ajax para navegadores distintos a ie
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
//crear objeto para ie
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function fntValidar_Usuario(){
var txtUsuario, txtContrasena, ajax = new fntAjax();
divCapa = document.getElementById('divCapa');
txtUsuario = document.getElementById('txtUsuario').value;
txtContrasena = document.getElementById('txtContrasena').value;
ajax.open("GET", "ejemplo.php?txtUsuario=" + txtUsuario + "&txtContrasena=" + txtContrasena, true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
if(ajax.responseText=="ok"){
window.location.href="http://www.kubicalorg.net";
}else{
divCapa.innerHTML = ajax.responseText;
}
}else{
divCapa.innerHTML = 'Por favor, espere un momento...';
}
}
ajax.send(null)
}
[/code]
Archivo ejemplo.php
<?php
if(trim($_GET["txtUsuario"])=="hola" and trim($_GET["txtContrasena"])=="mundo"){
echo "ok";
}else{
echo "El usuario no es válido";
}
?>
Espero que con eso se le aclaren las dudas, es un ejemplo basico. Creo que esta claro :xD
La contrasena para el ejemplo es mundo y el usuario hola.
Mr. Crowley
Buen colaborador. muy buen ejemplo.
le doy cinco estrellas.
Pura vida! Me alegra que le sirviera ;D