Foros del Web » Programando para Internet » PHP »

Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

Estas en el tema de Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta en el foro de PHP en Foros del Web. Hola amigos , Resulta que en el login de mi web hay un header para redirigir, cuando redirige voy a la web desde la que ...
  #1 (permalink)  
Antiguo 22/02/2014, 15:07
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años
Puntos: 1
Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

Hola amigos ,
Resulta que en el login de mi web hay un header para redirigir, cuando redirige voy a la web desde la que viene el usuario, ¿El problema?, cuando redirijo voy a:
Código:
header("Location: " . $_SERVER['HTTP_REFERER'] . "?error=1");
Y si entro desde la web de:
miweb.com/noticia.php?id=5

Cuando me logueo me redirije :

miweb.com/noticia.php?id=5?error=1

Y esto me provoca un error ya que debería ser:

miweb.com/noticia.php?id=5&error=1

¿Cómo corrijo este pequeño error?

Muchas Gracias y Un saludo! :D
  #2 (permalink)  
Antiguo 22/02/2014, 17:03
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

Una solución rápida, pero no es la única.

Código PHP:
Ver original
  1. $direccion = substr($_SERVER['HTTP_REFERER'], 0, strpos($_SERVER['HTTP_REFERER'], '?')) . '?error=1';
  2. header("Location: $direccion");

Con la función substr, tomo la porción de la dirección desde el primer caracter hasta la posición en la que se encuentre el símbolo ?, el cual obtengo utilizando la función strpos.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 23/02/2014, 04:36
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

Hola Alexis ,
No busco el reemplazar, ahora lo que me hace es que si entro desde:

miweb.com/noticia.php?id=5

lo que hace es sustituir el id por el error:

miweb.com/noticia.php?error=1

Y quiero que si detecta que hay un ? en la url añada un & y si nos sea ?, así cuando entre desde:

miweb.com/index.php

sea:

miweb.com/index.php?error=1

y si es desde:

miweb.com/noticia.php?id=1

sea:

miweb.com/noticia.php?id=1&error=1

Disculpa si me he expresado mal en mi post XD, y si esto es un poco lioso pero no hay otra forma de explicarlo :S XD :)

¡Un saludo y Muchas Gracias! :D
  #4 (permalink)  
Antiguo 23/02/2014, 08:47
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

Si lo hubieras explicado así desde un inicio, hubiera sido más sencillo:

Código PHP:
Ver original
  1. $url = $_SERVER['HTTP_REFERER'];
  2. header ("Location: " . strpos($url, '?') > -1 ? $url . '&error=1' : $url . '?error=1');

Con la función strpos, obtenemos la posición del ? en la cadena; cuando no está presente, la función devuelve -1, por eso coloco en la condición que si el valor devuelto es mayor a -1, o sea que sí está presente el ?, se añada a la dirección el &error=1, caso contrario, es decir, si no está presente el ?, se añade el ?error=1.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 24/02/2014, 07:55
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

Hola Alexis,
Al colocarlo no me redirije a la página. :/ he revisado el código y parece estar bien escrito.

¡Un saludo!
  #6 (permalink)  
Antiguo 24/02/2014, 11:11
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

Coloca acá el código que has escrito para ver en qué estás fallando.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 24/02/2014, 14:11
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

Código:
<?php 
session_start();
include("configuracion.php");
if($_SESSION['logueado']==0) {
	if($_POST['usuario']!=NULL) {
		if($_POST['contrasena']!=NULL) {
			$usuario = $_POST['usuario'];
			$contrasena = md5($_POST['contrasena']);
			$comprobar_usuario = mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario'");
			if(mysql_num_rows($comprobar_usuario)==1){
				$comprobar_contrasena = mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario' and contrasena='$contrasena'");
				if(mysql_num_rows($comprobar_contrasena)==1){
					while ($datos = mysql_fetch_array($comprobar_contrasena)) {
						$idusuario = $datos['id'];
						$comprobar_activacion = mysql_query("SELECT * FROM activacion_usuarios WHERE id_usuario='$idusuario'");
						if(mysql_num_rows($comprobar_activacion)==0){
							$comprobar_desactivacion = mysql_query("SELECT * FROM usuarios WHERE id='$idusuario' and desactivado='1'");
							if(mysql_num_rows($comprobar_desactivacion)==0){
								$fecha = date('d/m/Y');
								mysql_query("UPDATE usuarios SET ultima_conexion = '$fecha' WHERE id = '$idusuario'");
								$_SESSION['logueado'] = 1;
								$_SESSION['idusuario'] = $datos['id'];
								header("Location: " . $_SERVER['HTTP_REFERER']);
							} else {
								header("Location: index.php?mensaje=desactivado");
							}
						} else {
							header("Location: index.php?mensaje=noactivado");
						}
					}
				} else {
					header("Location: index.php?mensaje=errorcontrasena");
				}
			} else {
				$url = $_SERVER['HTTP_REFERER'];
				header ("Location: " . strpos($url, '?') > -1 ? $url . '&mensaje=errorusuario' : $url . '?mensaje=errorusuario');
			}
		} else {
			header("Location: index.php?mensaje=faltacontrasena");
		}
	} else {
		//$direccion = substr($_SERVER['HTTP_REFERER'], 0, strpos($_SERVER['HTTP_REFERER'], '?')) . '&mensaje=faltausuario';
		header("Location: index.php?mensaje=faltausuario");
	}
} else {
	header("Location: index.php?seguridad=anti-clones");
}
?>
  #8 (permalink)  
Antiguo 24/02/2014, 15:12
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

Un pequeño error, debió ser así:

Código PHP:
Ver original
  1. $url = $_SERVER['HTTP_REFERER'];
  2. header ("Location: " . strpos($url, '?') !== false ? $url . '&mensaje=errorusuario' : $url . '?mensaje=errorusuario');

Por otro lado, quisiera que por favor imprimas la siguiente línea y coloques aquí el resultado.

Código PHP:
Ver original
  1. echo "Location: " . strpos($url, '?') !== false ? $url . '&mensaje=errorusuario' : $url . '?mensaje=errorusuario';

Aparentemente todo está bien, sin embargo, imprimiendo esta línea podemos salir de dudas al respecto.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 25/02/2014, 09:07
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

Hola alexis ,
Con el primer codigo que me has escrito me sucedió lo mismo la otra vez, se me queda en blanco, luego he escrito el de echo y me sale bien, pero si entro desde una url que no tiene ? me vuelve con & :/

Un saludo.
  #10 (permalink)  
Antiguo 25/02/2014, 11:16
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

Cita:
Iniciado por alejandromaringomez Ver Mensaje
pero si entro desde una url que no tiene ?
¿Que no tiene qué?, ojo, en esa línea de código se busca la aparición de un ?, por ejemplo www.ejemplo.com/index.php?foo=baz. Si se encuentra el ?, entonces se concatena &mensaje=errorusuario a la URI, pero si no hubiera un ?, por ejemplo www.ejemplo.com/index.php, se concatena ?mensaje=errorusuario.

Cuando haces la redirección y la página queda en blanco, ¿se muestra la URL correcta en la barra de direcciones?.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 11/03/2014, 15:11
 
Fecha de Ingreso: marzo-2014
Ubicación: Sevilla
Mensajes: 3
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Problema de: tuweb.com/index.php?id=5?contraseña=incorrecta

usa esto: &
metokas la moral

Etiquetas: Ninguno
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 17:18.