Foros del Web » Programando para Internet » PHP »

Login con php

Estas en el tema de Login con php en el foro de PHP en Foros del Web. Buenas despues de haber probado mucho tiempo he logrado adaptar un login y un register orientado a objetos en php para mi aplicación. Les cuento ...
  #1 (permalink)  
Antiguo 13/09/2012, 12:35
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Pregunta Login con php

Buenas despues de haber probado mucho tiempo he logrado adaptar un login y un register orientado a objetos en php para mi aplicación.
Les cuento estoy haciendo una aplicación en la cual estoy intentando que a los usuarios que acceden a mi sistema, puedan agregar ciertos viajes que tienen planeados hacer, mediante un form sencillo en html. Para ello en mi sql me hice una tabla para los users, y una tabla circuits con un id,el nombre del viaje y el username joineado de la tabla users... que es donde se va agregar el nombre del viaje que el usuario va hacer.
El problema esta en que necesito que solo los usuarios que esten logueados puedan ingresar los nombres de los viajes y es aqui donde estoy fallando,el registro y el login funcionan bien... cuando hago el login... ingreso a una pagina en la cual esta el link agregar un nuevo viaje... y es ahi donde falla, ya que por ejemplo si copio y pego la url de donde tengo que poner el nombre del viaje. Me deja acceder sin ningun problema aunque no me haya logueado... hay alguna forma de mandar para atras a los usuarios si no estan logueados desde mi html? como lo controlo eso?.... Alguien podria echarme un cable? lo agradeceria... una enormidad..


estos son mis codigos




login.html

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Trip Minded -Log In</title>
</head>

<body>


<center>

<table>

<tr>
<td></td>


<td align="center">

<h2 style="text-decoration:underline;">Login Trip Minded</h2>


</td>



</tr>



<tr>

<td>

<br/>


</td>

<td></td>




</tr>






<form name="login" method="post" action="login.php">

<tr>

<td> Username: </td>

<td>
   <input name="username" class="textbox" type="text"></br>
</td>



</tr>

<tr>

<td>Password: </td>

  	<td>
    <input name="password" class="textbox" type="password"></br>                    
	</td>
</tr>

 <tr>
 <td></td>

     <td>
    <input name="login" value="Login" class="button" type="submit"></br>        
	</td>
</tr>

</form>


<tr>
<td></td>
<td></td>


</tr>


<tr>

<td><br/></td>
<td></td>
</tr>




<tr>

<td></td>

<td>

<a href="index.html">Back Index</a>

</td>

</tr>



</table>


</center>




</body>


</html>



login.php


Código HTML:
<?php
class login
{
    public $user;
    public $post_password;
    public $query;
    public $mysql_password;
    public $error;
    public $ok;
    public $numrows;
    public $fields;

    public function __construct($username, $password)
    {    
        include "config.php";
        $this->user             =$username;
        $this->post_password    =$password;
        $this->query            =mysql_query("SELECT * FROM users WHERE username = '".$this->user."'");
        $this->mysql_password   =mysql_fetch_array($this->query);
        $this->numrows          =mysql_num_rows($this->query);
        $this->error            ="Nombre de usuario o contraseña incorrectos.";
        $this->ok               ="Welcome <span style='color:red; font-size:20px;';<b>".$this->user."</b></span>";
        $this->fields           ="Por favor, rellena todos los campos.";
    }
    public function check()
    {
        if($this->user && $this->post_password)
        {
            if($this->numrows !=0)
            {
                if($this->mysql_password['password'] == md5($this->post_password))
                {
                    session_start();
                    $_SESSION['username'] = $this->user;
                    
					
					
					
					
					echo"<center>";
					echo"<table>";
					
					
					
					
					
					echo"<tr><td>";
				
					
					echo $this->ok;
					
					echo"</td>";
					
					
					echo"<td></td>";
					
					
					echo"<td align='center' style='text-align:center;'>";
						
				    echo "<a href='logout.php'>Log Out</a>";
					
					echo"</td></tr>";
					
					
					
					
					echo"<tr><td>";
					
					echo"
					<br/>
					<a href='./circuits/newcircuit.html'>Create New Circuit</a>";
					
					echo"</td>";
					
					
					echo"<td></td><td></td>";
					
					
					
					echo"</tr>";	
					
					
					
					
					
								echo"<tr><td>";
					
					echo"<br/>";
					
					echo"</td>";
					
					
					echo"<td></td><td></td>";
					
					
					
					echo"</tr>";	
						
						
					
					
				
					
					
					
					
						
						
						
						
						
						
						
						
										
					echo"</table>";
					
					echo"</center>";
				
					
					
					
					
					
					
					
					
                }
                else
                {
                    echo $this->error;
                }
            }
            else
            {
                echo $this->error;
            }
        }
        else
        {
            echo $this->fields;
        }
    }
}
include_once "clear.php";
$login = new login(clear($_POST['username']), clear($_POST['password']));
echo $login->check();
?>



newcircuit.html

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Trip Minded - Create a New Circuit</title>
</head>

<body>



<center>


<table width="487" border="0">

<tr>

<td width="98"></td>
<td width="217" align="center"><h2><u>Create a New Circuit</u></h2></td>
<td width="79"></td>

</tr>



<tr>
<td><br/></td>
<td></td>
<td></td>


</tr>





<form action="newcirc.php" method="post">


<tr>




<td>Name circuit:</td>
<td><input type="text" name="namecirc" width="300" /></td>
<td></td>
</tr>
<tr>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td></td>
</tr>
<tr>
  <td>&nbsp;</td>
  <td><input type="submit" value="Save Circuit" /></td>
  <td></td>
</tr>





</form>




</table>



</center>


</body>
</html>


Última edición por maximendez88; 13/09/2012 a las 12:41
  #2 (permalink)  
Antiguo 13/09/2012, 12:47
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Login con php

usa una variable de session que contenga el valor login, al momento de entrar

Código PHP:
Ver original
  1. $_SESSION['login'] = true;

cuando quiera entrar a alguna página solo comprueba

Código PHP:
Ver original
  1. if(!$_SESSION['login']){
  2.     //redireccionar
  3. }
  #3 (permalink)  
Antiguo 13/09/2012, 12:56
 
Fecha de Ingreso: junio-2008
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Login con php

Hola :),

Pues creo que lo que debes hacer es usar variables de sesiones, ejem: $_SESSION['usuario'], este tipo de variables se mantienen como globales(llamemoslo asi), ahora para el login lo que debes hacer es:

Al momento de iniciar el formulario poner session_start(), esto activara las variables session, luego podrias hacer lo siguiente:
verificas si esa variable ya tiene un valor algo asi como
Código PHP:
if(isset($_SESSION['usuario']){
       
//Aqui muestras tu campo donde el cliente entro al sistema
}else{
     
//Aqui le muestra el formulario

No te olvides de poner session_destroy(), cuando haga el logout el usuario para que se resetee la variable de sesion.

Eso es respecto a algo simple, pero ahora bien me dices que cuando pones la url en el explorador se puede ingresar aun sin estar logueado.
Estimado, para este tipo de casos debes estudiar el patron MVC(Modelo Vista COntrolador), ademas que no debes definir tus paginas como html, si vas a combinarlas con php te recomiendo(ojo solo opinion) que tus paginas sean de tipo phtml, de esa forma puedes invocarlas cuando te plazca mediante la sentencia require_once('tuhtml.phtml'), pero eso si man estudia MVC que te sera muy util. Ahi te doy un alcance. Saludos
  #4 (permalink)  
Antiguo 13/09/2012, 13:38
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Login con php

Muchas gracias por las prontas respuestas, he estado intentando lo que me han aconsejado y me surgieron algunas dudas.Por ejemplo yo cuando me logueo en el login.php tengo un link que es el que me lleva a newcircuit.html, bueno lo que he hecho fue cambiarlo para newcircuit.php.

en el cual pregunto si esta logueado o no... el problema ahora es que aunque este logueado no me deja ver el formulario
aqui va mi codigo con lo que he hecho... creo que el problema esta en que en algun momento se pierde la variable de sesion

newcircuit.php

Código HTML:
<?php

    if(!$_SESSION['login']){
        //redireccionar
		echo "para acceder a esta seccion tiene que estar logueado";
		
    }
	else
	{
		header('Location:newcircuit.html');




	
	}
?> 

  #5 (permalink)  
Antiguo 13/09/2012, 14:58
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Login con php

estas creando la variable $_SESSION['login']?

esta debe ser creada como $_SESSION['username'] = $this->user;
  #6 (permalink)  
Antiguo 14/09/2012, 11:12
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Login con php

bueno al final lo he logrado.... dejo mi codigo por si a alguien le sirve en un futuro.... muchas gracias por la ayuda.....me fue de mucha utilidad... estaba errandole que no iniciaba la session en ninguna parte...


newcircuit.php
Código HTML:

<?php
session_start();

if($_SESSION['username'] == true)
{
--mostrar formulario
}
else
{
--usted no esta logueado
}

Última edición por maximendez88; 14/09/2012 a las 12:02

Etiquetas: html, login, registro, sql, 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 22:15.