Foros del Web » Programando para Internet » PHP »

No me toma la SESSION EN AJAX+PHP

Estas en el tema de No me toma la SESSION EN AJAX+PHP en el foro de PHP en Foros del Web. Holas, estoy trabajando con ajax y php, tengo el archivo "personas.php" donde ahi llamo a "mostrar-personas.php" con un include en una div, paso por get ...
  #1 (permalink)  
Antiguo 23/02/2012, 17:48
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 10 meses
Puntos: 5
No me toma la SESSION EN AJAX+PHP

Holas, estoy trabajando con ajax y php, tengo el archivo "personas.php" donde ahi llamo a "mostrar-personas.php" con un include en una div, paso por get los valores a travez de ajax.

Bien, me encuentro con el problema de cuando voy pasando fotos asincronicamente, la variable $_SESSION['fid_username'] se llena, pero en la segunda y tercera pagina "asincronica"... no se llena y me salta el error:

Notice: Undefined variable: _SESSION in C:\wamp\www\mostrar-personas.php on line 5

Notice: Undefined variable: usuario_de in C:\wamp\www\mostrar-personas.php on line 47

Este error significa que la session esta indefiinida, o seria, inexistente ... pero en la primera impresion si me devuelve el valor que es:

1410854509

no puedo incluir session_start(); en el mostrar-personas.php porque me dice que ya llame la sesion en personas.php:

Les dejo el codigo php:

mostrar-personas.php
Código PHP:
Ver original
  1. <?php
  2.  include('conexion.php');
  3.  $RegistrosAMostrar=1;
  4.  
  5. echo $_SESSION['fid_username'];
  6.  
  7.  //estos valores los recibo por GET
  8.   if(isset($_GET['trebol'])){
  9.      $trebol = $_GET['trebol'];
  10.   }
  11.  
  12.  
  13.   if(isset($_GET['pag'])){
  14.   $RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
  15.   $PagAct=$_GET['pag'];
  16.   //caso contrario los iniciamos
  17.  }else{
  18.   $RegistrosAEmpezar=0;
  19.   $PagAct=1;
  20.  }
  21.  
  22.  
  23.   //******--------determinar las páginas---------******//
  24.  $NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM fotos",$db));
  25.  $PagAnt=$PagAct-1;
  26.  $PagSig=$PagAct+1;
  27.  $PagUlt=$NroRegistros/$RegistrosAMostrar;
  28.  
  29.  //verificamos residuo para ver si llevará decimales
  30.  $Res=$NroRegistros%$RegistrosAMostrar;
  31.  // si hay residuo usamos funcion floor para que me
  32.  // devuelva la parte entera, SIN REDONDEAR, y le sumamos
  33.  // una unidad para obtener la ultima pagina
  34.  if($Res>0) $PagUlt=floor($PagUlt)+1;
  35.  
  36.  
  37. $Resultado=mysql_query("SELECT fotos.id_foto as foto, usuarios.fid_usuario as fid_usuario, usuarios.nombre_usuario as nombre_usuario, fotos.link_foto as link_foto FROM fotos, usuarios WHERE usuarios.fid_usuario = fotos.pertenecea_foto AND usuarios.check_usuario = 1 ORDER BY fotos.id_foto DESC LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$db) or die(mysql_error());
  38.  
  39. if($PagAct==$PagUlt){ echo "No hay mas para mostrar";}else{
  40.  
  41.  while($MostrarFila=mysql_fetch_array($Resultado)){
  42.        
  43.         $Resultado_sobremi = mysql_query('SELECT texto_sobremi FROM sobremi WHERE quien_sobremi = "'.$MostrarFila["fid_usuario"].'" ORDER BY id_sobremi DESC',$db);
  44.        
  45.     //aca se realiza la votacion de la persona
  46.     if(isset($trebol)){
  47.     $q_interaccion = mysql_query('INSERT interaccion SET de_interaccion ="'.$usuario_de.'", a_interaccion = "'.$MostrarFila["fid_usuario"].'", valor_interaccion = "'.$trebol.'"',$db);
  48.     }
  49.  
  50.         echo '<a href="perfil.php?usuario='.$MostrarFila["fid_usuario"].'"><img src="uploads/'.$MostrarFila["link_foto"].'" /></a>
  51. <p class="texto-normal" style="word-wrap:break-word;">'.mysql_result($Resultado_sobremi, 0).'</p>';
  52.          
  53.  }
  54.  
  55.  //desplazamiento
  56.  
  57. echo "<center><table width='270px' border='0'>
  58.  <tr>
  59.    <td>";
  60.     if($PagAct<$PagUlt) echo "<a onclick=\"Pagina('$PagSig', '1')\"><img src='images/si.png' /></a>
  61.     <a onclick=\"Pagina('$PagSig', '2')\"><img src='images/capas.png' /></a>
  62.     <a onclick=\"Pagina('$PagSig', '3')\"><img src='images/nah.png' /></a></td>
  63.  </tr>
  64. </table></center></center><br><br>";
  65. }
  66.  
  67. ?>

Este es mi codigo AJAX:

ajaxpagsingle.js
Código Javascript:
Ver original
  1. function objetoAjax(){
  2.  var xmlhttp=false;
  3.   try{
  4.    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  5.   }catch(e){
  6.    try {
  7.     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8.    }catch(E){
  9.     xmlhttp = false;
  10.    }
  11.   }
  12.   if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  13.    xmlhttp = new XMLHttpRequest();
  14.   }
  15.   return xmlhttp;
  16. }
  17.  
  18. function Pagina(nropagina, trebol){
  19.  //donde se mostrará los registros
  20.  divContenido = document.getElementById('foto-persona');
  21.  
  22.  ajax=objetoAjax();
  23.  //uso del medoto GET
  24.  //indicamos el archivo que realizará el proceso de paginar
  25.  //junto con un valor que representa el nro de pagina
  26.  ajax.open("GET", "mostrar-personas.php?pag="+nropagina+"&trebol="+trebol);
  27.  divContenido.innerHTML= '<img src="anim.gif">';
  28.  ajax.onreadystatechange=function() {
  29.   if (ajax.readyState==4) {
  30.    //mostrar resultados en esta capa
  31.    divContenido.innerHTML = ajax.responseText
  32.   }
  33.  }
  34.  //como hacemos uso del metodo GET
  35.  //colocamos null ya que enviamos
  36.  //el valor por la url ?pag=nropagina
  37.  ajax.send(null)
  38. }

y aqui llamo a la funcion:

personas.php
Código HTML:
Ver original
  1. <div id="foto-persona" class="foto-persona">
  2.  
  3. <?php include('mostrar-personas.php');?>
  4.  
  5.        
  6. </div>

de nuevo, me muestra TODO, pero cuando quiero llenar paso la foto no me reconoce la session y con este inconveniente no puedo llenar la db en la parte donde necesito insertar en la tabla interaccion.
osea en la primera impresion si aparece, pero cuando paso la foto se borra la variable session

No se que puede ser!!
gracias de antemano!
__________________
Mi primera web: http://www.mascoteame.com
  #2 (permalink)  
Antiguo 23/02/2012, 18:34
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: No me toma la SESSION EN AJAX+PHP

recuerda que si no tienes sesiones automáticas (recomendado) debes de hacer una llamada a session_start(); al inicio de cada página, como veo que tienes un archivo conexion.php que me imagino que incluyes en todo, es buena idea colocarlo ahí
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 23/02/2012, 20:43
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: No me toma la SESSION EN AJAX+PHP

Bien, solucionado, pero ahora tengo otro problema, es al revez xD.

Ahora cuando abro personas.php me aparece Notice: A session had already been started - ignoring session_start() in C:\wamp\www\conexion.php on line 2 y cuando voy corriendo las paginas si me guarda la variable correctamente, :(
__________________
Mi primera web: http://www.mascoteame.com
  #4 (permalink)  
Antiguo 23/02/2012, 20:46
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: No me toma la SESSION EN AJAX+PHP

Ya lo solucioné de la siguiente manera, en conexion.php agregue session pero hise lo siguiente para que no me genere error:

Código PHP:
Ver original
  1. if(!isset($_SESSION['fid_username'])){
  2. }

Genial, muchas gracias maycolalvarez, estas cosas que pasan cuando quieres hacer cosas asincronicamente(?) jaja, saludos y gracias nuevamente.
__________________
Mi primera web: http://www.mascoteame.com

Etiquetas: ajax-php, html, mysql, registro, session, sql, tabla, toma, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:26.