FAQ
Hola a todos.


Estoy haciendo una web con PHP, MySQL en la que he metido varias
consultas AJAX para que la web sea un poco más fluida...

La validación de usuarios funciona correctamente y se generan unas
variables $_SESSION que puedo leer sin problemas desde las páginas
normales.

El problema está en las llamadas a páginas usando AJAX ya que esas
variables no están, me explico un poco mejor con un ejemplo...


Tengo una página en la que salen los avisos para el usuario y si se pica
en un icono ese aviso por medio de ajax se borra haciendo una llamada a
un php nuevo:

dominio.com/borrar_aviso.ajax.php

(también desaparece el div que contenía el aviso)

Por post envío el idaviso para que se haga la consulta sql y se borre
esa fila.

En la cabecera de ese ajax tengo algo como esto para prevenir que se
llame directamente a esa página:

if ( $_SERVER["HTTP_X_REQUESTED_WITH"] != "XMLHttpRequest" ) {
echo "Error, no se permite el acceso a este archivo.";
die();
}

Las peticiones ajax llevan este tipo de headers especial para permitir
diferenciarlas de las páginas que abre el navegador normales.

El problema es que si pongo:

echo "usuario=" . $_SESSION["username"] . "\n<br/>";

debajo de esa cabecera la variable de sesión esta vacía y no puedo
comprobar si realmente es ese usuario el propietario del aviso.


He estado mirando el resto de las cabeceras que se envían y creo que la
solución pasa por usar PHPSESSID, pero el problema es que tendría que
enviar el SESSID por post y tampoco veo muy claro como sacar a partir de
él la variable SESSION que necesito.

Otra forma sería almacenar las sesiones en una tabla MySQL y pasar el
uniqid de sesion con la consulta POST.

Se me ocurre también comprobar el "Referrer" pero no se hasta que nivel
puede ser inseguro.

Todo funciona correctamente pero me preocupa el tema de la seguridad.

¿me estoy complicando yo solo?

¿alguna idea?

Gracias anticipadas....

PD.- Para AJAX uso prototype pero no uso ninguna clase especial de PHP.

Search Discussions

  • Mariano Guezuraga at Dec 6, 2006 at 2:28 pm

    El problema está en las llamadas a páginas usando AJAX ya que esas
    variables no están, me explico un poco mejor con un ejemplo...

    Mario: En cada página que utilices sesiones,tenes que hacer session_start()
    antes para que las variables estén disponibles. También tenes que tener
    cuidado si utilizas un nombre de sesion, ya que tendrías que hacer
    session_name('nombre'); antes del session_start(). Creo que eso puede ser,
    porque me pasó algo parecido (pero sin AJAX).

    Suerte.
  • Mariodebian at Dec 6, 2006 at 3:34 pm

    El mié, 06-12-2006 a las 11:27 -0300, Mariano Guezuraga escribió:

    El problema está en las llamadas a páginas usando AJAX ya que esas
    variables no están, me explico un poco mejor con un ejemplo...

    Mario: En cada página que utilices sesiones,tenes que hacer session_start()
    antes para que las variables estén disponibles. También tenes que tener
    cuidado si utilizas un nombre de sesion, ya que tendrías que hacer
    session_name('nombre'); antes del session_start(). Creo que eso puede ser,
    porque me pasó algo parecido (pero sin AJAX).

    Suerte.

    Gracias a los dos...

    Exactamente era eso, me había olvidado del sesion_start(), como el resto
    de la web descansa en el index y va cargando php's no lo había tenido en
    cuenta.

    Muchas gracias....

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedDec 6, '06 at 1:10p
activeDec 6, '06 at 3:34p
posts3
users2
websitephp.net

2 users in discussion

Mariodebian: 2 posts Mariano Guezuraga: 1 post

People

Translate

site design / logo © 2022 Grokbase