Autor Tema: Logueo  (Leído 4850 veces)

Desconectado Zeuser

  • PHPer@
  • **
  • Mensajes: 75
  • Karma: 1
    • Ver Perfil
Logueo
« en: 17 de Octubre de 2006, 17:41:40 pm »
Buenas. Cuando cerró phperos, dejé el php, y ahora que ha abierto lo he retomado de nuevom, y me ha surgido el mismo problema que la última vez.

He creado un sistema de logueo simple, pero no me funciona. Aquí van los codigos.


logueo.php
<form method="POST" action="login.php">
  <input type="text" name="usuario" value="Nombre de Usuario"><br>
<input type="password" name="pass" value="******"><br><br>
<input type="submit" name="enviar" value="Entrar al panel">
</form>


login.php

<?php 
if (isset($_POST[usuario]) && isset($_POST[pass]) && $_POST[enviar]) { 

/* Das los valores que tu quieras */ 
$admin "zeuser"
$contrasena "test"

if (
$_POST[usuario] == $admin && $_POST[pass] == $contrasena) { 
header("Location: http://graficalforum.gratishost.com/index.html"); 
exit; 
} else { 
echo 
"Error: Nombre de usuario y/o contraseña incorrectos"



?> 


Si pongo contraseña incorrecta me funciona bine, es decir me sale: nombre de usuario y/o contraseña incorrectos.
Pero si pongo los datos correctos no me funciona, me sale un error en la linea 17, por lo tanto , aquí:

header("Location: http://graficalforum.gratishost.com/index.html"); 

el error exacto es: Warning: Cannot modify header information - headers already sent by (output started at /home/virtual/sitio107740/www/login.php:9) in /home/virtual/sitio107740/www/login.php on line 17

Porfavor decidme como solucionarlo, ya que lo necesito.
Salu2 :D
« Última modificación: 17 de Octubre de 2006, 17:43:55 pm por Zeuser »

Comunidad PHPeros

Logueo
« en: 17 de Octubre de 2006, 17:41:40 pm »

Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re: Logueo
« Respuesta #1 en: 17 de Octubre de 2006, 18:51:17 pm »
Citar
Cannot modify header information headers already sent

Esto significa que ya han sido enviadas CABECERAS y que no puedes modificarlas, la funcion header() modifica las cabeceras...

Solución: Usa una redireccion javascript, no hagas una redireccion simplemente un include del panel...
Por favor, leete las Normas


Desconectado Zeuser

  • PHPer@
  • **
  • Mensajes: 75
  • Karma: 1
    • Ver Perfil
Re: Logueo
« Respuesta #2 en: 17 de Octubre de 2006, 18:58:13 pm »
No domino nada el javascript, si puede ser modifica mi script para ke funcione incluyendo lo que tu dices.
Salu2 :D

Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re: Logueo
« Respuesta #3 en: 17 de Octubre de 2006, 19:02:05 pm »
logueo.php
Código: [Seleccionar]
<form method="POST" action="login.php">
  <input type="text" name="usuario" value="Nombre de Usuario"><br>
<input type="password" name="pass" value="******"><br><br>
<input type="submit" name="enviar" value="Entrar al panel">
</form>


login.php
<?php 
if (isset($_POST[usuario]) && isset($_POST[pass]) && $_POST[enviar]) { 

if (
$_POST[usuario] == "zeuser" && $_POST[pass] == "test") { 
include(
"./index.html"); //Esto incluirá la pagina que se veria al redireccionar..
} else { 
echo 
"Error: Nombre de usuario y/o contraseña incorrectos"
exit; 
//El exit mejor cuando falla el login ;)



?>


Ahora funciona porque las cabecerás no se modifican, cabeceras podriamos decir que se modifican en el momento en que se escribe algo en la pantalla o se crea una nueva variable, que es lo que hacias al poner $admin "zeuser";

Ahora te funciona correctamente ;) ¿Alguien no entiende por qué? Que pregunte ;)

Un Saludo.
« Última modificación: 17 de Octubre de 2006, 19:12:30 pm por naveda »
Por favor, leete las Normas


Desconectado Zeuser

  • PHPer@
  • **
  • Mensajes: 75
  • Karma: 1
    • Ver Perfil
Re: Logueo
« Respuesta #4 en: 17 de Octubre de 2006, 19:08:11 pm »
Pues me sigue sin funcionar. me da error en la linea 13:
header("Location: http://graficalforum.gratishost.com/index.html");

No sirve de nada el cambio? :S pq no funciona?
Puede tener a ver, que este alojda en gratishost?


Salu2 :D

NaVeDa...: SOLUCIONADO
« Última modificación: 17 de Octubre de 2006, 19:13:35 pm por naveda »

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Logueo
« Respuesta #5 en: 17 de Octubre de 2006, 20:27:54 pm »
Quisiera añadir que para escribir variables no numéricas, escribas comillas "  "  (o simples ' ' )

Textual:

Código: [Seleccionar]
$_POST['variable'];
Numérica:

Código: [Seleccionar]
$_POST[variable];
Alfanumérica:

Código: [Seleccionar]
$_POST['variable'];

Lo mismo a la hora de definir variables:

$variable "hola";
$variable 1;


Raken - Moderador para PHP y HTML

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: Logueo
« Respuesta #6 en: 17 de Octubre de 2006, 21:54:48 pm »
Si mal no recuerdo, el problema era tu host, que no te dejaba usar la opcion "header".
Ademas, cuando uses header location, no indiques toda la ruta, solo el archivo en si:
header("Location: index.html");

Saludos!!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re: Logueo
« Respuesta #7 en: 17 de Octubre de 2006, 22:17:56 pm »
Segun yo se es igual la matriz:
$array[&#39;0&#39;] = 0;
que la matriz
$array[0] = 0;

Aunque no estoy seguro me has puesto en duda xD.
Por favor, leete las Normas


Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re: Logueo
« Respuesta #8 en: 17 de Octubre de 2006, 22:28:42 pm »
Es exactamente lo mismo, y funcionara igual si pones
$array[0] o $array['0']

Eso solo es un consejo que nos da nuestro amigo Raken para evitar posibles fallos :P
Salu2!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado Pc-Admin

  • PHPer@ Fijo
  • ***
  • Mensajes: 118
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
Re: Logueo
« Respuesta #9 en: 17 de Octubre de 2006, 22:31:44 pm »
Yo te ago un logueo mas wapo:

Enpezamos con la tabla de la base de datos:

CREATE TABLE `admin` (
`
idINT(5NOT NULL AUTO_INCREMENT
`
userVARCHAR(255NOT NULL
`
passVARCHAR(255NOT NULL
`
mailTEXT NOT NULL
`
fechaVARCHAR(255NOT NULL
`
ipVARCHAR(255NOT NULL
 
  )


Seguimos con el logueo:

<?PHP
// incluimos el conectar
include(&#39;conectar.php&#39;);

if($_POST[&#39;entrar&#39;]) {

// Comprovamos user i pass en md5 (la pass)
$user $_POST[user];
$pass md5($_POST[pass]);
 
//comprovamos los datos
$con mysql_query("SELECT * FROM admin where user=&#39;$user&#39;");
$row mysql_fetch_assoc($con);

//si la pass es correcta creamos cookie y llevamos al panel
if($pass == $row[&#39;pass&#39;]) {
	
setcookie(id,$row[id],time()+650000);
 
       setcookie(user,$user,time()+650000);
 
       setcookie(pass,$pass,time()+650000);
	
header("Location: admin/panel.php");
	
} else {
	
echo 
"Nick o pass incorrectos.";
}
}
?>
<center>
<form action="" method="POST">
<b>Usuario:</b><br>
	
<input type="text" name="user"><br>
<b>Contraseña:</b><br>
	
<input type="password" name="pass"><br><br>
	
<input type="submit" value="Entrar" name="entrar">
</form>
</center>


Bueno, e aqui un gran logueo sacando los datos del mysql :):)
Todo en esta vida, es practicar.

Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re: Logueo
« Respuesta #10 en: 17 de Octubre de 2006, 22:33:58 pm »
Re***** que no estamos aquí para dar codigos sino para enseñar... y explicar todo lo que se dice con una claridad CRISTALINA hasta que se entiende..
Por favor, leete las Normas


Desconectado Zeuser

  • PHPer@
  • **
  • Mensajes: 75
  • Karma: 1
    • Ver Perfil
Re: Logueo
« Respuesta #11 en: 17 de Octubre de 2006, 23:20:53 pm »
Gracias PC-Admin por tu logueo, pero quiero aprender a hacerlos desde 0, ya que no se nada de sql y prefiero ir poco a poco con un logueo mas sencillo.

Seguidamente pongo como tengo el código actual:
<?php 
if (isset($_POST["usuario"]) && isset($_POST["pass"]) && $_POST["enviar"]) { 

if (
$_POST["usuario"] == "zeuser" && $_POST["pass"] == "test") { 
header("Location: /index.html"); 
} else { 
echo 
"Error: Nombre de usuario y/o contraseña incorrectos"
exit; 
//El exit mejor cuando falla el login ;)



?>


Que es lo que me falla? No lo entiendo :S

He modificado lo que me haveis dicho, comillas, el header,el exit, y no da resultado.

Solo quiero conseguir que si los datos son correctos se redireccione a otra web. Intentad encontrarme el error, pero muchas gracias por lo que haveis echo aasta ahora.



Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Logueo
« Respuesta #12 en: 17 de Octubre de 2006, 23:57:58 pm »
header("Location: index.html"); 

o bien...

header("Location: carpeta/index.html"); 

 ;)

Veo que has puesto bien las comillas. Bien hecho. En respuesta a Naveda y TLX hablaba de las comillas en el momento de asignar y llamar variables. Efectivamente, da lo mismo llamar una matriz (array) como [ 0 ] que como [" 0 "]. No obstante, si lo ponemos sin comillas es un campo numérico ordinal, y si lo ponemos con ellas es un string "0".

Esto sirve para evitar conflictos, especialmente en códigos más complejos y en versiones más antiguas de PHP. Pero vamos, que no cuesta nada hacer las cosas bien  ;)
Raken - Moderador para PHP y HTML

Desconectado Zeuser

  • PHPer@
  • **
  • Mensajes: 75
  • Karma: 1
    • Ver Perfil
Re: Logueo
« Respuesta #13 en: 18 de Octubre de 2006, 14:40:25 pm »
Nada, sigue sin funcionar. Vamos a ver :S
Vosotros, como haceis un logueo ( sin mysql ni bd ni nah) que poniendo la contraseña correcta i el nick, se redireccione a otra web , otro link....

Solamente es esto, y la funcion header no me funciona, siempre me da error en:
header("Location: index.html");

Como haríais vosotros el script para que funcionara? Vuelvo a repetir, solo quiero que al poner los datos correctos, se redireccione al index.html
nada mas. Salu2 :D

Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re: Logueo
« Respuesta #14 en: 18 de Octubre de 2006, 14:43:06 pm »
Pues yo simplemente, como veo que por alguna razon no te funciona la funcion header(); (Que puede ser por el servidor..), pues haría la redireccion con javascript

En la linea donde esta header(..); cambiala por:
Código: [Seleccionar]
echo '<script>window.location = "index.html";</script>';
Creo que ese es el codigo javascript que redirecciona ;)
Por favor, leete las Normas