Lo prometido es deuda.
Tal como anunciamos en el pasado tutorial “Como hacer una autentificación de usuario en PHP”, hoy traemos esta segunda parte en la que haremos un sistema de autentificación más evolucionado, el cual además de ser multiusuario, incluye otras medidas de seguridad como manejo de sesiones, lo cual nos permitirá restringir el acceso a usuarios que obtengan la URL directa y de esta forma nadie podrá ingresar a nuestra página sin ingresar el nombre de usuario y contraseña correcto en el formulario.
Más información después del salto.
Como es habitual, vamos primero con lo que necesitamos para realizar esto:
El funcionamiento de este sistema es bastante simple y en algo parecido al anterior. Básicamente tendremos 3 archivos que definirán el ingreso de los usuarios:
1.- Un archivo HTML que contenga un formulario de ingreso, tal como el que hicimos en el tutorial anterior.
2.- Un archivo PHP que, recibidos los datos del formulario, se conectará a la base de datos y corroborará que los datos existan y que estos sean correctos.
3.- Y finalmente otro archivo PHP que redirigirá a los usuarios dependiendo del resultado de la consulta hecha en el nº 2. Si están bien los datos los llevará a la página que queramos mostrar, y de lo contrario, mostrará un mensaje de error y los llevará de vuelta a la página del nº 1.
Con todo listo, manos a la obra:
1.- Lo primero es tener una página HTML que contenga un formulario, tal como lo hicimos en el tutorial anterior. Al igual que en el formulario anterior, el “Action” de nuestro formulario dirigirá a “ingreso.php“.
A continuación, definiremos una tabla en la base de datos la cual almacenará los datos correspondientes a todos los usuarios autorizados a entrar a nuestra página. Para definir esta tabla e ingresar algunos datos de prueba, lo más recomendable es usar un sistema que todos los servicios de hosting ofrecen y que también es obtenido haciendo una instalación local (mediante el uso de algún software como XAMPP), que es phpMyAdmin. Este programa nos permite trabajar directamente sobre la base de datos, dandonos entre otras funcionalidades, la posibilidad de mantener datos, agregar usuarios y ver la estructura actual de nuestra BD.
Interfaz de phpMyAdmin
Interfaz de creación de tablas
Modo de consultas SQL
Brevemente puedo decir que phpMyAdmin trabaja de 2 formas sobre la base de datos: Una mediante el interfaz gráfico el cual ofrece un modo bastante amigable para la creación y mantención de las estructuras y los datos. El otro es mediante consultas SQL, el cual si tienen el conocimiento del lenguaje es recomendable utilizar.
2.- Una vez adentro de PHPMyAdmin, crearemos una base de datos con el nombre que Uds. quieran y luego una tabla llamada “usuario” y dentro de ella definiremos los siguientes campos:
Usuario=> Varchar (10)
Clave => Varchar (10)
Nombre => Varchar (40)
Interfaz de configuración de campos
Además definiremos como “clave primaria” de la tabla al campo “usuario”
Marcando esto en el campo correspondiente lo definimos como “Clave Primaria”
¿Qué es una clave primaria?
Una clave primaria es un atributo que sirve como identificador de la tabla, el cual permite individualizar cada registro de los otros existentes. Una clave primaria debe ser única, no nula, completa y cumplir el principio de minimalidad (el menor número de campos posibles y que estos sean lo más simples que se puedan). Para este caso usar el campo “usuario” es lo apropiado ya que en cada sistema no puede, o mejor dicho no debe, haber más de un individuo con el mismo nombre de usuario.
3.- Con nuestra tabla definida, procederemos a ingresar datos a la tabla, al igual que el paso anterior, esto se puede hacer mediante interfaz o por una consulta SQL. Ingresaremos estos datos:
Usuario => demo
Clave => demo
Nombre => Usuario de prueba
Para ingresar los datos mediante interfaz, debemos marcar la tabla y hacer click al botón “Examinar” que esta justo al lado y luego arriba al que dice “Insertar”.
Botón Insertar
Con esto tenemos un usuario ingresado en nuestra base de datos y podremos hacer uso de ese registro para probar nuestro sistema.
4.- A continuación construiremos la página en PHP que validará los datos recogidos a través del formulario:
Para esto, crearemos una página PHP en Dreamweaver, la cual guardaremos como “ingreso.php” e insertaremos el siguiente código antes de la etiqueta <HTML>:
<?
session_start();$_SESSION[“user”]=$_POST[‘usuario’];
$_SESSION[“pass”]=$_POST[‘clave’];
$_SESSION[“falla”]=0;?>
<meta http-equiv=”refresh” content=”3; url=ingreso2.php” />
La explicación del código es la siguiente:
<?: Marca el inicio de un código ejecutable PHP.
session_start();: Se inicia una sesión para el usuario que está ingresando a nuestra página.
$_SESSION[“user”]=$_POST[‘usuario’];: Lo que hacemos aquí es tomar el valor “usuario” enviado desde el formulario (lo recogemos en el vector $_POST, el cual almacena todos los valores enviados por URL desde un formulario) y se lo asigna al valor “user” en el vector $_SESSION, el cual se encarga de almacenar variables que podrán ser accedidas desde cualquier página mientras la sesión exista o el usuario se mantenga en la página.
$_SESSION[“pass”]=$_POST[‘clave’];: Lo mismo que el caso anterior pero con los valores correspondientes.
$_SESSION[“falla”]=0;: Creamos una variable llamada “falla” dentro del vector de sesión, la cual usaremos como bandera que marcará cualquier error que se produzca durante el proceso de validación. Le asignamos un valor 0, pero en verdad podemos darle el valor que queramos, ya que la verificación final con esta variable la haremos mediante una comparación con su valor original.
?>: Cerramos el código ejecutable PHP
<meta http-equiv=”refresh” content=”3; url=ingreso2.php” />: Esta etiqueta lo que hará es redireccionar la página actual (“ingreso.php”) a la página “ingreso2.php” cuando transcurran 3 segundos. (El valor del parametro content, que pueden modificar según deseen).
Antes de seguir:
¿Qué es una sesión?
Cada vez que un usuario en particular visita una página de nuestra propiedad, nuestro servidor le asigna una sesión unica, la cual se encarga de individualizar a cada usuario sobre otro que pueda estar viendo nuestro sitio, ya sea al mismo momento o durante cualquier otro. La individualización se realiza mediante la asignación de “identificadores de sesión”, los cuales son generados al azar y basandose en diferentes parametros para cada caso, por lo que la probabilidad de que una identificación de sesión de 2 usuarios distintos se repita es altamente improbable si no imposible. Esto es bastante similar al funcionamiento de las “cookies”, a diferencia que es un método mucho más seguro, ya que en el caso de las cookies, si un navegador las tiene desactivadas se imposibilita el reconocimiento del usuario, mientras que el método de las sesiones corre para todos por igual.
PHP, así como otros lenguajes dinámicos para páginas (como JSP, ASP, etc), nos otorga la posibilidad de trabajar con un vector de sesión llamado $_SESSION, el cual se adjunta al identificador ya asignado por el servidor. En este vector nosotros podemos definir un número interminable de variables, a las cuales podremos acceder desde cualquier página de nuestro sitio, sin la necesidad de pasar las variables por URL (los casos de POST y GET que veíamos en el tutorial anterior). Para poder hacer uso del vector de sesión es necesario usar la sentencia session_start(); al inicio de cada página PHP que lo requiera.
Pueden obtener más información sobre sesiones en PHP, aquí.
5.- Continuando con el código que insertaremos en nuestra página “ingreso.php”, ahora pondremos esto luego de la etiqueta <BODY>:
(Las explicaciones del codigo van entremedio marcadas en negrita, cursiva y con un /* y */)
<?
$user=$_POST[‘usuario’];
$pass=$_POST[‘clave’];/* Asignamos a las variables $user y $pass los valores “usuario” y “clave” recogidos de nuestro formulario de ingreso de la página HTML. */
if(empty($user))
{
echo “No ha ingresado un nombre de usuario. <br> Sera redirigido de vuelta.”;
$_SESSION[“falla”]=1;
}/* Utilizaremos la función empty de PHP mediante la cual preguntaremos si nuestra variable $user (la que contiene el valor de usuario del formulario) se encuentra vacia, lo que significaría que el usuario no ingreso nada en el campo. Si este fuera el caso, desplegaríamos un mensaje en la página con “echo” y luego cambiariamos el valor de nuestra variable “falla” (la bandera definida en el vector de sesión) a 1. En caso de que el usuario no este vacío, pasamos al else y revisamos lo demás */
else
{
if(empty($pass))
{
echo “No ha ingresado una clave. <br> Sera redirigido de vuelta.”;
$_SESSION[“falla”]=1;
}/* Haremos la misma comprobación anterior pero en este caso con la variable $pass (que almacena el valor de clave del formulario). En caso de que no este vacía, pasamos al else */
else
{
$con=mysql_connect(“host”,”user”,”password”);/* Declaramos una variable llamada $con a la que le almacenaremos el resultado de la función mysql_connect, la cual se encarga de establecer una conexión entre nuestra página PHP y nuestra base de datos MySQL para poder realizar las consultas que necesitamos para validar los datos. Esta función utiliza 3 parametros y devuelve un resultado de tipo entero (int):
Host: La dirección del servidor donde tenemos alojada nuestra base de datos. Comúnmente este valor debiera ser localhost (en caso de que esta página la ejecutemos en el mismo servidor donde esta alojada la BD), si no, es un dato que su proveedor de hosting debería darles.
User: El usuario con el que ingresan a la BD. Tambien otorgado por su proveedor de hosting.
Password: Contraseña para ingresar a la BD. Lo mismo que el caso anterior. */
mysql_select_db(“database”,$con);
/* Llamamos a la función mysql_select_db la cual nos ayudará a seleccionar nuestra base de datos (la cual esta dentro de la base de datos) y que requiere de 2 parametros:
Database: Nombre de nuestra base de datos. (La que creamos al principio).
Identificador de conexión: El cual le otorga los datos de conexión a la función, en nuestro caso la variable $con. */
$sql=”SELECT usuario, clave, nombre FROM usuario WHERE usuario=’$user'”;/* Definimos una variable $sql , la cual guardará la consulta que haremos en la base de datos. En este caso, pediremos seleccionar el usuario, la clave y el nombre correspondientes al registro del usuario que se ingresó mediante el formulario */
$resultado=mysql_query($sql,$con);/* Definimos una variable llamada $resultado en la cual almacenaremos, valga la redundancia, el resultado de la ejecución de nuestra consulta mediante la función mysql_query, la cual requiere de 2 parametros: la consulta recien definida, y el identificador de conexión que definimos anteriormente. */
if(!$resultado)
{
$error=mysql_error();
print $error;
$_SESSION[“falla”]=1;
exit();
}/* Luego preguntamos mediante un if si no hubo resultado a la ejecución de la consulta y almacenamos en la variable $error la falla otorgada por la base de datos para presentarla en la página mediante la sentencia print (que es similar a “echo”) y cambiamos el valor de la variable “falla” de nuestro vector de sesión. Finalmente hacemos uso de la función exit(); para que nuestro código termine de ejecutarse aquí y no sigan corriendo las líneas siguientes. Este paso puede obviarse ya que a los usuarios no es necesario enseñarles el error que nos da la base de datos, yo decidí incluirlo para que uds. puedan probar e informarse de las distintas razones por las que puede haber una falla en este proceso. */
if(mysql_affected_rows()==0)
{
echo “El usuario no fue encontrado. <br> Sera redirigido de vuelta.”;
$_SESSION[“falla”]=1;
exit();
}/* Luego mediante otro if , hacemos un llamado a la función mysql_affected_rows() la cual se encarga de notificar si es que la consulta no afecto a ninguna fila de nuestra tabla (o sea, no hubo coincidencias), esta función retorna un entero, que es 0 en caso de no haber filas afectadas. En caso de que así sea desplegamos un mensaje informando que el usuario no fue encontrado mediante la sentencia “echo”, cambiamos el valor de la variable falla del vector de sesión y finalmente salimos del código mediante la función exit();. Si el resultado de la función no es cero, significa que hubo coincidencias y pasamos al else */
else
{
$row=mysql_fetch_array($resultado);/* Definimos una variable $row y a esta le asignamos el resultado de la función mysql_fetch_array, la que utiliza como parametro $resultado (el resultado de la consulta ejecutada). Este paso es necesario, ya que cuando hacemos una consulta sobre una tabla de una base de datos, en caso de haber coincidencia, estos datos no están disponibles para que nosotros los podamos manipular, si no que se seleccionan de forma “virtual”. Normalmente las bases de datos definen cursores, los cuales al hacer un fetch, extraen los datos y nos permiten manipularlos de una forma más “fisica” por decirlo de alguna forma. En este caso, la variable $row se transformará en un vector, con posiciones de nombre igual a cada uno de los campos de la fila, los cuales podremos comparar. */
$nombre=$row[‘nombre’];/* Definimos una variable $nombre y a este le asignamos el valor de la posición “nombre” del vector $row, o sea, el campo nombre extraído de la coincidencia de la tabla usuario */
if($user==$row[‘usuario’])
{
if($pass==$row[‘clave’])
{
echo “<b>Bienvenido $nombre</b>. <br> Espere mientras es redirigido”;
$_SESSION[“nombre”]=$nombre;}
else
{
echo “Hay un error en la clave. <br> Espere mientras es redirigido”;
$_SESSION[“falla”]=1;
}
}
else
{
echo “Hay un error en el nombre de usuario. <br> Espere mientras es redirigido”;$_SESSION[“falla”]=1;
}/* Y Finalmente mediante una serie de if y else, comparamos los valores recibidos por el formulario (almacenados en las variables $user y $pass) con los extraídos de la fila de la tabla de la base de datos (almacenados en el vector $row). En caso de coincidir el nombre de usuario y la contraseña, desplegamos un mensaje dandole la bienvenida al usuario con una sentencia echo (al usar el mensaje con la variable $nombre, dejamos definido un mensaje que cambiará dependiendo del nombre de cada usuario que entre) y le informaremos que será redirigido, para finalmente registrar en el vector de sesión el nombre del usuario, en caso de que necesitemos usarlo más adelante. De lo contrario mostraremos los correspondientes mensajes de error y marcaremos la variable falla para más adelante. */
}
}
}?>
Y con eso terminamos nuestra página de validación. A continuación haremos una página PHP llamada “ingreso2.php”, la cual se encargará de redirigir adecuadamente al usuario dependiendo del resultado de la validación de datos.
6.- Creamos nuestra página PHP e insertamos el siguiente código antes de la etiqueta <HTML>:
La explicación del código entremedio, en negritas, cursiva y entre /* */:
<?
session_start();/* Iniciamos sesión dentro de esta página también mediante la función session_start(); */
if($_SESSION[“falla”]==0)
{$_SESSION[“autorizacion”]=”si”;
header(“Location: pagina-de-destino.php”);
}
/* Lo primero que hacemos es preguntar si la variable “falla” del vector de sesión tiene valor igual a 0. Si esto es así significa que paso todo el proceso de validación sin errores, ya que en la página anterior ante cualquier problema le asignamos otro valor. En caso de que sea así, hacemos una redirección por PHP mediante “header” y dentro de Location ponemos la página de destino donde llegaran los usuarios autorizados. Además definimos una variable llamada “autorización” y le asignamos el valor “si”. Este variable nos permitirá hacer un manejo de sesiones en cualquiera de las páginas que sigan preguntando simplemente si esta activado el valor si, y de esa forma mostrar el contenido autorizado */
else
{
unset($_SESSION[“falla”]);session_destroy();
header(“Location: pagina-de-formulario.html”);
}
?>/* En caso de que no sea igual a cero el valor, significa que hubo un problema de validación y por lo tanto el usuario no esta autorizado. Por lo que borramos la variable falla del vector de sesión mediante la funcion “unset”, y luego destruimos la sesión del usuario mediante la función session_destroy();, para que así ningun valor de la sesión quede almacenado en caso de futuros ingresos. Finalmente redirigirmos mediante header a la página inicial de ingreso de formulario. */
Mediante ingreso2.php redirigiremos al usuario dependiendo del resultado de validación de datos, lo cual nos permitirá restringir el acceso a quienes no tengan los datos correctos que tengamos almacenados en nuestra base de datos. A continuación veremos brevemente como hacer un manejo de sesión para nuestras páginas que proseguirán este proceso.
La importancia de un manejo de sesión radica en que, a pesar de hacer una validación extensiva de datos, si no hay un manejo apropiado de las sesiones, cualquier usuario que obtenga la URL final de una forma u otra (la correspondiente a las páginas que vendrán despues del ingreso de datos), podrán ver el contenido, independiente del nombre de usuario y contraseña que hayan ingresado. Este es un proceso bastante simple de hacer, ya que solo requiere de una sentencia if.
7.- En nuestra página de destino (la que viene después del proceso de validación) solo necesitamos insertar el siguiente código después de la etiqueta <BODY>:
<?
if($_SESSION[“autorizacion”]==”si”)
{
?>
y aquí desplegamos el contenido para los usuarios autorizados. Una vez que terminemos de desplegar el contenido, al final de eso abrimos código nuevamente:
<?
}
else
{
echo “Usted no esta autorizado para ver este contenido. Por favor” ?> <a href=”pagina-de-formulario.html”><? echo “Identifiquese” ?></a>.
}
?>
Nota: En el caso del else, es necesario cerrar el codigo PHP antes de ingresar código HTML (como el <a href ), por eso cerramos y volvimos a abrir para seguir con el texto.
Este manejo de sesiones es bastante básico, pero aún así efectivo. Les recomiendo informarse más sobre el manejo de sesiones para establecer un grado máximo de seguridad en sus páginas y que nadie pueda burlar su sistema de autentificación y ver contenido al que no estan autorizados a ingresar.
Y con eso último terminaríamos nuestro sistema de autentificación multiusuario en PHP y MySQL. Tal como les digo, les recomiendo de a poco ir interiorizandose más con el tema de las sesiones y distintas opciones de seguridad que nos ofrece tanto PHP como otros lenguajes dinámicos, lo cual los ayudará a construir páginas cada vez más seguras.
Así que con eso estaríamos dando fin a este largo tutorial, el cual esperamos sea de su utilidad. Como siempre les recordamos dejar sus comentarios y especialmente dudas o problemas que puedan tener sobre el desarrollo de esto, las cuales serán respondidas a la brevedad. Hay algunos pasos bastante complejos, así que en caso de que algo les ocasione problemas, no duden en preguntarnos.
Espero que lo escrito aquí haya sido de su utilidad, y me despido, recordandoles que este tutorial ha sido desarrollado, documentado y probado personalmente por el equipo de Comolohago.cl, por lo que le adjuntamos nuestro sello de garantía.
Muchas gracias por leer y será hasta una próxima oportunidad.
Staff CLH
2:16:40 pm
que tal copie el codigo y me salio esto:
Sera redirigido de vuelta.”; $_SESSION[“falla”]=1; } else { if(empty($pass)) { echo “No ha ingresado una clave.
Sera redirigido de vuelta.”; $_SESSION[“falla”]=1; } else { $con=mysql_connect(”host”,”user”,”password”); mysql_select_db(”database”,$con); $sql=”SELECT usuario, clave, nombre FROM usuario WHERE usuario=’$user’”; $resultado=mysql_query($sql,$con); if(!$resultado) { $error=mysql_error(); print $error; $_SESSION[“falla”]=1; exit(); } if(mysql_affected_rows()==0) { echo “El usuario no fue encontrado.
Sera redirigido de vuelta.”; $_SESSION[“falla”]=1; exit(); } else { $row=mysql_fetch_array($resultado); $nombre=$row[‘nombre’]; if($user==$row[‘usuario’]) { if($pass==$row[‘clave’]) { echo “Bienvenido $nombre.
Espere mientras es redirigido”; $_SESSION[“nombre”]=$nombre; } else { echo “Hay un error en la clave.
Espere mientras es redirigido”; $_SESSION[“falla”]=1; } } else { echo “Hay un error en el nombre de usuario.
Espere mientras es redirigido”; $_SESSION[“falla”]=1; } }} }?>
quisiera saber si ustedes pueden poner algunos ejemplos de multiusuarios pero con mas de 2 usuarios.
gracias
2:22:56 pm
fijesen que estoy haciendo una pagina que trata de hacer un formulario que contenga (“usuario” y “password”) donde ingresen como mas de 10 personas al ingresar con su usuario y clave los tiene que mandar a una pagina para que ellos puedan acceder a ver su datos (“datos personales”, “estado de cuenta”, y “otros”) pero para eso tengo hacer una base de datos don el formulario me va a mandar, es una idea para ver si me pueden ayudar y si tienen algunos ejemplos editables.
gracias
8:50:11 pm
@Victor Padilla: Este ejemplo es multiusuario, pueden identificarse infinitos usuarios que esten ingresados en una BD sin problemas.
Sobre lo que quieres hacer, este ejemplo te sirve, solo debes redirigir en el código a la página donde crearás tu panel.
Saludos
10:48:38 am
que tal otravez, pero quisiera saber porque me sale esto,
Sera redirigido de vuelta.”; $_SESSION[“falla”]=1; } else { if(empty($pass)) { echo “No ha ingresado una clave.
Sera redirigido de vuelta.”; $_SESSION[“falla”]=1; } else { $con=mysql_connect(”host”,”user”,”password”); mysql_select_db(”database”,$con); $sql=”SELECT usuario, clave, nombre FROM usuario WHERE usuario=’$user’”; $resultado=mysql_query($sql,$con); if(!$resultado) { $error=mysql_error(); print $error; $_SESSION[“falla”]=1; exit(); } if(mysql_affected_rows()==0) { echo “El usuario no fue encontrado.
Sera redirigido de vuelta.”; $_SESSION[“falla”]=1; exit(); } else { $row=mysql_fetch_array($resultado); $nombre=$row[‘nombre’]; if($user==$row[‘usuario’]) { if($pass==$row[‘clave’]) { echo “Bienvenido $nombre.
Espere mientras es redirigido”; $_SESSION[“nombre”]=$nombre; } else { echo “Hay un error en la clave.
Espere mientras es redirigido”; $_SESSION[“falla”]=1; } } else { echo “Hay un error en el nombre de usuario.
Espere mientras es redirigido”; $_SESSION[“falla”]=1; } }} }?>
porque me imagino que es un error y quisiera saber donde esta el error del codigo.
gracias.
11:02:53 am
@Victor padilla: Si te aparece ese texto tal cual y textual, es que tu navegador no está interpretando el código. Asegurate que donde estás ejecutando los archivos tenga la capacidad de interpretar PHP.
Adicionalmente, en mysql_connect debes llenar con los datos de tu BD.
Saludos
4:56:30 pm
disculpa la molestia, otra pregunta:
cada usario tiene que ver los datos de ellos o datos diferentes verdad, y no van a poder ver los datos de los demas usuarios diferentes a la hora de entrar verdad.
6:21:07 pm
ya revise mi codigo y ahora me tira este error y alli se queda y no me dirige hacia ningun lado
Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at C:\AppServ\www\pruebas\multiusuarios\1\ingreso.php:1) in C:\AppServ\www\pruebas\multiusuarios\1\ingreso.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at C:\AppServ\www\pruebas\multiusuarios\1\ingreso.php:1) in C:\AppServ\www\pruebas\multiusuarios\1\ingreso.php on line 2
Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host ‘”localhost”’ (11004) in C:\AppServ\www\pruebas\multiusuarios\1\ingreso.php on line 35
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\pruebas\multiusuarios\1\ingreso.php on line 40
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\pruebas\multiusuarios\1\ingreso.php on line 46
Unknown MySQL server host ‘”localhost”’ (11004)
quisiera saber porque me tira este error lo estoy corriendo en un servidor loca (localhost) ????
8:45:14 pm
@Victor padilla: Sobre tus consultas:
1.- Es la idea. El manejo de sesiones se hace para que puedas rescatar solamente los datos correspondientes al usuario que ingresó.
2.- Son varios errores:
a) Los 2 primeros son por los headers (session_start y Location). Asegurate que estén en la primera línea del archivo.
b) Los 3 últimos dependen del mysql_connect. Los datos de conexión que le estás dando no son los correctos. Por ende no puede hacer la conexión, ni seleccionar la BD, ni ejecutar la consulta. No reconoce el host como ‘localhost’. Quizás es otro o tu BD no está corriendo. Chequea eso.
Cuéntanos como te fue.
Saludos
11:20:12 am
que tal otravez ya lo corregi pero ahora me tira estos errores:
ingreso.php
Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at C:\AppServ\www\pruebas\multiusuarios\1\ingreso.php:1) in C:\AppServ\www\pruebas\multiusuarios\1\ingreso.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at C:\AppServ\www\pruebas\multiusuarios\1\ingreso.php:1) in C:\AppServ\www\pruebas\multiusuarios\1\ingreso.php on line 2
Bienvenido prueba demo.
Espere mientras es redirigido
y en ingreso2.php me tira este
Parse error: syntax error, unexpected $end in C:\AppServ\www\pruebas\multiusuarios\1\ingreso2.php on line 35
porque ahora me tira esos errores.
11:26:40 am
este el codigo de ingreso.php
antes del html
<?php
session_start();
$_SESSION[“user”]=$_POST[‘usuario’];
$_SESSION[“pass”]=$_POST[‘clave’];
$_SESSION[“falla”]=0;
?>