Foros del Web » Programando para Internet » PHP »

loguearme con PHP

Estas en el tema de loguearme con PHP en el foro de PHP en Foros del Web. Buenas, soy nuevo en esto del PHP asi que intentare explicarme de la mejor forma para que me entendais... Estoy usando phpmyadmin para la base ...
  #1 (permalink)  
Antiguo 19/01/2012, 12:42
 
Fecha de Ingreso: diciembre-2010
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 0
loguearme con PHP

Buenas,

soy nuevo en esto del PHP asi que intentare explicarme de la mejor forma para que me entendais...

Estoy usando phpmyadmin para la base de datos, tengo una tabla que se llama usuarios, la cual la voy llenando con un formulario que tengo para registrarse en la pagina web.

En la cabecera de la pagina web tengo:

<ul class="limpiar">
<li>
<label for="nick">Nick:</label>
<input id="nick" name="nick" type="text" value="" />
<label for="password">Contraseña:</label>
<input id="password" name="password" type="password" value="" />
<input type="button" id="acceder" value="Acceder" />
</li>
<li><a href="formulario.php">Nuevo Usuario</a></li>
</ul>

Lo que quiero hacer es si el nick existe y corresponde con su contraseña que haga login y sustituya los label y textbox por el nick del usuario

Hay que usar tambien javascript?


Saludos y gracias adelantadas
  #2 (permalink)  
Antiguo 19/01/2012, 12:48
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 9 meses
Puntos: 67
Respuesta: loguearme con PHP

Si lo quieres sin recargar la hoja, si, necesitas javascript para hacer ajax, si no te importa recargar la hoja solamente con php.
__________________
Páginas web de alta calidad y hechas a la medida.
  #3 (permalink)  
Antiguo 19/01/2012, 13:12
 
Fecha de Ingreso: diciembre-2010
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: loguearme con PHP

que diferencias hay entre recargar la pagina o no?

He preguntado si se necesitaba javascript, pero lo que estoy pidiendo realmente es el codigo ya que no tengo ni idea de como hacerlo.


Saludos y gracias adelantadas
  #4 (permalink)  
Antiguo 19/01/2012, 23:10
 
Fecha de Ingreso: julio-2010
Mensajes: 197
Antigüedad: 13 años, 9 meses
Puntos: 32
Respuesta: loguearme con PHP

<?php

include('../soft/function/conexion.php'); $link = Conectarse();

$user = $_POST['usuario']; $pass = $_POST['password'];

$consulta = "SELECT * FROM m_usuarios WHERE Usuario = '$user'";
$inf = mysql_query($consulta); $res = mysql_fetch_array($inf);

if($res['Usuario']==''){header ("Location: ../index.php?errorusuario=si");}else{
if($res['Usuario']==$user && $res['Password']==$pass){header ("Location: ../soft/index.php");}
else{header ("Location: ../index.php?errorusuario=si");}}

session_start();
$_SESSION["Usuario"] = $user;
$_SESSION["Nivel"] = $res['Nivel'];

?>
  #5 (permalink)  
Antiguo 20/01/2012, 02:45
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
Respuesta: loguearme con PHP

Bueno, espero que sea para aprender, o para algun desafio persona y no para venderlo...

Aca va. Te presento una forma de hacer login, logout y entrar a una pagina para usuario validado, si queres cambiar el label donde dice nick y demas cosas, es otro tema.

Vamos a tener 5 archivos:

index.php
funciones.php
control.php
seguridad.php
pagina.php

index.php va a tener el contenido de la form pidiendo el usuario y password.

Código HTML:
Ver original
  1.     <form action="control.php" method="POST">
  2.     <table>
  3.         <tr>
  4.             <td>Usuario</td>
  5.             <td><input type="text" name="usuario" id="usuario" /></td>
  6.         </tr>
  7.         <tr>
  8.             <td>Password</td>
  9.             <td><input type="password" name="clave" id="clave" /></td>
  10.         </tr>
  11.         <tr>
  12.             <td></td>
  13.             <td><input type="submit" name="submit" id="submit" value="Ingresar" /></td>
  14.         </tr>
  15.         <tr>
  16.             <td>
  17.             </td>
  18.         </tr>
  19.     </table>
  20.     </form>
  21. </body>
  22. </html>

Bien, el siguiente archivo es funciones.php y aca es donde vas la conexion a la base de datos y la consulta para validar el usuario.

Código PHP:
Ver original
  1. <?php
  2. $cn = mysql_connect("localhost","root","");
  3. if (!$cn) {
  4.     echo "Error en la conexion";
  5.     die();
  6. }
  7.  
  8. mysql_select_db("mi_base",$cn);
  9.  
  10. function validarusuario($usuario, $clave){
  11.           $clave = md5($clave)
  12.           $sql = "select * from usuarios where usuario = '".$usuario."' and clave = '".$clave."'";
  13.           $rs = mysql_query($sql) or die(mysql_error());
  14.           if(mysql_num_rows($rs) == 1){
  15.                     return true;
  16.           }else{
  17.                     return false;
  18.           }
  19. }
  20. ?>

Bien ahora vamos a programar el archivo control.php donde vamos a validar al usuario y vamos a crear una sesion.

Código PHP:
Ver original
  1. <?php
  2. include("funciones.php");
  3. if(validarusuario($_REQUEST['usuario'],$_REQUEST['clave'])){
  4.     session_start();
  5.     $_SESSION["uid"] = $_REQUEST["usuario"];
  6.     header("location: pagina.php");
  7. }else {
  8.     header("location: index.php?msg=error_de_usuario");
  9. }
  10. ?>

Bien ahora el archivo seguridad.php es el que va a ser incluido en cada una de las paginas que querramos que sean accedidas solo por usuarios logueados.

Por ejemplo pagina.php va a tener un include de seguridad.php

Aca vamos con el contenido de seguridad.php

Código PHP:
Ver original
  1. <?php
  2. if (!$_SESSION["uid"]) {
  3.     header("location: index.php?msg=sesion_expirada"); 
  4. }
  5. ?>

Bien y archivo pagina.php tendra el siguiente codigo.

Código PHP:
Ver original
  1. <?php include("seguridad.php"); ?>
  2. <html>
  3. <head></head>
  4. <body>
  5. Bienvenido <?php echo $_SESSION["uid"]; ?>
  6. </body>
  7. </html>

Bueno, espero que te sirva, cualquier cosa consulta.

Saludos!
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #6 (permalink)  
Antiguo 20/01/2012, 02:46
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
Respuesta: loguearme con PHP

vos lo podes modificar a los archivos, por ejemplo en el index.php hacer un if de msg y ver si tiene contenido, y si lo tiene mostrarlo...

Aca podes aclarar algunas dudas: http://ar2.php.net

Saludos!
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #7 (permalink)  
Antiguo 20/01/2012, 06:58
 
Fecha de Ingreso: diciembre-2010
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: loguearme con PHP

Muchas gracias turco_7, tu codigo me sirvio de mucho. Es para aprender, tengo que asimilar bien lo de las sesiones ya que parece un tema importante.

He modificado tu codigo para que en vez de entrar a una pagina para usuario validado, en la cabecera de la pagina salga el formulario si no hay usuario validado o el nick del usuario validado(uso index.php, funciones.php y control.php) y no(seguridad.php y pagina.php )

El problema que tengo es este:



el diseño lo modificare luego, cuando tengo el usuario validado esta bien porque sale el nick(parte derecha "asdasd") pero cuando tengo el formulario me sale el aviso de que uid no ha sido definido

aqui les pongo el codigo:

Código PHP:
Ver original
  1. <?php  session_start(); ?>
  2. /* ...
  3.  Codigo HTML
  4.  ... */
  5.  <ul class="limpiar">
  6.                 <?  if (!$_SESSION["uid"])
  7.                 {
  8.                      ?>
  9.                  <form action="control.php" method="POST">
  10.                     <li>
  11.                         <label for="nick">Nick:</label>
  12.                         <input id="nick" name="nick" type="text" value="" />
  13.                         <label for="password">Contraseña:</label>
  14.                         <input id="password" name="password" type="password" value="" />
  15.                         <input type="submit" id="acceder" value="Acceder"  />
  16.                     </li>
  17.                       </form>
  18.                     <li><a href="formulario.php">Nuevo Usuario</a></li>
  19.                  
  20.                 </ul><p>
  21.                 <?
  22.                 }
  23.                 else
  24.                 echo $_SESSION["uid"];
  25.                 ?></p>
Otra duda que tengo es para hacer logout, como se haria?

Saludos y gracias adelantadas
  #8 (permalink)  
Antiguo 20/01/2012, 09:45
 
Fecha de Ingreso: enero-2012
Ubicación: En una casa
Mensajes: 72
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: loguearme con PHP

También tienes que colocar ese session_start en todas las páginas que tengas
index.php
funciones.php
control.php
seguridad.php
pagina.php

Para un log out debes destruir o finalizar todas las sesiones activas...

Código PHP:
Ver original
  1. <?
  2.  
  3. $_SESSION=Array();
  4.  
  5.  
  6. header("location: ..."); //<-- Acá debes poner la página a la que se hará el redireccionamiento al destruir la sesión.
  7. ?>
__________________
Aprendo, Aprendo Aprendo :D A la filosofía de Golden Boy ^^,
Desarrollo Web en Colombia

Última edición por pato_cuack; 20/01/2012 a las 09:52
  #9 (permalink)  
Antiguo 20/01/2012, 15:04
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
Respuesta: loguearme con PHP

para el problema que tenes, en el if deberias agregar el isset

osea:
Código PHP:
Ver original
  1. if(isset($_SESSION["uid"])){
  2.       if (!$_SESSION["uid"]){
  3.              ........
  4.              ........
  5.       }
  6. }

Tene en cuenta que el archivo seguridad debe existir para que en cada una de tus paginas le hagas un include y pueda validar si el user esta logueado o no.

Saludos!
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #10 (permalink)  
Antiguo 20/01/2012, 17:52
 
Fecha de Ingreso: diciembre-2010
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: loguearme con PHP

Muchas gracias de nuevo turco_7, a ti tambien pato_cuack. Ya no tengo el aviso de que uid no esta definido, lo del logout lo voy a dejar por ahora porque aun no se como quiero hacerlo.

Última edición por larkinhos; 21/01/2012 a las 17:07
  #11 (permalink)  
Antiguo 21/01/2012, 17:41
 
Fecha de Ingreso: diciembre-2010
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: loguearme con PHP

Buenas de nuevo, al final me he puesto con el logout, keria conseguirlo por mi cuenta pero llevo horas y no saco nada en claro...y estoy casi seguro k es una tonteria

Tengo el LogIn y el LogOut en la cabecera, accesible desde todas las paginas



Cuando pulso Cerrar sesion la pagina se queda igual, y yo lo que quiero es que vuelva aparecer como en la parte de la izquierda los label y textbox

index.php(o cualquier otra)
Código PHP:
<?php  include("seguridad.php"); ?>
/* ...*/
   <? if(!isset($_SESSION["uid"]))                
                { 
?>                    
                 <form id="acceso" action="control.php" method="POST">   
                    <label for="nick">Nick:</label>
                    <input id="nick" name="nick" type="text" value="" />
                    <label for="password">Contraseña:</label>
                    <input id="password" name="password" type="password" value="" />
                    <input type="submit" id="acceder" value="Acceder"  />
                 </form>
                 <a id="acceso" href="formulario.php">Nuevo Usuario</a>
                <?
                
}
                else        

                    echo 
"<b id='login'>".$_SESSION["uid"]."</b><input type='button'  value='Cerrar sesion' id='cerrar' onclick='Cerrar()' />";
Funcion Cerrar() javascript
Código Javascript:
Ver original
  1. function Cerrar()
  2. {
  3.     <?php
  4.         session_start();
  5.         $_SESSION=Array();
  6.         session_unset();
  7.         session_destroy();
  8.      ?>
  9.               window.location="logout.php"; /*Si es posible sin esto, que sea automatico en la pagina que este */
  10. }

La pregunta es: ¿Que deberia tener puesto en seguridad.php para que me fuera bien?

Si tengo puesto:
Código PHP:
 <?php
    session_start
();
    if (!
$_SESSION["uid"]) {
        
header("location: index.php?msg=sesion_expirada"); 
    }
    
?>
Tengo el problema de que la primera vez no me deja entrar, este y el problema de k cuando pulso el boton parece que no cierro bien la sesion xk se keda igual son mis dudas y creo que la solucion es modificar seguridad.php para que al entrar a cualquier pagina seguridad.php diga si la sesion esta activa o no y actuar dependiendo.

Espero haberme explicado bien,
Saludos y gracias adelantadas
  #12 (permalink)  
Antiguo 22/01/2012, 11:55
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: loguearme con PHP

viendo un pco el tema te pregunto y si el usuario tiene desactivado javascript como cerraras la session???

yo cambiaria esto

Código PHP:
Ver original
  1. function Cerrar()
  2.     {
  3.         <?php
  4.             session_start();
  5.             $_SESSION=Array();
  6.             session_unset();
  7.             session_destroy();
  8.          ?>
  9.                   window.location="logout.php"; /*Si es posible sin esto, que sea automatico en la pagina que este */
  10.     }

por esto , pero la funcion la creas en php no javascript y en un include o como mas gustes pero si session_start() ya existe en la pagina no es necesario dentro de la funcion

Código PHP:
Ver original
  1. function Cerrar()
  2.     {
  3.             session_start(); // si ya existe en la pagina no es necesario
  4.             $_SESSION=Array();
  5.             session_unset();
  6.             session_destroy();
  7.             header("location:logout.php");
  8.     }
  #13 (permalink)  
Antiguo 23/01/2012, 06:08
 
Fecha de Ingreso: diciembre-2010
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: loguearme con PHP

Muchas gracias webankenovi, creo que ya he finalizado con el tema de login y logout jejeje

Saludos.
  #14 (permalink)  
Antiguo 23/01/2012, 13:26
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: loguearme con PHP

Cita:
Iniciado por larkinhos Ver Mensaje

La pregunta es: ¿Que deberia tener puesto en seguridad.php para que me fuera bien?

Si tengo puesto:
Código PHP:
 <?php
    session_start
();
    if (!
$_SESSION["uid"]) {
        
header("location: index.php?msg=sesion_expirada"); 
    }
    
?>
Código PHP:
Ver original
  1. <?php
  2.  
  3.     if (isset($_SESSION['uid'])) {
  4.  
  5.     echo'estas loqueado';/// hay sesion indicas lo que deseas hacer
  6.  
  7.     }else{
  8.  
  9.     echo'no hay sesion';/// aqui si no hay sesion indicas lo que deseas hacer
  10.  
  11.     }?>

aparte en el login crearia una sesion con su session_id() y en seguridad lo compararia

Código PHP:
Ver original
  1. <?php
  2.  
  3.     if (isset($_SESSION['uid']) && isset($_SESSION['id']) ) {
  4.  
  5.     $id = session_id();
  6.  
  7.     if($id == $_SESSION['id']){
  8.  
  9.     echo 'la id coincide'; // aqui ya hacemos lo que quieras todo correcto
  10.  
  11.     }else{
  12.  
  13.     echo 'la id no coincide';// aqui falla la id indica que hacer
  14.  
  15.     }}else{
  16.  
  17.     echo'no hay sesion';/// aqui si no hay sesion indicas lo que deseas hacer
  18.  
  19.     }?>

Última edición por webankenovi; 23/01/2012 a las 13:32

Etiquetas: formulario, tabla, usuarios
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 03:42.