Foros del Web » Programando para Internet » PHP »

login problema parte de la configuracion

Estas en el tema de login problema parte de la configuracion en el foro de PHP en Foros del Web. Hola forosdelweb , he conseguido configurar el login de tal manera que he conseguido que no me salga ningun error en las linias xd , ...
  #1 (permalink)  
Antiguo 18/10/2011, 10:56
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 12 años, 6 meses
Puntos: 1
login problema parte de la configuracion

Hola forosdelweb , he conseguido configurar el login de tal manera que he conseguido que no me salga ningun error en las linias xd , ahora que no me va...

mira el

iniciarsesion.html

<form method="POST" action="login2.php">
<!--Creamos los campos y un label para cada uno de ellos-->
<label for="email1">Usuario: </label>
<input type="text" name="email1" id="email1"/><br />
<label for="password">Contraseña: </label>
<!--Este input debe ser -type="password" para que no se muestren los caracteres-->
<input type="password" name="password" id="password"/><br />
<!--Al dar click al botón se ejecutará el -action\-->
<input type="submit" value="Iniciar Sesión"/>
</form>

login2.php

//Recibimos los valores que intrujo el usuario desde el formulario.
$usuario = $_POST["email1"];
$password = $_POST["password"];
$conexion = mysql_connect("localhost","kfernandez92","brothers ");
mysql_select_db("web",$conexion);
$sql = "SELECT from web('$email','password1')";
$comprobar = mysql_query($sql);
if(mysql_num_rows($comprobar) > 0)
{
//Asignamos a una variable lo que llevará por -valor- la cookie
$email1 = mysql_result($comprobar,0);
//Establecemos la cookie para matener la sesión abierta.
setcookie("misitio_userid","$id_usuario",time() + 3600);
//hacemos la redirección al archivo que evalua si se inicio sesión o no.
header("Location:inicio.php");
}
else
echo "Usuario o Contraseña incorrectos";

Imagino que fallará algo pero ... npi
  #2 (permalink)  
Antiguo 18/10/2011, 10:58
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: login problema parte de la configuracion

Escribe al principio de login2.php estas líneas
Código PHP:
Ver original
  1. ini_set('display_errors', true);
Si te sale algún error, analiza lo que te dice y verifica si lo puedes resolver. Otra cosa para saber errores en la consulta debes usar algo como
Código PHP:
Ver original
  1. mysql_error('aqui va tu consulta') or die(mysql_error());
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 18/10/2011, 11:14
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: login problema parte de la configuracion

estos son los errores que me salen

( ! ) Notice: Undefined variable: email in C:\wamp\www\kfernandez\login2.php on line 9

( ! ) Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\kfernandez\login2.php on line 11
  #4 (permalink)  
Antiguo 18/10/2011, 11:31
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: login problema parte de la configuracion

El primer error es porque la variable $email no existe, en tu código se llama $usuario y el segundo error es porque tu consulta SQL debe estar mal.

Copia la consulta en tu PHPMyAdmin, genera el PHP, copialo en tu código y reemplaza las variables correctamente. Verifica la siguiente línea:

Código PHP:
Ver original
  1. $sql = "SELECT from web('$email','password1')";

Para encontrar esos errores, en login2 cambia esta línea:

Código PHP:
Ver original
  1. $comprobar = mysql_query($sql);

por esta otra:

Código PHP:
Ver original
  1. $comprobar = mysql_query($sql) or die (mysql_error());

Cuando hagas todo comenta el resultado. Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 18/10/2011, 15:13
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: login problema parte de la configuracion

Me dice lo siguiente sobre el email y la contraseña

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from web('[email protected]','password1')' at line 1

login2.php
<?php
$email1 = $_POST["email1"];
$password = $_POST["password"];
$conexion = mysql_connect("localhost","kfernandez","brothers") ;
mysql_select_db("web",$conexion);
$sql = "SELECT from web('$email1','password1')";
$comprobar = mysql_query($sql) or die (mysql_error());
if(mysql_num_rows($comprobar) > 0)
{
//Asignamos a una variable lo que llevará por -valor- la cookie
$email1 = mysql_result($comprobar,0);
//Establecemos la cookie para matener la sesión abierta.
setcookie("misitio_userid","$id_email1",time() + 3600);
//hacemos la redirección al archivo que evalua si se inicio sesión o no.
header("Location:inicio.php");
}
else
echo "email1 o Contraseña incorrectos";
?>
  #6 (permalink)  
Antiguo 18/10/2011, 15:20
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: login problema parte de la configuracion

Hasta que no cambies esta línea no te va a funcionar:

Código PHP:
Ver original
  1. $sql = "SELECT from web('$email1','password1')";

Algo así:

$sql = ...

Código SQL:
Ver original
  1. SELECT * FROM tabla WHERE campo1 = '$variable1' AND campo2 = '$variable2'
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 19/10/2011, 06:43
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: login problema parte de la configuracion

hola!!

Explico lo que me ocurre...he cambiado los codigos que me has dado ..

Os dejo una imagen de como está

http://img71.xooimage.com/files/9/6/3/basededatos-2d96fd7.png

vale la base de datos es web .

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* WHERE campo1 = '[email protected]' AND campo2 = '1234'' at line 1

<?php
$email1 = $_POST["email1"];
$password = $_POST["password"];
$conexion = mysql_connect("localhost","kfernandez","brothers") ;
mysql_select_db("web",$conexion);
$sql = "SELECT web FROM * WHERE campo4 = '$email1' AND campo5 = '$password'";
$comprobar = mysql_query($sql) or die (mysql_error());
if(mysql_num_rows($comprobar) > 0)
{
//Asignamos a una variable lo que llevará por -valor- la cookie
$email1 = mysql_result($comprobar,0);
//Establecemos la cookie para matener la sesión abierta.
setcookie("misitio_userid","$id_email1",time() + 3600);
//hacemos la redirección al archivo que evalua si se inicio sesión o no.
header("Location:inicio.php");
}
else
echo "email1 o Contraseña incorrectos";
?>
  #8 (permalink)  
Antiguo 19/10/2011, 07:45
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 13 años, 6 meses
Puntos: 55
Respuesta: login problema parte de la configuracion

reemplaza esto

Código PHP:
Ver original
  1. $sql = "SELECT web FROM * WHERE campo4 = '$email1' AND campo5 = '$password'";

por esto otro

Código PHP:
Ver original
  1. $sql = "SELECT * FROM web WHERE email1 = '$email1' AND password1= '$password'";


la sentencia que tu indicastes se leeria de este modo

seleccione (SELECT) web de (FROM) todas las tablas (*) donde (WHERE) campo4 es igual a el contenido de la variable $email1 y campo5 es igual al contenido de la variable $password ..

obviamente esto no funciona

la consulta debe ser

seleccione (SELECT) todas los campos (*) de (FROM) la tabla web donde (WHERE) email1 es igual a el contenido de la variable $email1 y password1 es igual al contenido de la variable $password ..

te aconsejo que leeas un manual básico sobre php y mysql para que entiendas la sintaxis ;)
  #9 (permalink)  
Antiguo 20/10/2011, 06:51
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: login problema parte de la configuracion

mirar chicos...he estado mirando los aportes del forosdelweb y me sigue saliendo que no se conecta a la base de datos ... ya no se que hacer y mira que parece senzillo

La base de datos se llama web , es localhost el nombre los campos en la bd se llaman email1 y password1

form.html

<form name="form1" method="GET" action="login2.php">
<table width="955" border="0" cellpadding="10">
<tr>
<td>Nombre</td>
<td><label for="email"></label>
<input type="text" name="email" id="email">
<label for="password1"></label></td>
</tr>
<tr>
<td>Contrase&ntilde;a</td>
<td><input type="password" name="password1" id="password1"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="button" id="button" value="Enviar"></td>
</tr>
</table>
</form>

login2.php

// Configura los datos de tu cuenta
$dbhost='localhost';
$dbemail='kfernandez';
$dbuserpass='brothers';
$dbname='web';
session_start();
// Conectar a la base de datos
mysql_connect ($dbhost, $dbemail, $dbuserpass);
mysql_select_db($dbname) or die('Error en la b');

if ($_POST['email']) {
//Comprobacion del envio del nombre de usuario y password1
$email=$_POST['email'];
$password1=$_POST['password1'];
if ($password1==NULL) {
echo "La password1 no fue enviada";
}else{
$query = mysql_query("SELECT email,password1 FROM users WHERE email = '$email'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password1'] != $password1) {
echo "Login incorrecto";
}else{
$query = mysql_query("SELECT email,password1 FROM users WHERE email = '$email'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_email"] = $row['email'];
echo "Has sido logueado correctamente ".$_SESSION['s_email']." y puedes acceder al index.php.";
}
}
}
  #10 (permalink)  
Antiguo 20/10/2011, 07:12
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 13 años, 6 meses
Puntos: 55
Respuesta: login problema parte de la configuracion

postea el error -- osea copia y pega el error
  #11 (permalink)  
Antiguo 20/10/2011, 07:14
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: login problema parte de la configuracion

lo que sale es que la bd no esta seleccionada y sale lo que hay entre comillas

Cannot select base data.
  #12 (permalink)  
Antiguo 20/10/2011, 07:17
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 13 años, 6 meses
Puntos: 55
Respuesta: login problema parte de la configuracion

cmabia esta linea
Código PHP:
Ver original
  1. mysql_select_db($dbname) or die('Error en la b');

por esta y luego postea el error literalmente copia y pega

Código PHP:
Ver original
  1. mysql_select_db($dbname) or die('Error en la b :  '.mysql_error());
  #13 (permalink)  
Antiguo 20/10/2011, 07:28
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: login problema parte de la configuracion

me sale el error de que la variable email no está definida...

( ! ) Notice: Undefined index: email in C:\wamp\www\kfernandez\login2.php on line 11

no le veo el sentido ahora viendo que es así la bd no se que decirte

http://img71.xooimage.com/files/9/6/3/basededatos-2d96fd7.png

Canvios en la configuracion php

// Configura los datos de tu cuenta
$dbhost='localhost';
$dbemail1='email1';
$dbemail='kfernandez';
$dbuserpass='brothers';
$dbname='kfernandez';
session_start();
// Conectar a la base de datos
mysql_connect ($dbhost, $dbemail, $dbuserpass);
mysql_select_db($dbname) or die('Error en la b : '.mysql_error());
if ($_POST['email']) {
//Comprobacion del envio del nombre de usuario y password1
$email=$_POST['email'];
$password1=$_POST['password1'];
if ($password1==NULL) {
echo "La password1 no fue enviada";
}else{
$query = mysql_query("SELECT email,password1 FROM users WHERE email = '$email'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password1'] != $password1) {
echo "Login incorrecto";
}else{
$query = mysql_query("SELECT email,password1 FROM users WHERE email = '$email'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_email"] = $row['email'];
echo "Has sido logueado correctamente ".$_SESSION['s_email']." y puedes acceder al index.php.";
}
}
}
  #14 (permalink)  
Antiguo 20/10/2011, 07:39
Avatar de mcun  
Fecha de Ingreso: octubre-2010
Ubicación: tras la pantalla
Mensajes: 466
Antigüedad: 13 años, 6 meses
Puntos: 55
Respuesta: login problema parte de la configuracion

tienes una confusión

reemplaza este codiódigo
Código PHP:
Ver original
  1. // Configura los datos de tu cuenta
  2. $dbhost='localhost';
  3. $dbemail1='email1';
  4. $dbemail='kfernandez';
  5. $dbuserpass='brothers';
  6. $dbname='kfernandez';
  7. // Conectar a la base de datos
  8. mysql_connect ($dbhost, $dbemail, $dbuserpass);


por este

Código PHP:
Ver original
  1. session_start(); // ESTO DEBE IR SIEMPRE EN LA PRIMER LINEA ANTES QUE NADA
  2.  
  3. // Configura los datos de tu cuenta
  4. $dbhost='localhost';
  5. $dbusuario='AQUI PON EL USUARIO QUE SE CONECTA A LA BASE DE DATOS';
  6. $dbuserpass='AQUI PON LA CONTRASÑA DEL USUARIO';
  7. $dbname='AQUI EL NOMBRE DE LA BASE DE DATOS';
  8.  
  9. // Conectar a la base de datos
  10. mysql_connect ($dbhost, $dbusuario, $dbuserpass);

realiza los cambios que dice AQUI.... y veras que funciona

te acosejo que busques tambien un manual básico de php mysql para saer que estas haciendo

no puedes tocar el código si no sabes que estas tocando
  #15 (permalink)  
Antiguo 20/10/2011, 09:43
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: login problema parte de la configuracion

Ese error es porque resulta que tu campo se llama email1 y lo tienes como email.

<input type="text" name="email1" id="email1"/>

$email=$_POST['email'];
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #16 (permalink)  
Antiguo 21/10/2011, 15:42
 
Fecha de Ingreso: octubre-2011
Mensajes: 129
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: login problema parte de la configuracion

gracias forosdelweb
He conseguido realizar un registro de usuario + login :D pero ahora tngo un problema la contraseña cuando se registra es en md5 y claro si pongo la contraseña 1234 a la hora de registrarse cuando hago el login tngo que poner esto 110cf0f1672445a9053ea4c1c7e1d2b3

Y no con 1234 alguna idea de lo que puede ser?
  #17 (permalink)  
Antiguo 21/10/2011, 20:21
 
Fecha de Ingreso: abril-2011
Mensajes: 25
Antigüedad: 13 años
Puntos: 2
Respuesta: login problema parte de la configuracion

md5 es un algortimo de encriptacion de una sola direccion es decir encripta y ya no hay marcha atras no se puede desencriptar.

por lo que si al generar la contraseña la encriptas con md5 es obio que al pedirle la contraseña al usuario en el login tambien encriptes lo que mada el usuario y asi poder hacer la comparacion correctamente, ejemplo:

al registrar haces

Código PHP:
$pass=md5($_POST['campo_que_viene_de_formulario']); 
en el login haces

Código PHP:
$consulta="select * from usuarios where nombre='".$_POST['usuario']."' and clave='".md5($_POST['viene_de_form'])."'"
te recomiendo que uses sha1 ya que md5 es muy facil de adivinar con force brute y mas con diccionarios

incluso para fortalecer mas, puedes usar la funcion hash_algos() que te devuelve los algoritmos de encriptacion soportados por tu php y asi por ejemplo puedes encriptar usando la funcion hash:

Código PHP:
$encriptado=hash("haval256",$dato_a_encriptar); 
asi como sanitizar tus datos de entrada, puede que te ataquen con un code injection ya sea de sql como de php,html

usa las funciones

$limpio=mysql_real_escape_string(strip_tags($_POST['campo_x']));

*****
-------------------------------------------------
*****

Última edición por jpinedo; 21/10/2011 a las 20:53 Razón: remover firma y autopromo

Etiquetas: dreamweaver, login, sesión
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 16:18.