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
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
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
Lo primero es iniciar la sesión con la función
- session_start();
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
- $_SESSION["nombre"]=$_POST["nombre"];
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
- 8651 lecturas

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
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
Una ayuda para realizar pequeñas imágenes :)
gracias
Necesitas ayuda para realizar thumbnails en Php?
Por poner tu avatar, con gusto doy la explicación :)
nunca vi la explicación....
=(
Jajajja
Ok, el domingo
Gracias =)
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.
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í.
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.
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.
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.
Me puedes explicar en palabras la lógica que tienes para seleccionar el o los teléfonos a mostrar?
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
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.
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.
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
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...
Enviar un comentario nuevo