Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/07/2010, 04:22
MARTIN_LAW
 
Fecha de Ingreso: julio-2010
Mensajes: 121
Antigüedad: 13 años, 9 meses
Puntos: 0
Problema PHP identificacion y sesiones

Hola a todos, espero que me pueda ayudar alguien con mi primer mensaje.

Soy bastante novato en php y mysql, y me gustaria que alguien me echase una mano si es posible claro.

Decir que he leido bastantes tutoriales por internet, pero no hay manera, no consigo lograr lo que quiero.

Estoy creando una especie de tienda virtual, a continuacion relato los pasos seguidos:



Primero accedo a un index.htm, donde se puede elegir entre el registro de un usuario, o el login en el sistema.


SI ELIGE REGISTRO:
Tengo un formulario en htm (registro.htm), que envia los datos introducidos a registro.php, y este los guarda en la base de datos
Decir que me guarda todo correctamente, con la contraseña encriptada y demas, y hasta que no cliqueo en un link de activacion que se envia al correo, no se activa dicho usuario (no se pone a 1 el campo activo de la tabla de usuarios)

SI ELIGE LOGIN:
Accede a una pagina login.php, mete su nickname y su contraseña.
-NO ESTA REGISTRADO O NO ESTA ACTIVADO: se le advierte con un mensaje
-METE MAL LA CONTRASEÑA: se le dice que para dicho nick, la contraseña es erronea
-INTRODUCE LOS DATOS CORRECTAMENTE: muestra un mensaje de que lo ha hecho bien : AQUI ESTA MI PROBLEMA!!


Quiero que al meter los datos correctamente se acceda a una nueva pagina a la cual solo se puede tener acceso en caso de haber realizado el login en el sistema correctamente.
He leido que se hace mediante sesiones, con el uso de session_start, pero no hay manera, al tratar de direccionarle con el header("Location: paginasegura.php"); no me lleva a ningun lado, y siempre me dice que los headers siempre fueron enviados.
Decir que en todas las paginas php, al principio de ellas he puesto <?php session_start() ?> ya que de no ponerlo, el funcionamiento de todo era correcto, pero me aparecian warnings (pero me guardaba los datos bien en la base de datos, activa el usuario, comprueba que el user y contraseña son correctos, pero salen warnings).


A ver si alguien me puede echar una mano, aqui dejo el codigo del login.php y de controllogin.php (el cual verifica que el nick y contraseña con correctos) espero que alguien me pueda guiar.

CODIGO LOGIN.PHP
Código:
<html>
   <title>
	Login de usuario en la tienda virtual
   </tile>



   <body>

	<B> LOGIN DEL USUARIO </B>
	<br><br><br><br>
	Por favor, introduzca los datos que se le piden para poder acceder a la web
	<br><br><br><br>


	<form method=post ACTION="controllogin.php">
		NICKNAME:
			<input name="nickname" type="text">
			<br><br>
		PASSWORD:
			<input name="password" type="password">
			<br><br><br><br>

			<input type=submit value="ENVIAR">


	
	</form>

   </body>

</html>

CODIGO CONTROLLOGIN.PHP
Código:
<?php

   //Archivos externos que usaremos

   include("./funciones/conectar.php");
   include("./funciones/comprobarpass.php");

   //ponemos cada dato recibido del formulario de login en 1 variable
   $nickname=$_POST["nickname"];
   $password=$_POST["password"];

	

   //Variables para la base de datos
   $dbhost="localhost";
   $dbuser="root";
   $dbpass="*******";
   $db="tienda";


   conectar(1);

   comprobarpass($nickname,$password);

   conectar(0);


?>

CODIGO FUNCION COMPROBARPASS.PHP
Código:
<?php
   function comprobarpass($nickname,$password)
	{			
	   $pass2 = sha1($password);

   	   //Sentencia SQL para ver si ese nick se encuentra en la base de datos
  	   $sql = "SELECT * FROM clientes WHERE nickname='$nickname' and activo=1";
	   //Ejecuto la sentencia
   	   $rs = mysql_query($sql); 

   	   if (mysql_num_rows($rs)!=0)
		{
	   	   $sql2 = "SELECT * FROM clientes WHERE nickname='$nickname' and password='$pass2' and activo=1";
	   	   $rs2 = mysql_query($sql2);
		   if (mysql_num_rows($rs2)!=0)
			{
			   echo ("Bienvenido $nickname a la tienda virtual");
		   	}
		   else
		   	{
	   		   echo ("La contraseña introducida para $nickname no fue valida");
		   	}			
   		}
	   else 
		{
	   	   echo ("Usted no esta registrado en esta pagina o aun no ha acivado su usuario");
		} 
	}
?>

Muchas gracias por vuestro tiempo.