Sesiones (basico)

Enviado por admin el Jue, 24/07/2003 - 01:48.
Clasificado en:
Uno de los temas clásicos es el trabajo con sesiones. Aquí va un rápido tutorial de como ocuparlas (en php 4.1 y superior).

Lo primero es iniciar la sesión con la función
  1.  <?php
  2.  session_start();
  3.  ?>

Esta función debe ir al inicio de cada página!

Después, simplemente se almacenan las variables necesarias en el array superglobal $_SESSION.
Por ejemplo, si se quiere almacenar el nombre de una persona a partir de un campo "nombre" en un formulario enviado por el método post, la cosa sería
  1.  <?php
  2.  $_SESSION["nombre"]=$_POST["nombre"];
  3.  ?>

Si en otra página se consulta por $_SESSION["nombre"], deberíamos obtener el nombre sin problemas.
Es bastante simple.
Para mayor información, busquen en el manual de php: CXI. Session Handling Functions
Si tienen problemas, agreguen un comentario y trato de ver que pasó

Actualización 1:
Una página con un muy buen tutorial: webestilo.com
Imagen de Paul

holas, recien empiezo en lo q es programacion en php y en mi trabajo me han dado un codigo y estoy estudiandolo, es sobre el acceso a una pagina, hay una parte q no entiendo es la sigte:
$_SESSION['usuario']=$usuario=$_REQUEST['usuario'];
si no es mucha molestia quisiera q me ayuden a descifrar esta parte del codigo, de antemano muchas gracias por su apoyo............Paul

Enviado por Paul (no verificado) el Vie, 12/12/2003 - 11:21.
Imagen de Claudex

No es difícil. Lo primero, es que el resultado de una asignación es el valor asignado :P
Por ejemplo, si pongo
echo ($a=5);
Esa expresión te dara 5
Entonces, si tienes algo como
$a=$b=$c=\"hola\";
Php, al igual que C, interpretará de izquierda a derecha, haciendo que $c=\"hola\", $b=$c (también \"hola\") y $a=$b (de nuevo \"hola\").
Entonces, tu expresión asigna el valor de $_REQUEST[\"usuario\"], o sea, el campo \"usuario\" de un formulario por método POST o GET a las variables $usuario y $_SESSION[\"usuario\"]. Esta última se mantendría a lo largo del resto de las páginas del sitio, si es que inicias sesión

Enviado por Claudex (no verificado) el Jue, 25/12/2003 - 16:02.
Imagen de nanda

Una ayuda para realizar pequeñas imágenes :)
gracias

Enviado por nanda el Lun, 09/05/2005 - 19:55.
Imagen de clbustos

Necesitas ayuda para realizar thumbnails en Php?
Por poner tu avatar, con gusto doy la explicación :)

Enviado por clbustos el Mar, 10/05/2005 - 02:43.
Imagen de nanda

nunca vi la explicación....
=(

Enviado por nanda el Vie, 16/12/2005 - 22:34.
Imagen de clbustos

Jajajja
Ok, el domingo

Enviado por clbustos el Vie, 16/12/2005 - 23:12.
Imagen de nanda

Gracias =)

Enviado por nanda el Sáb, 17/12/2005 - 20:12.
Imagen de julgon

Hola! Soy nuevito en esto del php (son jsp o asp) y estoy haciendo una página para comenzar a aprender esto.
Me sucede un inconveniente con sesiones. Tengo instalado un servidor apache, con mysql y php 5.1. Configuré el php.ini para que la sesion se habilitara automaticamente y depositara los archivos en /tmp.
Cuando se ingresa al sitio se crea, efectivamente, el archivo en /tmp.
Luego pido el user y el pass y, a través de remote scripting, envío esa información al servidor, donde una función verifica los datos y si estos están correctos, entonces crea las variables de sesión:

$_SESSION["user"] = $usr;
$_SESSION["level"] = $level;

etc.

Al volver de esa funcion y de la llamada al remote scripting, redirijo la página (con javascript en el cliente) a una página que debe mostrar el menú dinámico según el usuario.

Pero en está página intento rescatar las varibles de la sesión y no me retorna nada. Es más, con isset me dice que no están creadas. Mas el archivo de /tmp sí tiene los valores que se registran en la función.

Ahora, bien... si la tarea que hago en la función la hago en una página php sin función alguna, entonces tambíen graba los datos en el archivo de /tmp y, además, puedo rescatar las variables.

La pregunta es ¿si _SESSION es una global, por qué no puedo rescatar las variables en otra página? Es más, he probado, dentro de la función, asignar los valores de las variables de sesión y rescatarlas en el renglón siguiente, dentro de la fución, y tampoco lo rescata, pero sí quedan en el archivo de /tmp.

No entiendo nada. Podrás darme alguna pista.

Enviado por julgon el Jue, 09/02/2006 - 16:37.
Imagen de clbustos

Al volver de esa funcion y de la llamada al remote scripting, redirijo la página (con javascript en el cliente) a una página que debe mostrar el menú dinámico según el usuario.

Aclárame lo de la redirección: ¿cargas la nueva página con rs? ¿o haces un href.location? La primera no funcionaría, la segunda sí.

Enviado por clbustos el Vie, 10/02/2006 - 01:58.
Imagen de julgon

Al volver de tomar los datos del usuario de la base de datos, los verifico con js en el cliente. Si todo esta bien, vuelvo a ejecutar remote scripting, llamando a una funcion que simplemente da de alta las variables con los datos del usuario en la variable _SESSION y retorna al cliente, y con js hago un location.replace("menu.php").

menu.php es quien no ve los datos guardados en _SESSION.

Ahora... si no utilizo la funcion para guardar los datos en _SESSION, es dicir que paso los datos por post y los asigno en menu.php antes de hacer nada, entonces sí quedan en la sesion.

Lo extraño de todo esto es que el archivo donde php guarda los datos de las variables creadas en _SESSION, registra las variables de la sesion cuando utilizo la funcion.

Gracias por contestar.

Enviado por julgon el Vie, 10/02/2006 - 09:34.
Imagen de clbustos

Interesante problema.... aunque encuentro que te complicas la vida más de la cuenta.
Aparte del problema técnico (que voy a investigar), te diría que sólo usaras rs para verificar que el user y password son correctos, tras lo cual puedes lanzar el submit con post. ¿Por qué? De otra manera, inutilizas el sitio para cualquier que tenga js desactivado o que ocupe interfaces de texto; en general, se debería usar rs sólo para funciones que no pudiesen ser realizadas o fuesen muy costosas de otra manera.

Enviado por clbustos el Vie, 10/02/2006 - 12:24.
Imagen de Perejilillo desconocido

hola he creado un sitio, es decir una intranet y me he encontrado cn dos problemas una es que cambien la tabla de usuarios dentro de mi base de MySQL y ahora los usuarios tengo que darlos de alta cada vez que alguien quiere accesar a l sitio de otra manero no ingresan, lo extraño es que algunos usuarios si respeta sus login's y password's, y el otro problema que tengo es que necesito crear mostrar unos telefonos para los usuarios, estos telefonos los tengo en una base de datos, pero la cuestion que que en teoria cada operador deberia tomar un telefono diferente para visualizar en pantalla, sin embargo cuando los usuarios habren este formulario a muchos les musetra en mismo registro... la pregunta es como puedo hacer para que a cada uno les muestre un registro diferente en su formulario es decir que dos usuarios no puedan tener el mismo registro, esto lo digo por que la base ded datos es la misma para todos y cargo alrededor de 20875 registros telefonicos.

<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
$updateSQL = sprintf("UPDATE base_telefono SET STATUS_LLAMADA=%s WHERE Id=%s",
GetSQLValueString($_POST['S'], "int"),
GetSQLValueString($_POST['clave'], "int"));

mysql_select_db($database_cpssateliteconexdb, $cpssateliteconexdb);
$Result1 = mysql_query($updateSQL, $cpssateliteconexdb) or die(mysql_error());

$updateGoTo = "NUMEROTEL.php";
if (isset($_SERVER['QUERY_STRING'])) {
$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $updateGoTo));
}

mysql_select_db($database_cpssateliteconexdb, $cpssateliteconexdb);
$query_telefono = "SELECT Id, TEL_DOM, TEL_OF, NOMBRE_COMPLETO, STATUS_LLAMADA, cita, IDAge FROM base_telefono WHERE STATUS_LLAMADA = 0";
$telefono = mysql_query($query_telefono, $cpssateliteconexdb) or die(mysql_error());
$row_telefono = mysql_fetch_assoc($telefono);
$totalRows_telefono = mysql_num_rows($telefono);
?>

anexo el anexo el codigo para que vean la captura de telefonos
si alguien me pudiera ayudar se los agradeceria mucho.

Enviado por Perejilillo desconocido el Jue, 18/10/2007 - 20:03.
Imagen de clbustos

Me puedes explicar en palabras la lógica que tienes para seleccionar el o los teléfonos a mostrar?

Enviado por clbustos el Jue, 18/10/2007 - 22:30.
Imagen de Perejilillo desconocido

bueno la cosa es que utilizo un juego de registros que selecciona los telefonos que unicamente tengan el estatus 0(es decir no ocupado) y este juego de registros es el que alimenta mis etiqueta, muestra el numero de telefono, y el nombre de la persona la idea es que cuendo habren el formulario el juego de registros seleccine solo un registro y si lo hace el problema es que muchas veces dos usuarios tienen el mismo registro al mismo tiempo y eso no deberioa ser asi, estamos hablando de 82 usuarios. te agradeceria mucho si me pudieras ayudar

Enviado por Perejilillo desconocido (no verificado) el Lun, 05/11/2007 - 16:18.
Imagen de clbustos

No entiendo mucho la lógica de tu código, pero lo que queda claro es que pides todos los usuarios que tienen '0' en llamada, no uno solo.

Enviado por clbustos el Lun, 05/11/2007 - 17:10.
Imagen de Perejilillo desconocido

SI EN RALIDAD PIDO A TODOS LOS USUARIOS QUE TENGAN 0 Y EN EL FORMULARIOS SOLO MUESTRO UN REGISTRO.
SIN EMBARGO QUIERO QUE ESE REGISTRO SOLO SE MUESTRE UNO POR USUARIO PARA QUE NO SE REPITAN EN MAS DE UNA MAQUINA, ESO ES LO QUE NO SE CMO HACER.

Enviado por Perejilillo desconocido (no verificado) el Mié, 07/11/2007 - 17:51.
Imagen de Eliel

hola te mando un saludo tengo una pregunta para ti , lo que pasa es que manejo una sesion en mi sitio para que puedan ingresar mis usuarios (estos estan dados de alta en una base de datos) al sitio ,y estos pueden dar de alta registros en un formulario y asignar actividades y todo se guardan en una base de datos pero no el usuario que las da de alta ,y queria saber como le puedo hacer para que este usurio quede registrado a la hora de te da alta una actividad y los registros, se olvidaba mencionarte a la hora de ingresa el usuario a la pagina principal aparece su nombre en la parte de arriba ,pero empeze a tratar de utilizar un campo hidden para hacer esta accion , pero no es posible de hacer o mas bien no se como hacer esto .

<?php
$_SESSION["nombre"]; es como lo estoy manejando
?>

Espero me puedas orientar como resolver este problema .

Saludos

Enviado por Eliel (no verificado) el Mié, 02/07/2008 - 17:47.
Imagen de Carlos Corti

Hola a todos ...

Estoy haciendo una pagina sencilla para almacenar datos en mysql pero estoy haciendo los formularios por dreamweaver cs3...

Resulta que ya hice la conexion y hasta en las propiedades del formulario me sale <?php echo $editFormAction; ?>...

Pero resulta que no me almacena nada en la base de datos....kien me ayude se lo agradeceria...

Enviado por Carlos Corti (no verificado) el Jue, 09/07/2009 - 12:36.

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
If you have a Gravatar account, used to display your avatar.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato