A ver, os cuento.
Estoy con un login mediante ajax.
Para loguear hago lo siguiente:
Llamo a esta funcion:
Código:
Funciona perfecto, llama al archivo conexion.php y le paso un parámetro que es "accion" que es el que luego usaré para llamar a una función. Os pongo el php mejor y lo veis bien:function loguear(){ var xmlhttp; var user = $(document.getElementById("user")).val(); var pass = $(document.getElementById("pass")).val(); if(window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); }else{ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlHttp.onreadystatechange=function(){ if(xmlHttp.readyState==4){ alert(xmlHttp.responseText); if(xmlHttp.responseText==true){ /*$(document.getElementById("form_login")).hide(500,function(){ $(document.getElementById("chat")).show("slow"); });*/ var selectedEffect = "clip"; var options = {}; $("#form_login").effect("explode", options, 500, function(){ $(document.getElementById("chat")).show(selectedEffect, options, 500); }); }else{ var selectedEffect = "shake"; var options = {}; $("#form_login").effect(selectedEffect, options, 500); } } } //xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttp.open("GET","php/sesion/conexion.php?accion=logueo&user="+user+"&pass="+pass,true); xmlHttp.send(); }
Código PHP:
<?php
//Sesion
session_start();
//$_SESSION['id_usuario'];
//Conexion MYSQL LOCAL
$user = 'Dracknes';
$pass = 'toor';
$servidor = 'localhost';
$bbdd = 'chats';
//Conexion MYSQL REMOTO
/*$conexion;
$user;
$pass;
$servidor;
$bbdd;*/
//Conectar
$conexion = mysql_connect($servidor, $user , $pass) or die (mysql_error());
//Seleccionar la BD a utilizar
mysql_select_db($bbdd, $conexion) or die (mysql_error());
function logueo(){
//Obtenemos user y pass
$usuario = utf8_decode($_GET['user']);
$contrasena = utf8_decode($_GET['pass']);
//Realizamos la consulta y la ejecutamos
$query = "SELECT count(*) cuenta, id_usuario, usuario FROM USUARIOS WHERE usuario = '".$usuario."' and contrasena = '".$contrasena."'";
$comprobacion = mysql_query($query, $GLOBALS['conexion']) or die(mysql_error());
$ejecucion = mysql_fetch_array($comprobacion) or die(mysql_error());
if($ejecucion['cuenta']==1){
$_SESSION['id_usuario'] = $ejecucion['id_usuario'];
echo true; //Si existe
}else{
echo false; //Si no existe
}
}
function deslogueo(){
//Destruimos la session
//session_start();
//session_destroy();
echo true;
}
function obtenerDatos(){
$query = "SELECT mensaje FROM MENSAJES ORDER BY id_mensaje DESC LIMIT 10";
$comprobacion = mysql_query($query, $GLOBALS['conexion']) or die(mysql_error());
while($ejecucion = mysql_fetch_array($comprobacion)){
echo '<p>'.$ejecucion['mensaje'].'</p>';
};
}
function insertarDatos(){
$query = "INSERT INTO MENSAJES (MENSAJE, ID_USUARIO) VALUES('".$_GET['texto']."', ".$_SESSION['id_usuario'].")";
$comprobacion = mysql_query($query, $GLOBALS['conexion']) or die(mysql_error());
echo '<p>'.$_GET['texto'].'</p>';
}
if(isset($_GET['accion']) && $_GET['accion']=="logueo"){
logueo();
}else if (isset($_GET['accion']) && $_GET['accion'] == "obtenerDatos"){
obtenerDatos();
}else if (isset($_GET['accion']) && $_GET['accion'] == "insertarDatos"){
insertarDatos();
}else if (isset($_GET['accion']) && $_GET['accion'] == "deslogueo"){
deslogueo();
}
?>
Tengo otra funcion que llama al php para desloquear que es la siguiente:
Código:
Este, en firefox funciona perfecto, me llama a la función y me devuelve 1 (que es true). Pero en chrome me devuelve una cadena vacia, con lo cual es como si no llamase a la funcion, lo cual me ralla, porque el codigo es el mismo.function desloguear(){ var xmlhttp2; if(window.XMLHttpRequest){ xmlHttp2 = new XMLHttpRequest(); }else{ xmlHttp2 = new ActiveXObject("Microsoft.XMLHTTP"); } xmlHttp2.onreadystatechange=function(){ if(xmlHttp2.readyState==4){ if(xmlHttp2.responseText==true){ alert(xmlHttp2.responseText); } } } //xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttp2.open("GET","php/sesion/conexion.php?accion=deslogueo",true); xmlHttp2.send(); }
Alguna posible solucion? Tiene que ver que esté en localhost?
Un saludo.