Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks JS (http://www.forosdelweb.com/f127/)
-   -   verficar sesion de php al oprimir un href (http://www.forosdelweb.com/f127/verficar-sesion-php-oprimir-href-553488/)

chalchis 31/01/2008 22:45

verficar sesion de php al oprimir un href
 
hola amigos habra la manera de verificar con ajax si la sesion que se creo con php esta activa, es decir
si doy click aun link antes de cargar la pagina me diga si la session ya caduco

saludos
espero sus comentarios amigos

ZiTAL 01/02/2008 05:05

Re: verficar sesion de php al oprimir un href
 
Pistas:

html
Código HTML:

<a href="tu_url" .... onclick="return abc(this)" />
...
<div id="error">
</div>

javascript:

Código:

function abc(esto)
 {
  // verificar mediante ajax y guardar en variable resultado
  var resultado=ajax.responseText;
  if(resultado=='true')
  {
    location.href=esto.href;
    return false;
  }
  else if(resultado=='false')
  {
    var error=document.getElementById('error');
    error.innerHTML='se te caduco la sesion...';
    return false;
  }
 }

en PHP:

si tiene sesion
Código PHP:

echo 'true'

si no tiene sesion
Código PHP:

echo 'false'

espero que te sirva de inicio ;)

chalchis 01/02/2008 09:29

Re: verficar sesion de php al oprimir un href
 
Cita:

Iniciado por ZiTAL (Mensaje 2270887)
Pistas:

html
Código HTML:

<a href="tu_url" .... onclick="return abc(this)" />
...
<div id="error">
</div>

javascript:

Código:

function abc(esto)
 {
  // verificar mediante ajax y guardar en variable resultado
  var resultado=ajax.responseText;
  if(resultado=='true')
  {
    location.href=esto.href;
    return false;
  }
  else if(resultado=='false')
  {
    var error=document.getElementById('error');
    error.innerHTML='se te caduco la sesion...';
    return false;
  }
 }

en PHP:

si tiene sesion
Código PHP:

echo 'true'

si no tiene sesion
Código PHP:

echo 'false'

espero que te sirva de inicio ;)

orale que gracias amigo pero, si no es mucha molestia
en que parte se esta preguntando por la session y una disculpa por hacerte esta pregunta lo que pasa que en php normalmente pregunto si la sesion esta activa asi:

session_start();
if ($_session("User")!=null)

saludos espero sus comentarios

ZiTAL 02/02/2008 04:08

Re: verficar sesion de php al oprimir un href
 
HTML
Código HTML:

<a href="pagina.php" onclick="return abc(this)">pagina</a>
<div id="error" style="display:none">
</div>

Javascript:
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("Your browser does not support AJAX!");return false; }
  }}}

function abc(esto)
 {
  var ajax = new ajaxFunction();
  ajax.onreadystatechange=function()
    {
    if(ajax.readyState==4)
      {
        var resultado=ajax.responseText; // guardar respuesta de sesion.php en variable
        if(resultado=='true')
        {
                location.href=esto.href; // si pagina sesion.php imprime true es que tiene sesion, por lo tanto iremos al enlace del link
                return false;
        }
        else if(resultado
        {
                var error=document.getElementById('error');
                error.innerHTML='Se te acabo la sesion :('; // añadimos codigo a la capa error
                error.style.display='block'; // mostramos la capa, ya que esta oculta
                return false;
        }
      }
    }
  ajax.open("GET","sesion.php",true);
  ajax.send(null);
 }

sesion.php

Código PHP:

session_start();
if (
$_SESSION["User"]!=null)
 {
  echo 
'true';
 }
else
 {
  echo 
'false';
 } 


chalchis 06/02/2008 00:39

Re: verficar sesion de php al oprimir un href
 
gracias zital por la ayuda
saludos

chalchis 06/02/2008 12:19

Re: verficar sesion de php al oprimir un href
 
fijate que estoy probando el script solo modifique esta parte porque no se si te falto pornerlo el

if(resultado=='false')
{
var error=document.getElementById('error');
error.innerHTML='Se te acabo la sesion :('; // añadimos codigo a la capa error
error.style.display='block'; // mostramos la capa, ya que esta oculta
return false;
}

bueno el datalle es que si logra ver el mensaje cuando no hay session pero, el direccionamiento si realiza aun si no hay ,
que puedo hacer?

saludos
espero sus comentarios

chalchis 06/02/2008 12:24

Re: verficar sesion de php al oprimir un href
 
hola parace que se logro pero me gustaria saber tu opinion

modifique esto:
original:
<a href="pagina.php" onclick="return abc(this)">pagina</a>
<div id="error" style="display:none">
</div>

despues:
<a href="#" onclick="return abc('pagina.php')">pagina</a>
<div id="error" style="display:none">

y modifique esto tambien

antes:
if(resultado=='true')
{
location.href=esto.href; // si pagina sesion.php imprime true es que tiene sesion, por lo tanto iremos al enlace del link
return false;
}

despues:
if(resultado=='true')
{
location.href=esto; // si pagina sesion.php imprime true es que tiene sesion, por lo tanto iremos al enlace del link
return false;
}

saludos espero tus comentarios

gracias

ZiTAL 06/02/2008 14:52

Re: verficar sesion de php al oprimir un href
 
te explico porque no te funciona:

1.- si pones el # en href luego no te funcionara ya que:

Código:

location.href=esto.href;
que hace esto:

location.href (redirecciona a pagina)

esto.href (esto lo hemos pasado como this, y que es this, pues en este caso el elemento A

entonces: elemento A.href (la propiedad href del elemento a pues es # y no como antes que era un enlace)

Solucion?
Código HTML:

<a href="#" onclick="return abc(this,'pagina.php')">pagina</a>
Código:

function abc(esto,enlace)
...
if(resultado=='true')
{
  location.href=enlace;
  return false;
}

ya nos contaras.

PD: El elemento this se usa para enviar dicho elemento a la funcion, pero se podria usar por ejemplo el id y hacer un getElementById, eso a gusto de cada uno ;)

chalchis 06/02/2008 15:22

Re: verficar sesion de php al oprimir un href
 
ok probare tomando encuenta tus observaciones

gracias
saludos

chalchis 27/05/2008 22:19

Respuesta: verficar sesion de php al oprimir un href
 
hola men aqui nuevamente molestando fijate que deseo aplicar el script pero ahora ya no usando
un href si no que una función llame a tu funcion de ajax que muy amablemente has hecho

es decir asi tengo una funcion que haces unas operaciones y en las cuales quiero incluir
tu funcion

<script>
function invocar()
{
resultadoA = abc();
alert(resultado );

}
</script>

html
<input type="button" name="ver" onclick="invocar()">

que debo modificar en la funcion para ya no usar
<a href="#" onclick="return abc(this,'pagina.php')">pagina</a>
y saber como regresar el valor de la funcion ajax en resultadoA

saludos
espero tus comentarios

chalchis 28/05/2008 10:29

Respuesta: verficar sesion de php al oprimir un href
 
trate de hacer esto
esto lo puede en un archivo js
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("Your browser does not support AJAX!");return false; }
}}}

function abc()
{
var ajax = new ajaxFunction();
ajax.onreadystatechange=function()
{
if(ajax.readyState==4)
{
var resultado=ajax.responseText; // guardar respuesta de sesion.php en variable
if(resultado=='true')
{
//location.href=esto.href; // si pagina sesion.php imprime true es que tiene sesion, por lo tanto iremos al enlace del link
//return false;
return resultado;//esto fue lo que cambie
}
else if(resultado
{
//var error=document.getElementById('error');
//error.innerHTML='Se te acabo la sesion :('; // añadimos codigo a la capa error
//error.style.display='block'; // mostramos la capa, ya que esta oculta
//return false;
return resultado;//esto fue lo que cambie
}
}
}
ajax.open("GET","sesion.php",true);
ajax.send(null);
}


en la pagina tengo esto
<script>
function invocar()
{
resultadoA = abc();
alert(resultadoA);

}
</script>

html
<input type="button" name="ver" onclick="invocar()">

el problema es que abc me regresa indefinido
que debo hacer o que se esta haciendo mal

saludos espero sus comentarios amigos

ZiTAL 28/05/2008 14:18

Respuesta: verficar sesion de php al oprimir un href
 
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("Your browser does not support AJAX!");return false; }
  }}}

function abc()
 {
        var ajax = new ajaxFunction();
        ajax.onreadystatechange=function()
        {
                if(ajax.readyState==4)
                {
                        return ajax.responseText;
                }
        }
        ajax.open("GET","sesion.php",true);
        ajax.send(null);
 }
 
function invocar()
 {
        var resultadoA = abc();
        alert(resultadoA);
 }

Procura poner el codigo entre [*CODE*] y [*/CODE*] (sin asteriscos) ya que sino la gente ni siquiera leera el codigo (me incluyo).

Prueba con esto

chalchis 28/05/2008 18:10

Respuesta: verficar sesion de php al oprimir un href
 
gracias ZiTAL nuevamente voy probarlo y te dire que paso de ante mano
gracias y tambien por tip de [*CODE*]

saludos

chalchis 28/05/2008 18:39

Respuesta: verficar sesion de php al oprimir un href
 
hola nuevamente he probado y me sigue marcando undefined en el alert
lo que estoy haciendo es que la funcion de ajax lo estoy insertando dentro de un js
Código:

<html>
<title>
<head>
<script type="text/javascript" src="http://sitio/directorio/Js/Verificar_sess/verificar.js"></script>
//---------
function invocar()
 {
        var resultadoA = abc();
        alert(resultadoA);
 }
</head>
<body>
<input type="button" name="ver" onclick="invocar()">
</body>
</html>


chalchis 28/05/2008 23:34

Respuesta: verficar sesion de php al oprimir un href
 
hola amigos he tratado de entender esto de ajax no soy un experto
pero por lo que he podido documentar es que debo tratar la funcion en
modo sincronico

osea asi

Código:

function abc()
 {
        var ajax = new ajaxFunction();       
        ajax.open("GET","int_verificar.php",false);
        ajax.send(null);
        return ajax.responseText;
 }

y efectivamente ya obtengo el valor en
Código:

function invocar()
 {
        var resultadoA = abc();
        alert(resultadoA);
 }

mi duda es realmente necesario hacer esto
ya que lei sobre esto

Método Open
El método open prepara una conexión HTTP a través del objeto XMLHttpRequest con un método y una URL especificados.

XMLHttpRequest.open ( sMetodo, sURL [, bSincronia [, sUsuario [, sPwd ] ] ] );

sMetodo es la cadena que nos indicara el tipo de conexión (GET o POST)
sURL es la url a la que realizamos la petición
bSincronia es un campo booleano con el que podemos utilizar modo asíncrono o síncrono, si lo fijamos en "false" modo síncrono perderiamos las mejores características de AJAX, los datos sUsuario y sPwd son opcionales y sólo aplicables en caso de caída del servidor.

eh aqui unas referencias a lo que comento

http://www.webmasterworld.com/javascript/3483187.htm

http://lists.evolt.org/pipermail/jav...er/011585.html

http://swik.net/Ajax/How+to+use+XMLHttpRequest

http://swik.net/Ajax/How+to+use+XMLHttpRequest


esperos sus comentarios amigos en especial de ZiTAL ya que el me ha ayudado
en este caso

saludos

ZiTAL 29/05/2008 01:25

Respuesta: verficar sesion de php al oprimir un href
 
efectiviwonder amigo, es eso, poner el parametro en false, ya que de lo contrario sigue ejecutando las lineas siguientes si lo pones en true, con false espera a que le llegue la respuesta y sigue con su funcion.

Me alegro de que lo hayas solucionado tu solo documentandote ;)

chalchis 29/05/2008 08:40

Respuesta: verficar sesion de php al oprimir un href
 
ok entonces no hay vuelta de hoja la funcion se que daria asi:

asi:

antes:
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("Your browser does not support AJAX!");return false; }
  }}}

function abc()
 {
        var ajax = new ajaxFunction();
        ajax.onreadystatechange=function()
        {
                if(ajax.readyState==4)
                {
                        return ajax.responseText;
                }
        }
        ajax.open("GET","sesion.php",true);
        ajax.send(null);
 }

nuevo
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("Your browser does not support AJAX!");return false; }
  }}}

//solo esto cambio
function abc()
 {
        var ajax = new ajaxFunction();       
        ajax.open("GET","int_verificar.php",false);
        ajax.send(null);
        return ajax.responseText;
 }

gracias zital nuevamente

saludos


La zona horaria es GMT -6. Ahora son las 03:04.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.