Foros del Web » Programando para Internet » PHP »

iniciar seccion php

Estas en el tema de iniciar seccion php en el foro de PHP en Foros del Web. hola como puedo iniciar seccion es decir se ingresa el nombre de usuario y el password entonces podra tener acceso a las paginas.php esto funciona ...
  #1 (permalink)  
Antiguo 08/09/2007, 10:09
 
Fecha de Ingreso: septiembre-2007
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
iniciar seccion php

hola como puedo iniciar seccion

es decir se ingresa el nombre de usuario y el password entonces podra tener acceso a las paginas.php



esto funciona relacionado con la bse de datos + las cookies?

ya que verifica si los datos son validados con el nombre y el password en mysql
al ingresar las cookies recuerdan al que puso los datos por un tiempo de determinado.

como lo puedo hacer esto de una forma basica y sencilla, es solo para entender como funciona

mas adelante le pondre seguridad.

bueno eso, me ayudan? saludos
  #2 (permalink)  
Antiguo 08/09/2007, 10:36
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: iniciar seccion php

Básicamente seguiría los siguientes pasos:
- Si existe la cookie correspondiente, iniciar la sesión de usuario. Si no, mostrar el formulario de login.
- Formulario de login -> Comprobar user/pass en la base de datos.
- Si el user/pass son correctos, iniciar sesión de usuario y guardar la cookie.

Un saludo
  #3 (permalink)  
Antiguo 08/09/2007, 10:37
Avatar de grupopat  
Fecha de Ingreso: agosto-2007
Mensajes: 25
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: iniciar seccion php

lo puedes hacer por cookies, pero una forma mas sencilla es asi mira utiliza el metodo post para enviar el contenido de tu formulario, y en tu script que recibe los datos por el metodo pos algo asi:

en tu formulario de logeo un ejemplo como este:

<form action="valida.php" method="post" name="miform">
<p align="left">Usuario: </span>
<input name="login" type="text" id="usu10" maxlength="15">
</p>
<p align="left">Contraseña:
<input name="password" type="password" id="password" maxlength="10">
</p><p align="left">
<input name="enviar" type="submit" id="enviar" value="Enviar">
<input name="borrar" type="reset" id="borrar" value="Borrar">
</p><p align="center">&nbsp;</p>
</form>

En tu script "valida.php" algo como esto:
<?php
//Voy por el login y el password
$login = $_POST['login'];
$password = $_POST['password'];
include("conex.php"); //script de conexion
$link=Conectarse();
if(trim($HTTP_POST_VARS["login"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{
$result = mysql_query("SELECT password FROM usuarios WHERE nick='$login'",$link);
if($row = mysql_fetch_array($result))
{
if($row["password"] == $password)
{
?>
<SCRIPT LANGUAGE="javascript">
location.href = "trl_de_ingreso_a_usuarios_logeados";
</SCRIPT>
<?php
}
else
{
echo "Password incorrecto";
}
}
else
{
echo "Usuario no existente en la base de datos";
}
mysql_free_result($result);
}
else
{
echo "Debe especificar un nick y password";
}
?>


mi script de conexion es este mira "conex.php"
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","usuario","pass word")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("mi_bd",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
?>


espero y te ayude no estamos encriptando la contraseña al momento de ser enviada ni tampoco estamos asegurando el destino de ingreso, pero ya eso lo puedes hacer con el manejo de sesiones o con cookies.
  #4 (permalink)  
Antiguo 08/09/2007, 10:48
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Re: iniciar seccion php

Hola tazzmk.

Se dice, en todo caso, session, o, sesión (castellano neutral ).

Para iniciar una sesión, se usa session_start(), y, las sesiones funcionan conjuntamente con cookies. Es decir, si no están activadas las cookies, no puedes usar sesiones a menos que pases el SID (la identificación de la sesión; Session ID) por la URL.

La teoría es la siguiente.

Podrías incluir en cada una de tus páginas el formulario para hacer login, y, también, incluir en todas tus páginas un archivo que si se envía ese formulario, compruebe si usuario existe y si la contraseña de éste es igual a la almacenada en la base de datos (convendría cifrar las contraseñas con md5() o sha1()).

Una vez comprobados los datos, y si éstos son correctos, declarar algunas variables, como por ejemplo:
Código PHP:
<?php
$_SESSION
['identificado'] = true;
$_SESSION['uid'] = $consulta['id_usuario'];
$_SESSION['nombre'] = $consulta['nick'];
?>
Así podrías en las páginas que te hicieran falta (incluso en ciertas partes de una página) crear contenido para los usuarios unicamente, saludar a cada usuario por su nick y hacer operaciones en la base de datos con su ID de usuario.
Código PHP:
// contenido dependiendo del tipo de usuario
if($_SESSION['identificado']) {
// aquí el contenido para los usuarios registrados e identificados
} else {
// aquí el contenido para los usuario "visitantes"
}

// añadimos a la base de datos que el usuario a visto otra página
mysql_query("
UPDATE usuarios
SET paginasvistas=paginasvistas+1
WHERE id_usuario="
.$_SESSION['uid']."
LIMIT 1
"
);

// saludos al usuario
echo "Hola ".$_SESSION['nombre']; 
Cabe destacar que las variables de sesión ($_SESSION) solo hay que declararlas una única vez, y que, éstas serán destruidas al cerrar la sesión (ya sea cerrando el navegador o con session_destroy()).

La idea básica es esa.

Para cualquier duda mas aquí estamos.
  #5 (permalink)  
Antiguo 08/09/2007, 10:55
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Re: iniciar seccion php

Cita:
Iniciado por grupopat Ver Mensaje
?>
<SCRIPT LANGUAGE="javascript">
location.href = "trl_de_ingreso_a_usuarios_logeados";
</SCRIPT>
?>
Yo personalmente cambiaría ésto una redirección de la página de donde uno venía usando cabeceras (header()).
Código PHP:
header ("Location: ".$_SERVER['HTTP_REFERER']);
exit(); 
Así se podrá sar el formulario en cualquier página y que el usuario vuelva a donde estaba.
  #6 (permalink)  
Antiguo 13/09/2007, 15:57
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 17 años, 1 mes
Puntos: 3
Re: iniciar seccion php

Oye bonez... yo también ando con el mismo problema de tazz y no entiendo nada de lo que dijiste x_x

Tengo un formulario inicial donde inicio sesión:

Código PHP:
<?
    session_start
();
?>

<html>

<head>
<title>SAIDCOMS - Home</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
    <?php
        
// Verificación de las sesiones
        
if($_SESSION['ced'])
            echo 
"Cerrar Sesión";
        else
        {
    
?>
        <form name="form1" method="post" action="ident.php">
            Iniciar Sesi&oacute;n 
            <input name="ced" type="text" size="10" maxlength="8">
            <input type="submit" name="Submit" value="OK">
        </form>
    <?php ?>

    <p><a href="../HTM/academia.htm">Academia</a></p>
    <p><a href="../HTM/interes.htm">De Inter&eacute;s</a></p>
    <p><a href="../HTM/coments.htm">Comentarios</a></p>
    <p><a href="../HTM/ayuda.htm">Ayuda</a></p>
</body>

</html>
(no le prestes atención a los links, pues el sistema no está listo)

Cuando meto un número de cédula (la variable de sesión) voy a otro archivo para verificar la existencia del usuario y su nivel de acceso:

Código PHP:
<?
    session_start
();
?>

<html>
<head>
<title>Iniciar sesión</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
        <?php
                
// Conexión a la base de datos
                
$con mysql_connect("localhost","root","12345");
                if (!
$con)
                {
                    die(
'Could not connect: ' mysql_error());
                }
                else
                {
                    
// Selección de la base de datos
                    
mysql_select_db("database"$con);
                    
$result mysql_query("SELECT * FROM usuarios");
                    
$result1 mysql_query("SELECT * FROM fecha_inscripcion");

                    while(
$row mysql_fetch_array($result1))
                        
$fecha $row['fecha_i'];
        
                    
// Validar Fecha
                
                    // Fecha actual 
                    
$hoy strtotime(date("Y-m-d"));

                    
// Fecha en la base de datos
                    
$inicio strtotime($fecha);
                    
$inicio strtotime(date("Y-m-d",$inicio));

                    if(
$hoy >= $inicio)
                        
$valido 1;
                    else
                        
$valido 0;
                
                    
// Gestión de Usuarios
                    
while($row mysql_fetch_array($result))
                    if(
$row['cedula'] == $_POST["ced"])
                        
$tipo $row['nivel'];

                    
$_SESSION["ced"] = $_POST["ced"];
                    
                    
// Selección de Interfaz
                    
if($tipo == 3)
                        
// Si el usuario es operador (acceso en todo momento)
                        
echo "<div align=center>Ha iniciado sesión correctamente<BR>
                             Presione <a href='../CGI/main_oper.php?ced=$_SESSION[ced]'>AQUI</a> para continuar</div>\n"
;
                    else
                        if (
$valido)
                            if(
$tipo == 2// Acceso a partir de la fecha de inscripción
                                // Si el usuario es el Departamento
                                
echo "<div align=center>Ha iniciado sesión correctamente<BR>
                                     Presione <a href='../CGI/main_dpto.php'?ced=$_SESSION[ced]>AQUI</a> para continuar</div>"
;
                            else
                                if(
$tipo == 1)
                                    
// Si el usuario es estudiante
                                    
echo "<div align=center>Ha iniciado sesión correctamente<BR>
                                         Presione <a href='main_est.php?ced="
.$_SESSION[ced]."'>AQUI</a> para continuar</div>";
                                else
                                    
// Usuario no registrado
                                    
echo "<div align=center>El número de cédula " $_SESSION["ced"] . " no se encuentra registrado en el sistema<BR>
                                         <a href='../HTM/main.htm'>VOLVER</a></div>"
;
                        else
                            
// Fecha incorrecta
                            
echo "<div align=center>Disculpe. El sistema está bloqueado.<BR><a href='../HTM/main.htm'>VOLVER</a></div>";
                }
        
                
//Cierre de la base de datos
                
mysql_close($con);
        
?>
</body>
</html>
(Ok, muchos me criticarán por las funciones en mysql. Traté de hacerlas más reducidas pero no me funcionaron, así que ls dejo así)

Concentrémonos en el estudiante.

meto una cédula, se reconoce al usuario como estudiante (comprobándose que se loggea a partir de cierta fecha) y me dirige a una página principal para ese usuario. La página de prueba es esta:

Código PHP:
<?
    session_start
();
?>

<html>
<head>
<title>Inscripciones por Departamento</title>
</head>

<body>
<p align="center" class="style2 style3"><strong>BIENVENID@</strong></p>
          <p align="center" class="style4"><strong>Estudiante titular de la cédula [ <?php echo $_SESSION["ced"]; ?> ]</strong></p>
          <p align="center" class="style4"><strong>&Eacute;sta es una p&aacute;gina de Prueba (Prototipo) </strong></p>
          <p align="center" class="style4">&nbsp;</p>
          <p align="left" class="style4"><a href="../HTM/main.htm">Home</a></p>
          <p align="left" class="style4">Solicitudes:</p>
          <ul>
            <li><a href="agregar.php">Agregar</a></li>
            <li>Eliminar</li>
            <li>Solicitar Apelaci&oacute;n </li>
          </ul>
          <p align="left" class="style4">Status de Inscripci&oacute;n</p>
          <p align="left" class="style4"><a href="../HTM/ayuda.htm">Ayuda</a></p>
          <p align="left" class="style4"><a href="../HTM/endsesion.htm">Logout</a> </p>
</body>
</html>
Los "echo" los hice para verificar si la variable se está transfiriendo, pero no lo hace, pues no se imprime. Acaso tiene que ver con los cookies?

(disculpen por lo largo del post, esos fueron 3 ficheros completos x_x)
__________________
Mis dibujos: Click Aquí
  #7 (permalink)  
Antiguo 13/09/2007, 20:40
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 17 años, 1 mes
Puntos: 3
Re: iniciar seccion php

Otra cosa extraña que me comentó un amigo, es que cuando él comentó las operaciones MySQL del 2º fichero que les mostré en el post anterior, el sistema supuestamente funcionó. Acaso será algún conflicto con la BD? O con el navegador? O el problema está en php.ini? (aunque nunca modifiqué ese archivo x_x)

Help me plz
__________________
Mis dibujos: Click Aquí
  #8 (permalink)  
Antiguo 14/09/2007, 08:28
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 17 años, 1 mes
Puntos: 3
Re: iniciar seccion php

Ah! Lo olvidaba. también intenté colocando la función session_register() antes de la cabecera, pero igual no me funciona. Entonces, alguna otra opción?
__________________
Mis dibujos: Click Aquí
  #9 (permalink)  
Antiguo 16/09/2007, 09:41
Avatar de ghosthead-nebula  
Fecha de Ingreso: marzo-2007
Mensajes: 273
Antigüedad: 17 años, 1 mes
Puntos: 3
Re: iniciar seccion php

ya lo resolví. Es con el archivo php.ini


gracias por..... al menos prestarme atención u.u
__________________
Mis dibujos: Click Aquí
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 18:32.