Hola gente,
verán en mi web en la sección de opiniones se pueden subir opiniones e imágenes,
http://www.buzonxalapa.com/opiniones...ar_opinion.php
esto funciona bien en chrome pero en ie y mozilla pasa algo raro,
cuando capturo
bien todo el form, incluyendo el captcha, si guarda la opinion,
pero si dejo el
espacio vacio del captcha o
lo pongo mal se queda la
imagen de loading, es decir, se queda en el
ajax.readyState 1
en cambio en chrome si me dice que el captcha esta mal.
aca esta el script ajax:
Código:
function ajaxFunction(){
var xmlHttp;
try{
xmlHttp=new XMLHttpRequest();
return xmlHttp;
}
catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
return xmlHttp;
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
return xmlHttp;
}
catch (e) {
alert("Su navegador no soporta AJAX!");
return false;
}
}
}
}
function procesar_opinion(){
//recibo variables
var autor_opinion= document.getElementById('autor_opinion').value;
var email_opinion= document.getElementById('email_opinion').value;
var fecha_opinion= document.getElementById('fecha_opinion').value;
//estas son las correspondientes al captcha
var desafio = Recaptcha.get_challenge();
var solucion = Recaptcha.get_response();
var ajax;
ajax= ajaxFunction();
ajax.open("GET", "procesar_opinion.php?recaptcha_challenge_field="+desafio+"&recaptcha_response_field="+solucion+"&autor_opinion="+autor_opinion+"&email_opinion="+email_opinion+"&fecha_opinion="+fecha_opinion, true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function() {
if (ajax.readyState == 1){ //si el captcha esta mal o vació de aquí no pasa (mozilla o ie)
document.getElementById('form_opinion').innerHTML= "<center><img src='loader.gif' alt='Procesando'><br><br> Procesando opinión, espere por favor...</center>";
}
if (ajax.readyState==4){
if(ajax.status==200){
var respuesta = ajax.responseText; //retorno incorrecto si el captcha es erroneo, aqui tambien puede estar el error, que no retorne bien esta variable en mozilla o ie
if (respuesta.length == 0 || respuesta == null){ //si no hay respuesta error
alert("Ocurrio un error en el envío, por favor contacte al administrador. Disculpe las Molestias");
}
else{
if(respuesta=="incorrecto"){ //si el captacha esta mal el php devuelve incorrecto
alert("Captcha incorrecto");
Recaptcha.reload();
}
else{ //si todo salio bien
$('#form_opinion').hide(1000);
$('#uploadify').show(1000);
}
}
}
}
ajax.send(null);
}
y el php que valida es este:
Código PHP:
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_GET["recaptcha_challenge_field"],
$_GET["recaptcha_response_field"]);
if(!$resp->is_valid){
echo "incorrecto"; //si esta mal el captcha devuelve error
exit();
}
else{ //si no inserta a la bd
$autor_opinion=trim($_GET['autor_opinion']);
$email_opinion=trim($_GET['email_opinion']);
$fecha_opinion=trim($_GET['fecha_opinion']);
$sql_insert="Insert into opiniones (autor_op, email_op, fecha_op) values ('$autor_opinion', '$email_opinion', '$fecha_opinion')";
mysql_query($sql_insert) or die('Error en la inserción: '.mysql_error());
echo "ok"; //imprime ok para que no caiga en respuesta vacia y sea error
exit();
}
no se que este afectando para que ie y mozilla tengan problemas, chrome va ok, lo que me indica que el script esta bien, debe haber alguna configuración o que se yo que no este funcionando en los otros
les agradezco sus observaciones