Foros del Web » Programando para Internet » PHP »

$_SESSION and session.auto_start no funcionan

Estas en el tema de $_SESSION and session.auto_start no funcionan en el foro de PHP en Foros del Web. Estoy usando PHP 5 en un servidor apache 2.0 en un sistema Windows XP. El problema es que cuando utilizo $_SESSION para pasar variables de ...
  #1 (permalink)  
Antiguo 07/04/2005, 15:32
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años
Puntos: 0
Exclamación $_SESSION and session.auto_start no funcionan

Estoy usando PHP 5 en un servidor apache 2.0 en un sistema Windows XP. El problema es que cuando utilizo $_SESSION para pasar variables de una página a otra, los datos no se muestran.

El archivo .ini en la sección de SESSION contiene un path para session.save_path de "C:\Temp", es decir ;session.save_path = "C:\Temp".

En verdad no se donde pueda estar el problema y no puedo construir desde aplicaciones sencillas utilizando $_SESSION hasta aplicaciones más complejas como sistemas para autentificar usuarios.

Un ejemplo de lo que no pasa es:

page1.php-------------------------------------------------------


Código PHP:
<?php// Esta pagina debería almacenar esta variable: "Hello world!" y pasarla a page2.php 
session_start();

$_SESSION['sess_var'] = "Hello world!";

echo 
'The content of $_SESSION[\'sess_var\'] is '
.$_SESSION['sess_var'].'<br />';
?>
<a href="page2.php">Next page</a>

page2.php-------------------------------------------------------


Código PHP:
<?php// Por alguna razón los datos no se pasan a la page2 y Hello World! no se despliega en el navegador.

session_start();

echo 
'The content of $_SESSION[\'sess_var\'] is '
.$_SESSION['sess_var'].'<br />';

unset(
$_SESSION['sess_var']);
?>
<a href="page3.php">Next page</a>
RESULTADO EN EL NAVEGADOR:

En teoría como se mencionaba tanto page1.php somo page2.php deberían mostrar:

The content of $_SESSION['sess_var'] is Hello world!
Next page

Pero page2.php solo muestra:

The content of $_SESSION['sess_var'] is (AQUI NO SE PASARON LOS DATOS)
Next page

Ojalá tengan una respuesta,

Gracias
  #2 (permalink)  
Antiguo 07/04/2005, 15:54
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Revisa cómo estás pasando el SID. Y si es por cookies, asegúrate de que tu navegador tiene habilitadas las cookies para tu sitio.
Saludos
  #3 (permalink)  
Antiguo 07/04/2005, 15:58
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años, 1 mes
Puntos: 0
Esa no es la manera de registrar variables de sesión, para registrar variables de sesión lo tienes que hacer así para la página 1:

<?php// Esta pagina debería almacenar esta variable: "Hello world!" y pasarla a page2.php
session_start();

$GLOBALS['sess_var'] = "Hello world!";
session_register("sess_var");
echo 'The content of $_SESSION[\'sess_var\'] is '
.$_SESSION['sess_var'].'<br />';
?>
<a href="page2.php">Next page</a>

harías una implementación similar para el caso de la página 2, es todo, espero que te sirva.
  #4 (permalink)  
Antiguo 07/04/2005, 16:07
 
Fecha de Ingreso: mayo-2004
Ubicación: Oaxaca
Mensajes: 34
Antigüedad: 19 años, 11 meses
Puntos: 0
ME temo que tu error no es de codigo si no mas bien de configuracion del PHP, debes de buscar en tu archivo .ini de php las lineas siguientes y ponerles el valor de 1:

; Whether to use cookies.
session.use_cookies = 1

; Initialize session on request startup.
session.auto_start = 1

y asegurarte que tu navegador tiene habilitadas las cookies, que esto por default lo debe de estar.

------------------

Otra forma es propagar el SID por medio de la url esto lo lograrias de la sigueinte forma:

; Whether to use cookies.
session.use_cookies = 0

; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
; to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
; in publically accessible computer.
; - User may access your site with the same session ID
; always using URL stored in browser's history or bookmarks.
session.use_trans_sid = 1

-------------

o poniendolo manualmente en cada link (tedioso)

-----------

despues de esto reinicia apache y listo te debe de funcioanr el codigo.

  #5 (permalink)  
Antiguo 07/04/2005, 16:22
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Cita:
Iniciado por Gabriel0702
Esa no es la manera de registrar variables de sesión, para registrar variables de sesión lo tienes que hacer así para la página 1:

<?php// Esta pagina debería almacenar esta variable: "Hello world!" y pasarla a page2.php
session_start();

$GLOBALS['sess_var'] = "Hello world!";
session_register("sess_var");
echo 'The content of $_SESSION[\'sess_var\'] is '
.$_SESSION['sess_var'].'<br />';
?>
<a href="page2.php">Next page</a>

harías una implementación similar para el caso de la página 2, es todo, espero que te sirva.
Gabriel0702:
Tal vez te puedas dar una vuelta por la documentación oficial de PHP. Si ves en el manual, ahí recomiendan no mezclar el uso de funciones como session_register() con el superglobal $_SESSION.
Además ya no es necesario (hasta se desaconseja) el uso de session_register(). El tema otra vez pasa por el estado de la directiva register globals. Si utilizas session_register() sólo funcionará con register globals en ON (cosa que no es nada recomendable).
La forma correcta de hacerlo ahora es la misma que ya pusieron antes. Un ejemplo sencillo es contar cuántas veces se ha recargado una página:
Código PHP:
<?php
session_start
();
if(!isset(
$_SESSION['contador'])){
   
$_SESSION['contador'] = 0;
}
echo 
"Esta página ha sido recargada ".($_SESSION['contador']++)." veces<br /><br />";
echo 
"<a href=\"".$_SERVER['PHP_SELF']."\">recargar</a>";
?>
Como verás, el session_register() no aparece por ningún lado.
Saludos

Última edición por jpinedo; 07/04/2005 a las 16:26
  #6 (permalink)  
Antiguo 07/04/2005, 16:44
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Perdón... el enlace al manual donde pueden leer más al respecto:
En la documentación de la misma función session_register():
http://www.php.net/session_register

Saludos
  #7 (permalink)  
Antiguo 07/04/2005, 16:45
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años, 1 mes
Puntos: 0
Ah, ok jpinedo, tienes razón, eso es por cuestiones de seguridad supongo, bueno, entonces disculpen que haya hecho esa aseveración sin consulta previa...
  #8 (permalink)  
Antiguo 07/04/2005, 17:03
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Bueno... eñ tema del register_globals no es sólo de seguridad, sino también de compatibilidad frente a otras configuraciones.
saludos
  #9 (permalink)  
Antiguo 07/04/2005, 17:15
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años
Puntos: 0
Se solucionó en un 80% pero....

En efecto el problema era del archivo .ini, por lo que opté por el segundo método propuesto por cuija ya que el primero tiene la desventaja de que si activo session.auto_start = 1 no puedo usar objetos como variables de sesión. Me da gusto saber que de 8 foros en los que pedí ayuda, 1 (este) era en español y fue el único en donde obtuve una solución satisfactoria. Mil Gracias

Un segundo problema que tengo es que estoy creando un sistema de administración de contenido, con una aplicación para ratificar usuarios y aunque los problemas relacionados con SESSION de mis otros scripts se resolvieron, este, aún no.

El problema radica en que cuando escribo el usuario y el password correctos no me redirige a la página correcta sino que se queda ahí, tan sólo desaparecen los datos y se queda el formulario. En cambio cuando meto algún dato incorrecto si me muestra el error.

A continuación puse todo el código y la estructura de la base de datos, también les puede servir para sus aplicaciones ya que es un ejemplo de un libro y según yo el código está bien, tal vez el problema es otra vez con el ini.

Espero puedan ayudarme, este es el código:

index.php---------------------------------------------------

Esta página es la portada para administrar el sitio de noticias.

Código PHP:
<html>
<
head>
<
title>Admin Menu</title>
</
head>
<
body>
<
h1>Admin Menu</h1>
<
ul>
  <
li>Writers - <a href 'writer.php'>Add/Edit stories</a></li>
  <
li>Editors - <a href 'publish.php'>Publish/Unpublish stories</a></li>
</
ul>
</
body>
</
html
writer.php---------------------------------------------------

Esta pagina permite editar las noticias.

Código PHP:
<?php
  
// writer.php Is the Interface for Writers to Manage Their Stories


  
include_once('include_fns.php');

  if (!
check_auth_user()) 
  {
    
login_form();
  }
  else 
  {
      
$username $_POST['username'];
    
$password $_POST['password'];
    
$handle db_connect();

    
$writer get_writer_record($_SESSION['auth_user']);

    echo 
'<p>Welcome, '.$writer['full_name'];
    echo 
' (<a href="logout.php">Logout</a>) (<a href="index.php">Menu</a>) (<a href="../">Public Site</a>) </p>';
    echo 
'<p>';

    
$query 'select * from stories where writer = \''.
           
$_SESSION['auth_user'].'\' order by created desc';
    
$result $handle->query($query);

    echo 
'Your stories: ';
    echo 
$result->num_rows;
    echo 
' (<a href="story.php">Add new</a>)';
    echo 
'</p><br /><br />';
    
    if (
$result->num_rows
    {
      echo 
'<table>';
      echo 
'<tr><th>Headline</th><th>Page</th>';
      echo 
'<th>Created</th><th>Last modified</th></tr>';
      while (
$stories $result->fetch_assoc()) 
      {
        echo 
'<tr><td>';
        echo 
$stories['headline'];
        echo 
'</td><td>';
        echo 
$stories['page'];
        echo 
'</td><td>';
        echo 
date('M d, H:i'$stories['created']);
        echo 
'</td><td>';
        echo 
date('M d, H:i'$stories['modified']);
        echo 
'</td><td>';
        if (
$stories['published'])
        {
          echo 
'[Published '.date('M d, H:i'$stories['published']).']';
        }
        else 
        {
          echo 
'[<a href="story.php?story='.$stories['id'].'">edit</a>] ';
          echo 
'[<a href="delete_story.php?story='.$stories['id'].'">delete</a>] ';
        }
        echo 
'[<a href="keywords.php?story='.$stories['id'].'">keywords</a>]';
        echo 
'</td></tr>';
      }
      echo 
'</table>';
    }
  }
?>
publish.php---------------------------------------------------

Esta pagina permite publicar noticias.

Código PHP:
<?php
  
include_once('include_fns.php');

  if (!
check_auth_user()) 
  {
    
login_form();
  }
  else 
  {
    
$handle db_connect();

    
$writer get_writer_record($_SESSION['auth_user']);

    echo 
'<p>Welcome, '.$writer['full_name'];
    echo 
' (<a href="logout.php">Logout</a>) (<a href="index.php">Menu</a>) (<a href="../">Public Site</a>) </p>';
    
    
$query "select * from stories s, writer_permissions wp
              where wp.writer = '{$_SESSION['auth_user']}' and
                    s.page = wp.page
              order by modified desc"
;
    
$result $handle->query($query);

    echo 
'<h1>Editor admin</h1>';

    echo 
'<table>';
    echo 
'<tr><th>Headline</th><th>Last modified</th></tr>';
    while (
$story $result->fetch_assoc()) 
    {
      echo 
'<tr><td>';
      echo 
$story['headline'];
      echo 
'</td><td>';
      echo 
date('M d, H:i'$story['modified']);
      echo 
'</td><td>';
      if (
$story[published]) 
      {
        echo 
'[<a href="unpublish_story.php?story='.$story['id'].'">unpublish</a>] ';
      }
      else 
      {
        echo 
'[<a href="publish_story.php?story='.$story['id'].'">publish</a>] ';
        echo 
'[<a href="delete_story.php?story='.$story['id'].'">delete</a>] ';
      }
      echo 
'[<a href="story.php?story='.$story['id'].'">edit</a>] ';

      echo 
'</td></tr>';
    }
    echo 
'</table>';
  }
?>
include_fns.php ---------------------------------------------------

Esta pagina llama a algunas funciones que permiten 1) conectarme con la base de datos y 2) autentificar usuarios (puede que ahí este el problema) sino esta en el .ini

Código PHP:
<?php
  
// All the include files for admin pages in the site
  
include_once('../db_fns.php');
  include_once(
'user_auth_fns.php');
  
session_start();
?>
db_fns.php ---------------------------------------------------

Esta pagina contiene la función para conectarse a la base de datos.

Código PHP:
<?php

function db_connect()
{
   
$handle = new mysqli('localhost''content''password''content'); 
   if (!
$handle)
   {
     return 
false;
   }
   return 
$handle;
}

function 
get_writer_record($username)
{
  
$handle db_connect();
  
$query "select * from writers where username = '$username'";
  
$result $handle->query($query);
  return(
$result->fetch_assoc());
}

function 
get_story_record($story)
{
  
$handle db_connect();
  
$query "select * from stories where id = '$story'";
  
$result $handle->query($query);
  return(
$result->fetch_assoc());
}

function 
query_select($name$query$default='')
{
  
$handle db_connect();

  
$result $handle->query($query);

  if (!
$result)
  {
    return(
'');
  }

  
$select  "<select name='$name'>";
  
$select .= '<option value=""';
  if(
$default == ''$select .= ' selected ';
  
$select .= '>-- Choose --</option>';

  for (
$i=0$i $result->num_rows$i++) 
  {
    
$option $result->fetch_array();
    
$select .= "<option value='{$option[0]}'";
    if (
$option[0] == $default
    {
      
$select .= ' selected';
    }
    
$select .=  ">[{$option[0]}] {$option[1]}</option>";
  }
  
$select .= "</select>\n";

  return(
$select);
}

?>
Esta página contiene las funciones para autentificar a los usuarios.

user_auth_fns.php ------------------------------------------------

Código PHP:
<?php
  
function login($username$password)
  
// check username and password with db
  // if yes, return true
  // else return false
  
{
    
// connect to db
    
$handle db_connect();
    if (!
$handle)
      return 
0;

    
$result $handle->query("select * from writers
                              where username='$username' and
                                password = SHA1('$password')"
);
    if (!
$result)
    {
      return 
0;
    }
    if (
$result->num_rows>0)
    {
      return 
1;
    }
    else 
    {
      return 
0;
    }
  }

  function 
check_auth_user()
  
// see if somebody is logged in and notify them if not
  
{
    global 
$_SESSION;
    if (isset(
$_SESSION['auth_user']))
    {
      return 
true;
    }
    else
    {
      return 
false;
    }
  }

  


  function 
login_form()
  {
    
?>
    <form action='login.php' method='POST'>
    <table border=0>
    <tr>
      <td>Username</td>
      <td><input size='16' name='username'></td>
    </tr>
    <tr>
      <td>Password</td>
      <td><input size='16' type='password' name='password'></td>
    </tr>
    </table>
    <input type='submit' value='Log in'>
    </form>
    <?php
  
}

  function 
check_permission($username$story)
  
// check user has permission to act on this story 
  
{
    
// connect to db
    
$handle db_connect();
    if (!
$handle)
      return 
0;

    if(!
$_SESSION['auth_user'])
      return 
0;

    
$result $handle->query("select * from writer_permissions wp, stories s
                              where wp.writer = '{$_SESSION['auth_user']}' and
                                  wp.page = s.page and
                                  s.id = $story
                              "
);
    if (!
$result)
    {
      return 
0;
    }
    if (
$result->num_rows>0)
    {
      return 
1;
    }
    else 
    {
      return 
0;
    }
  }
?>
login.php ------------------------------------------------

Esta página corre el script para accesar al CMS.´

Código PHP:
<?php
  
include_once('include_fns.php');

  if ( (!isset(
$_REQUEST['username'])) || (!isset($_REQUEST['password'])) ) 
  {
    echo 
'You must enter your username and password to proceed';
    exit;
  }

  
$username $_REQUEST['username'];
  
$password $_REQUEST['password'];

  if (
login($username$password)) 
  {
    
$_SESSION['auth_user'] = $username;
    
header('Location: '.$_SERVER['HTTP_REFERER']);
  }
  else 
  {
    echo 
'The password you entered is incorrect';
    exit;
  }
?>
Espero sirva de algo, gracias.
  #10 (permalink)  
Antiguo 07/04/2005, 17:17
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años
Puntos: 0
El código de la base de datos MySQL es...

-----------La base de datos se llama content y el código para crearla es:

Código PHP:
DROP DATABASE IF EXISTS content;

CREATE DATABASE content;

USE 
content;

DROP table IF EXISTS writers;

CREATE table writers (
  
username    varchar(16PRIMARY KEY,
  
password    char(40NOT NULL,
  
full_name   text
);

DROP table IF EXISTS stories;

CREATE table stories (
  
id          int PRIMARY KEY auto_increment,
  
writer      varchar(16NOT NULL,            # FOREIGN KEY writers.username
  
page        varchar(16NOT NULL,            # FOREIGN KEY pages.code
  
headline    text,
  
story_text  text,
  
picture     text,
  
created     int,
  
modified    int,
  
published   int
);

DROP table IF EXISTS pages;

CREATE table pages (
  
code        varchar(16PRIMARY KEY,
  
description text
);

DROP table IF EXISTS writer_permissions;

CREATE table writer_permissions (
  
writer      varchar(16NOT NULL,            # FOREIGN KEY writers.username
  
page        varchar(16NOT NULL             # FOREIGN KEY pages.code
);

DROP table IF EXISTS keywords;

CREATE table keywords (
  
story       int NOT NULL,                    # FOREIGN KEY stories.id
  
keyword     varchar(32NOT NULL,
  
weight      int NOT NULL
);

GRANT selectinsertupdatedelete
ON content
.*
TO localhost identified by 'sombra';

insert into writers (usernamepasswordfull_name)
             
values ('bob'SHA1('password'), 'Robert Bobbins');

insert into writers (usernamepasswordfull_name)
             
values ('bill'SHA1('password'), 'William Billings');


insert into pages (codedescription)
           
values ('news''The Top News Stories From Around the World');

insert into pages (codedescription)
           
values ('sport''Sports Latest - All The Winners and Losers');

insert into pages (codedescription)
           
values ('weather''Up To The Minute Weather Reports and Forecasts');


insert into writer_permissions (writerpagevalues ('bob''news');
insert into writer_permissions (writerpagevalues ('bob''sport');

insert into writer_permissions (writerpagevalues ('bill''news');
insert into writer_permissions (writerpagevalues ('bill''weather');


insert into stories 
    
(idwriterpageheadlinecreatedmodifiedpublished,
     
story_textpicture)
values (1'bill''news''Man gives birth'976573221976580154976570230,
   
'A man today gave birth in a hospital on Staten Island, NY.  The baby boy weighed in at just over eight pounds and is doing well.  The parents were naturally overjoyed at the birth of their first son, and have have said they hope to have a large family.  <br /><br />Father Ted, 34, conceived using a new method known as paternatility whereby the fertilised embryo is transferred to the father\'s body at an early stage.  It is believed that this method reduces many of the risks of childbirth.''images/1.jpg');

insert into stories 
    
(idwriterpageheadlinecreatedmodifiedpublished,
     
story_textpicture)
values (2'bill''news''Fire!'976562355976572203976570230,
    
'Breaking news:  Reports are coming in of a fire in a barn somewhere in Arizona.  Our sources say the barn is very likely to burn to the ground and will not be economically viable to repair.<br /><br />A bystander is reputed to have said "There was quite a lot of smoke"''images/2.jpg');

insert into stories 
    
(idwriterpageheadlinecreatedmodifiedpublished,
     
story_textpicture)
values (3'bill''news''SFON Launch Party report'976542355976542503976555650,
    
'Yesterday has already gone down in history as the day the best news site on the web first hit the Internet.  Just to prove the point, there was a star-studded party last night at a secret location in Seattle.<br /><br />Joining our team for a boogie were several A-list celebs who wish to remain anonymous.''images/3.jpg');

insert into stories 
    
(idwriterpageheadlinecreatedmodifiedpublished,
     
story_textpicture)
values (4'bob''sport''World Crossword Championship Preview'976531355976532503976533320,
    
'It\'s now just three days to the start of the prestigious annual World Crossword Championship to be held this year for the first time live on the Internet.  The new media format will allow many more competitors than ever before to take part from the comfort of their own home, or from one of 126 regional centers.<br /><br />Last year\' champion is not keen on the new format.  She said "Crosswords should be done on paper, not online".''images/4.jpg');

insert into stories 
    
(idwriterpageheadlinecreatedmodifiedpublished,
     
story_textpicture)
values (5'bob''sport''Basketball is bad for you'976542355976542503976555650,
    
'Scientists believe that basketball can be bad for you.  Research has suggested that both watching and playing the game can have detrimental effects on your health.  The scientific evidence supporting this claim is currently being verified by our expert team and we will bring you updates as soon as we can.<br /><br />An NBA spokesperson said "That is complete rubbish".''images/5.jpg');

insert into stories 
    
(idwriterpageheadlinecreatedmodifiedpublished,
     
story_textpicture)
values (6'bill''weather''Storms to come'976542355976542503,
976555650'It never rains but it pours.  When the rain comes in November there\'s gonna be a storm.<br /><br /> Meterologists predict rain, thunder, lightening and all the usual displeasures that you get during a period of inclement weather.  No word on a hurricane yet, but don\'t be surprised if we get one!''images/6.jpg');

insert into stories 
    
(idwriterpageheadlinecreatedmodifiedpublished,
     
story_textpicture)
values (7'bill''weather''Sun is shining, weather is sweet'976451129976458734976458754,
    
'The forecast for this weekend is good, with long spells of sunshine predicted in most areas.  The high temperature will be 96F and no rain is expected until November'''); 
  #11 (permalink)  
Antiguo 07/04/2005, 17:20
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... Bienvenido a el foro y que bueno que estés contento (en principio ) con él... dejame darte unos consejos:
1) Un post por cada tema...
2) Ayudanos a ayudarte.. solo pon el código implicado en tu problema ... lo más breve posible.. es difícil estar checando tantas cosas.. paso.

Suerte! ... e incisto.. bienvenido!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #12 (permalink)  
Antiguo 07/04/2005, 18:10
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años
Puntos: 0
Gracias

Gracias por la bienvenida, en apariencia es tedioso todo el código, sin embargo se encuentra todavía relacionado con el problema anterior ($_SESSION). Por otro lado, es útil para las personas que se interesen en tener un script ya completado.

Si te das cuenta el problema es muy concreto y se relaciona con el login, sin embargo añadí el resto del código (que por supuesto no es todo) por que es complemento a la solución del problema. Si no hubiera puesto el código, eventualmente tendría que hacerlo ya que la gente que se interesaría en ayudarme requiriría más información sobre el problema.

Mi interés es únicamente encontrar la solución y que esta quede como presedente para ayudar a otros, y si de paso esto implica también el que se queden con un código ya armado para aplicaciones prácticas, pues que mejor.

Finalmente, yo se que no todos tienen ni el tiempo ni el interés o tal vez el conocimiento para leerlo, tal vez para algunos sea un reto y se puedan retroalimentar al ayudarme. Pero bueno, es una apuesta, espero que alguien pueda ayudarme, como yo espero poder resolver los problemas de algunas personas aunque sean complejos, si cada quien pone su granito de arena poco a poco esta comunidad ira creciendo con bases más sólidas.

Gracias, una vez más, por la bienvenida. Y como recomendación, si no trasciende en este post, creo que si tendré que poner uno nuevo.
  #13 (permalink)  
Antiguo 07/04/2005, 18:49
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Se supone que el problema debe estar en que no se reconoce la variable HTTP_REFERER del array $_SERVER.
Para ver si la autentificación se hace correctamente, prueba dando alguna salida al navegador:
En login.php:
Código PHP:
  if (login($username$password)) 
  { 
    
$_SESSION['auth_user'] = $username
    
//Aquí cambiamos la linea para saber si la redirección es correcta.
    
die('Location: '.$_SERVER['HTTP_REFERER']); 
  } 
  else 
  { 
    echo 
'The password you entered is incorrect'
    exit; 
  } 
Prueba y dinos si se imprime la dirección correctamente.
Si no, puedes buscar en este mismo foro (PHP) por "http_referer" y encontrarás varios posts respecto a la confiabilidad en la obtención de esa variable.
saludos
  #14 (permalink)  
Antiguo 07/04/2005, 19:25
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años
Puntos: 0
Resultado del script....

El script corregido imprime el url literalmente en el navegador, es decir:

Location: http://localhost/........../publish.php

o en cuyo caso, dependiendo de la opción elegida:

Location: http://localhost/........../writer.php

pero no me muestra el contenido del CMS para poder editar o publicar las noticias.

En verdad gracias por el seguimiento, ojalá aún haya esperanza de corregir el error, también voy a intentar referirme a la sección dentro del foro que me recomendaron.

Saludos

Última edición por raml; 07/04/2005 a las 19:33
  #15 (permalink)  
Antiguo 07/04/2005, 20:33
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Si se imprime correctamente la url, entonces no hay problema con la variable HTTP_REFERER.
Puedes entonces volver a dejarlo como estaba.
Te recomiendo que en la primera línea del script pogas:
Código PHP:
error_reporting(E_ALL); 
Eso para asegurarnos de que el parser está mostrando todos los errores.

Además mira enla barra de direcciones si se muestra la dirección correctamente.
También prueba a poner directamente esa url (http://localhost/........../writer.php) en el navegador.

Saludos
  #16 (permalink)  
Antiguo 08/04/2005, 08:31
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años
Puntos: 0
La historia sin fin....

El problema es que writer.php contiene una función para autentificar usuarios que pide usuario y contraseña y que es procesada a través del script de login.php; entonces cuando pongo el usuario y contraseña correctos, aunque si se queda en writer.php no muestra el contenido que debería de mostrar y tan sólo se queda en el formulario de usuario y contraseña. Esto sucede aunque pegue tal cual el url correcto.

En pocas palabras, el script si se conecta con la base de datos y autentifica a los usuarios, pero una vez que hace esto no muestra el contenido de la página a los usuarios autorizados.

Comienzo a pensar que o el error esta exactamente en el script que al autentificarme me permite ver el contenido de la página o en el .ini con alguna de las opciones de configuración, tal y como me pasaba en la pegunta anterior.

Si es en el script el error debe de estar en estas funciones de la página user_auth_fns.php previamente citada más arriba o en login.php. Si es en el .ini pienso que debe de estar en la configuración del módulo session, pero no tengo la menor idea.

Gracias una vez más
  #17 (permalink)  
Antiguo 09/04/2005, 12:00
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Sinembargo yo creo que el problema está en writer.php... porque si dices que la autentificación es correcta...
pon el código de writer.php

Saludos
  #18 (permalink)  
Antiguo 09/04/2005, 15:08
 
Fecha de Ingreso: abril-2005
Mensajes: 50
Antigüedad: 19 años
Puntos: 0
Código de writer.php

Este es el código de writer.php------------------------------------

Nota: aún así todo el código necesario, incluyendo writer.php, lo puse previamente en la pagina 1 de este post.

Gracias

Código PHP:
<?php
  
// writer.php Is the Interface for Writers to Manage Their Stories


  
include_once('include_fns.php');

  if (!
check_auth_user()) 
  {
    
login_form();
  }
  else 
  {
      
$username $_POST['username'];
    
$password $_POST['password'];
    
$handle db_connect();

    
$writer get_writer_record($_SESSION['auth_user']);

    echo 
'<p>Welcome, '.$writer['full_name'];
    echo 
' (<a href="logout.php">Logout</a>) (<a href="index.php">Menu</a>) (<a href="../">Public Site</a>) </p>';
    echo 
'<p>';

    
$query 'select * from stories where writer = \''.
           
$_SESSION['auth_user'].'\' order by created desc';
    
$result $handle->query($query);

    echo 
'Your stories: ';
    echo 
$result->num_rows;
    echo 
' (<a href="story.php">Add new</a>)';
    echo 
'</p><br /><br />';
    
    if (
$result->num_rows
    {
      echo 
'<table>';
      echo 
'<tr><th>Headline</th><th>Page</th>';
      echo 
'<th>Created</th><th>Last modified</th></tr>';
      while (
$stories $result->fetch_assoc()) 
      {
        echo 
'<tr><td>';
        echo 
$stories['headline'];
        echo 
'</td><td>';
        echo 
$stories['page'];
        echo 
'</td><td>';
        echo 
date('M d, H:i'$stories['created']);
        echo 
'</td><td>';
        echo 
date('M d, H:i'$stories['modified']);
        echo 
'</td><td>';
        if (
$stories['published'])
        {
          echo 
'[Published '.date('M d, H:i'$stories['published']).']';
        }
        else 
        {
          echo 
'[<a href="story.php?story='.$stories['id'].'">edit</a>] ';
          echo 
'[<a href="delete_story.php?story='.$stories['id'].'">delete</a>] ';
        }
        echo 
'[<a href="keywords.php?story='.$stories['id'].'">keywords</a>]';
        echo 
'</td></tr>';
      }
      echo 
'</table>';
    }
  }
?>
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 02:31.