Foros del Web » Programando para Internet » PHP »

Redireccion - Ayuda

Estas en el tema de Redireccion - Ayuda en el foro de PHP en Foros del Web. Tengo el siguiente codidgo, que comprueba un login y un password: <?php session_start(); // modificacion de codigo Xombra ( www.xombra.com ) 21/03/2009 para sectorweb.net include("config.php"); ...
  #1 (permalink)  
Antiguo 13/11/2009, 15:35
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Redireccion - Ayuda

Tengo el siguiente codidgo, que comprueba un login y un password:

<?php
session_start();
// modificacion de codigo Xombra (www.xombra.com) 21/03/2009 para sectorweb.net
include("config.php");
$login = htmlspecialchars(trim($_POST['login']));
$pass = sha1(md5(trim($_POST['pass']))); // encriptamos en MD5 para despues comprar (Modificado)
// $query="SELECT * FROM usuarios WHERE login='$login'"; Antes
$link=mysql_connect($server,$dbuser,$dbpass);

$query = sprintf("SELECT usuarios.login,
usuarios.nombre,
usuarios.apellido,
usuarios.empresa,
usuarios.email
FROM usuarios WHERE usuarios.login='%s' && usuarios.password = '%s'", // Ahora
mysql_real_escape_string($login),mysql_real_escape _string($pass));
$result=mysql_db_query($database,$query,$link);
// if(mysql_num_rows($result)==0){ // antes
if(mysql_num_rows($result)){ // nos devuelve 1 si encontro el usuario y el password

$array=mysql_fetch_array($result);
// if($array["password"]==crypt($pass,"semilla") ){ // Antes
/* Comprobamos que el password encriptado en la BD coincide con el password que nos han dado al encriptarlo. Recuerda usar semilla para encriptar los dos passwords. */
$_SESSION["login"]=$array["login"];
$_SESSION["nombre"]=$array["nombre"];
$_SESSION["apellido"]=$array["apellido"];
$_SESSION["empresa"]=$array["empresa"];
$_SESSION["email"]=$array["email"]; // Agrgado Nuevo
header("Location:user.php");
} else {
echo "Login o Password Incorrectos"; // Ahora
}

?>

Ahora necesito que una vez comprobado el login, el usuario sea redirigido a una url que se encuentra en la base de datos (asi lo pense yo). El tema es que no se como recuperar la url de la base de datos, y ejecutarla en el header. Intente con select para recuperar y con la siguiente funcion en el header:

header("Location: " . mysql_result($datos, 0, 3); // pero me arroja que esta mal la columna. No se que mas intentar , algo de ayuda please!!!
  #2 (permalink)  
Antiguo 13/11/2009, 20:09
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: Redireccion - Ayuda

de donde tomas $datos? te agradeceria editaras tu post y pusieras el las etiketas correpsondientes en codigo php para apreciarlo mejor
__________________
Hospedaje Web al mejor costo!
  #3 (permalink)  
Antiguo 14/11/2009, 17:22
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Redireccion - Ayuda

Cita:
Iniciado por urgido Ver Mensaje
de donde tomas $datos? te agradeceria editaras tu post y pusieras el las etiketas correpsondientes en codigo php para apreciarlo mejor
Cambie el valor $datos por $result, pero de todas maneras me arroja que esta mal la columna (el valor $datos era el de un sript que vi en internet)...basicamente necesito saber que modificar en header para tomar el valor del campo url de la base de datos y ejecutarla. Ajdunto la sentencia sql de la base de datos:

CREATE TABLE usuarios(
`id` int( 4 ) NOT NULL AUTO_INCREMENT ,
`nombre` text,
`apellido` text,
`empresa` text,
`login` varchar( 40 ) NOT NULL ,
`password` varchar( 80 ) NOT NULL ,
`email` text,
`url` text,
UNIQUE KEY ( id )
);
  #4 (permalink)  
Antiguo 14/11/2009, 17:33
Avatar de mauro_bernal_rios  
Fecha de Ingreso: abril-2008
Ubicación: Mendoza
Mensajes: 88
Antigüedad: 16 años
Puntos: 2
Respuesta: Redireccion - Ayuda

No se si entendi mal... Pero basicamente $array=mysql_fetch_array($result); aqui obtienes el resultado de tu consulta...
De la misma forma que obtienes cada uno de los datos del usuario:

$array["login"];
$array["nombre"];

...

Deberias obtener $array["url"];

Es decir que te quedaría asi:

header("Location:$array['url']");

Pruebalo y cualquier cosa me avisas...
__________________
Mauro Bernal
Sistemas y Web
http://maurobernal.com.ar
[email protected]
  #5 (permalink)  
Antiguo 14/11/2009, 18:38
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Redireccion - Ayuda

Mauro: Probe tu idea y no me funciono...basicamente me arroja un error en la linea 30 (la correspondiente al header).


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in H:\AppServ\www\folders\comprueba.php on line 30
  #6 (permalink)  
Antiguo 14/11/2009, 18:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Redireccion - Ayuda

Cita:
Iniciado por chuekeron Ver Mensaje
Mauro: Probe tu idea y no me funciono...basicamente me arroja un error en la linea 30 (la correspondiente al header).


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in H:\AppServ\www\folders\comprueba.php on line 30
¿pues como lo haces??

porque obviamente la respuesta es correcta, pero no lo estas haciendo bien...


¿quieres que adivinemos el código?? ¿o que???

aunque te adelanto, tienes problemas con comillas...

puedes leer el siguiente enlace, te ayuda a utilizarlas como debe ser...
- http://www.forosdelweb.com/f18/como-...1/#post2414268
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 14/11/2009, 19:20
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Redireccion - Ayuda

Cita:
Iniciado por pateketrueke Ver Mensaje

¿quieres que adivinemos el código?? ¿o que???

puedes leer el siguiente enlace, te ayuda a utilizarlas como debe ser...
- http://www.forosdelweb.com/f18/como-...1/#post2414268
Este es el codigo:

<?php
session_start();
// modificacion de codigo Xombra (www.xombra.com) 21/03/2009 para sectorweb.net
include("config.php");
$login = htmlspecialchars(trim($_POST['login']));
$pass = sha1(md5(trim($_POST['pass']))); // encriptamos en MD5 para despues comprar (Modificado)
// $query="SELECT * FROM usuarios WHERE login='$login'"; Antes
$link=mysql_connect($server,$dbuser,$dbpass);

$query = sprintf("SELECT usuarios.login,
usuarios.nombre,
usuarios.apellido,
usuarios.empresa,
usuarios.email
FROM usuarios WHERE usuarios.login='%s' && usuarios.password = '%s'", // Ahora
mysql_real_escape_string($login),mysql_real_escape _string($pass));
$result=mysql_db_query($database,$query,$link);
// if(mysql_num_rows($result)==0){ // antes
if(mysql_num_rows($result)){ // nos devuelve 1 si encontro el usuario y el password

$array=mysql_fetch_array($result);
if($array["password"]==crypt($pass,"semilla") ){
/* Comprobamos que el password encriptado en la BD coincide con el password que nos han dado al encriptarlo. Recuerda usar semilla para encriptar los dos passwords. */
$_SESSION["login"]=$array["login"]; // cambie por ['login']=$array['login'];
$_SESSION["nombre"]=$array["nombre"];
$_SESSION["apellido"]=$array["apellido"];
$_SESSION["empresa"]=$array["empresa"];
$_SESSION["email"]=$array["email"];
$_SESSION["url"]=$array["url"];
header("Location:$array['url']");
} else {
echo "Login o Password Incorrectos";
}

?>

Respecto al uso de las comillas, lei el post...y sino lo malinterprete, cambie las comillas dobles (ej: $_SESSION["nombre"]=$array["nombre"];) por simples. Y no funciono...
  #8 (permalink)  
Antiguo 14/11/2009, 19:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Redireccion - Ayuda

Cita:
Iniciado por chuekeron Ver Mensaje
[...] Respecto al uso de las comillas, lei el post...y sino lo malinterprete, cambie las comillas dobles (ej: $_SESSION["nombre"]=$array["nombre"];) por simples. Y no funciono...
definitivamente estas haciendolo mal... o no sabes leer bien...

el problema es que no puedes leer una array() de esa forma... el tema que te puse explica todo eso..

analiza, es simple:
Código PHP:
// MAL
$foo "candy $bar['does']";

// BIEN (etc, etc...)
$foo "candy {$bar['does']}";
$foo "candy " $bar['does'];
$foo "candy $bar[does]";
$foo sprintf("candy %s"$bar['does']); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 15/11/2009, 09:30
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Redireccion - Ayuda

Ya lo intente todo, y la verdad que no encuentro solucion. He cambiado el codigo mil veces (evidentemente no en la forma correcta), y la verdad que ya me aburri. Vengo tratando de realizar esto desde hace cuatro dias.
No es que pretenda no hacerlo, pero ya lo pense de mil formas y dentro de lo poco que conozco sobre PHP hice todo lo que pude. Si alguien tiene una respuesta consisa, se lo agradezco de alma...
  #10 (permalink)  
Antiguo 15/11/2009, 09:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Redireccion - Ayuda

Cita:
Iniciado por chuekeron Ver Mensaje
[...] Si alguien tiene una respuesta consisa, se lo agradezco de alma...
puedes mostrar tu código como lo tienes ahora??

por que lo mas sencillo es que usaras llaves al rededor de la variable...
Código PHP:
header("Location:{$array['url']}"); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 15/11/2009, 22:00
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Redireccion - Ayuda

Cita:
Iniciado por pateketrueke Ver Mensaje
puedes mostrar tu código como lo tienes ahora??

por que lo mas sencillo es que usaras llaves al rededor de la variable...
Código PHP:
header("Location:{$array['url']}"); 
<?php
session_start();
// modificacion de codigo Xombra (www.xombra.com) 21/03/2009 para sectorweb.net
include("config.php");
$login = htmlspecialchars(trim($_POST['login']));
$pass = sha1(md5(trim($_POST['pass']))); // encriptamos en MD5 para despues comprar (Modificado)
// $query="SELECT * FROM usuarios WHERE login='$login'"; Antes
$link=mysql_connect($server,$dbuser,$dbpass);

$query = sprintf("SELECT usuarios.login,
usuarios.nombre,
usuarios.apellido,
usuarios.empresa,
usuarios.email
FROM usuarios WHERE usuarios.login='%s' && usuarios.password = '%s'", // Ahora
mysql_real_escape_string($login),mysql_real_escape _string($pass));
$result=mysql_db_query($database,$query,$link);
// if(mysql_num_rows($result)==0){ // antes
if(mysql_num_rows($result)){ // nos devuelve 1 si encontro el usuario y el password

$array=mysql_fetch_array($result);
// if($array["password"]==crypt($pass,"semilla") ){ // Antes
/* Comprobamos que el password encriptado en la BD coincide con el password que nos han dado al encriptarlo. Recuerda usar semilla para encriptar los dos passwords. */
$_SESSION["login"]=$array["login"];
$_SESSION["nombre"]=$array["nombre"];
$_SESSION["apellido"]=$array["apellido"];
$_SESSION["empresa"]=$array["empresa"];
$_SESSION["email"]=$array["email"]; // Agrgado Nuevo
$_SESSION["url"]=$array["url"];
header("Location:{$array['url']}");
} else {
echo "Login o Password Incorrectos"; // Ahora
}

?>

Tal como me recomendaste, ya habia probado poner las llaves en el header luego de leer tu post sobre las comillas, pero en ese caso cuando ingreso el usuario y la contraseña la pagina queda en blanco, y la url en el navegador queda en http://localhost/folders/comprueba.php, que es donde se encuentra el codigo en cuestion. Pense que tal vez no esta tomando bien el campo url de la base de datos, y entonces agregue usuarios.url en el SELECT, pero en ese caso me arroja el siguiente error:


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in H:\AppServ\www\folders\comprueba.php on line 20
Login o Password Incorrectos
  #12 (permalink)  
Antiguo 15/11/2009, 22:22
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Redireccion - Ayuda

SIIII!!!! Finalmente encontre la solucion. Claro que tenia que agregar en el SELECT el campo url, y colocar el header como aconsejo Mauro Bernal Rios y pateketrueke (a este ultimo le doy mil gracias por su atencion y perseverancia en mi falta de conocimiento sobre PHP). El Warning: mysql_num_rows(): lo arrojaba por un motivo simple y estupido por culpa de mi descuido, ademas de ser novato en PHP. Simplemente no colocaba la coma en el SELECT a usuarios.mail
Finalmente el codigo quedo asi:

<?php
session_start();
// modificacion de codigo Xombra (www.xombra.com) 21/03/2009 para sectorweb.net
include("config.php");
$login = htmlspecialchars(trim($_POST['login']));
$pass = sha1(md5(trim($_POST['pass']))); // encriptamos en MD5 para despues comprar (Modificado)
// $query="SELECT * FROM usuarios WHERE login='$login'"; Antes
$link=mysql_connect($server,$dbuser,$dbpass);

$query = sprintf("SELECT usuarios.login,
usuarios.nombre,
usuarios.apellido,
usuarios.empresa,
usuarios.email,
usuarios.url
FROM usuarios WHERE usuarios.login='%s' && usuarios.password = '%s'", // Ahora
mysql_real_escape_string($login),mysql_real_escape _string($pass));
$result=mysql_db_query($database,$query,$link);
// if(mysql_num_rows($result)==0){ // antes
if(mysql_num_rows($result)){ // nos devuelve 1 si encontro el usuario y el password

$array=mysql_fetch_array($result);
// if($array["password"]==crypt($pass,"semilla") ){ // Antes
/* Comprobamos que el password encriptado en la BD coincide con el password que nos han dado al encriptarlo. Recuerda usar semilla para encriptar los dos passwords. */
$_SESSION["login"]=$array["login"];
$_SESSION["nombre"]=$array["nombre"];
$_SESSION["apellido"]=$array["apellido"];
$_SESSION["empresa"]=$array["empresa"];
$_SESSION["email"]=$array["email"]; // Agrgado Nuevo
$_SESSION["url"]=$array["url"];
header("Location:{$array['url']}");
} else {
echo "Login o Password Incorrectos"; // Ahora
}

?>

Mil gracias de nuevo y saludos!
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 00:49.