Foros del Web » Programando para Internet » PHP »

funcion vinculo

Estas en el tema de funcion vinculo en el foro de PHP en Foros del Web. Hay alguna función en PHP para que redireccione a una web segun el resultado obtenido de un IF x ejemplo?¿ o como se deberia acer?...
  #1 (permalink)  
Antiguo 15/07/2003, 13:29
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 22 años, 4 meses
Puntos: 1
Pregunta funcion vinculo

Hay alguna función en PHP para que redireccione a una web segun el resultado obtenido de un IF x ejemplo?¿ o como se deberia acer?
  #2 (permalink)  
Antiguo 15/07/2003, 13:38
Avatar de temaqueja  
Fecha de Ingreso: agosto-2002
Ubicación: /dev/null/
Mensajes: 399
Antigüedad: 22 años, 3 meses
Puntos: 4
Puedes usar header, ejemplo:


--------inicia la pagina-----------------
<?
... codigo y mas codigo ...

if($condicion) {
header("Location: http://www.paginanueva.com/algo.htm");
} else {
header("Location: miotrapagina.php");
}

?>

La contrariedad es que NO debes haber lanzado ningun texto hacia el navegador (usando echo, print, entre otros) antes de usar header (ni siquiera espacios en blanco)antes del tag <? inicial de la página.
__________________
_________________________
La computadora nació para resolver problemas que antes no existían
  #3 (permalink)  
Antiguo 15/07/2003, 15:23
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 22 años, 4 meses
Puntos: 1
Lo e puesto antes del <html> y me salía este error.
Warning: Cannot modify header information - headers already sent by (output started at C:\ironweb\serveralum\klorostudio\anadira2.php:3)
  #4 (permalink)  
Antiguo 15/07/2003, 15:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Te esta diciendo que enviaste salida al navegador en la linea 3 de anadira2.php . Como ya te ha dicho temaqueja, no se puede enviar nada antes de header("location").

Yo añadiria que es mas seguro poner un exit; despues del header("Location"), para asegurar que no se ejecuta nada mas del script:
Código PHP:
<?
... codigo y mas codigo ...

if(
$condicion) {
header("Location: [url]http://www.paginanueva.com/algo.htm[/url]");
exit;
} else {
header("Location: miotrapagina.php");
exit;
}
?>
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 15/07/2003, 17:08
Avatar de Pandragon  
Fecha de Ingreso: abril-2003
Ubicación: Alicante - España
Mensajes: 66
Antigüedad: 21 años, 7 meses
Puntos: 0
Retomando el tema, a mi me sucede algo parecido en un script.

Tengo alojado un script en dos dominios diferentes, en el primero tengo instalado php 4.2 y en el segundo php 4.1.

En el primero el script me funciona perfectamente, pero en el segundo me da el siguiente error:

Cita:
Warning: Cannot add header information - headers already sent by (output started at /usr/local/psa/home/vhosts/tuningwarez.com/httpdocs/modules/top_tueMule/class.mstopsites.php:334) in /usr/local/psa/home/vhosts/tuningwarez.com/httpdocs/modules/top_tueMule/in.php on line 123
la linea donde da error contiene:

Código PHP:
header"Location: $url" ); 
No se ejecuta ningún echo antes
  #6 (permalink)  
Antiguo 15/07/2003, 17:59
Avatar de temaqueja  
Fecha de Ingreso: agosto-2002
Ubicación: /dev/null/
Mensajes: 399
Antigüedad: 22 años, 3 meses
Puntos: 4
Cita:
Mensaje Original por Pandragon
Retomando el tema, a mi me sucede algo parecido en un script.

Tengo alojado un script en dos dominios diferentes, en el primero tengo instalado php 4.2 y en el segundo php 4.1.
.......
No se ejecuta ningún echo antes
Tal vez haya una linea en blanco o un espacio antes del "<? " al inicio del archivo, aunque no lo creas, ese salto de linea o espacio en blanco tiene la culpa...

P.D.: Tambien podria tener la culpa algun script que tu proveedor de hosting ejecuta antes que tu pagina, pero eso solamente ocurre en servers gratuitos que levantan banners o cosas parecidas.
__________________
_________________________
La computadora nació para resolver problemas que antes no existían
  #7 (permalink)  
Antiguo 15/07/2003, 18:05
Avatar de Pandragon  
Fecha de Ingreso: abril-2003
Ubicación: Alicante - España
Mensajes: 66
Antigüedad: 21 años, 7 meses
Puntos: 0
no, ninguno de los dos casos.

Ya he dicho que el script es exactamente el mismo, he subido los mismos archivos, pero en un hosting funciona y en otro no. Y los dos hosting son de pago y no ejecuto ningun pop up ni nada por el estilo.

Es lo que me vuelve loco, por que funciona en un server y en otro no, he pensado que quizá sería por las diferencias de versiones de php, en el que funciona tiene la version 4.2 y en el que no funciona la 4.1.

A excepción de esa no hay otra diferencia.

Gracias.
  #8 (permalink)  
Antiguo 15/07/2003, 18:22
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 9 meses
Puntos: 5
Pues revisando el error me doy cuenta que el problema no esta en tu archivo, sino en alguna clase externa que estas llamando (class.mstopsites.php), es probable que esa clase tenga alguna función no soportada por PHP 4.1 y que te mande un "WARNING" o "NOTICE", y como ese llamado a clase está antes del header, pues el simple echo de mandar un mensaje de warning provoca el envío automático de los headers...

Revisa esa classe...

__________________
Manoloweb
  #9 (permalink)  
Antiguo 15/07/2003, 18:23
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 9 meses
Puntos: 5
PD, al parecer es la linea 334 de la classe (class.mstopsites.php:334)
__________________
Manoloweb
  #10 (permalink)  
Antiguo 16/07/2003, 02:44
Avatar de Pandragon  
Fecha de Ingreso: abril-2003
Ubicación: Alicante - España
Mensajes: 66
Antigüedad: 21 años, 7 meses
Puntos: 0
Gracias Manolo, perdona mi desconocimiento pero me inicié hace poco tiempo en PHP y lo hice con la versión 4.2.

Según tengo entendido, por lo que he leido en estos foros, una de las novedades de la v4.2 era el uso de variables globales o superglobales.

Creo que por ahí es por donde me está fallando, pues el archivo class.mstopsites es un fichero de funciones y utilizo arrays y la instrucción global.

La pregunta es ¿la instrucción global está permitida por 4.1?

Una vez mas gracias
  #11 (permalink)  
Antiguo 16/07/2003, 08:23
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 9 meses
Puntos: 5
Si, si está soportada...

Que tienes en la linea 334?
__________________
Manoloweb
  #12 (permalink)  
Antiguo 16/07/2003, 11:14
Avatar de Pandragon  
Fecha de Ingreso: abril-2003
Ubicación: Alicante - España
Mensajes: 66
Antigüedad: 21 años, 7 meses
Puntos: 0


Pues aunque no te lo creas:

Código PHP:
?> 
En esa línea es donde termina el fichero.
  #13 (permalink)  
Antiguo 16/07/2003, 11:28
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 9 meses
Puntos: 5
Pues ahora fijate si despues del ?> no hay algun espacio en blanco, ya que eso podría causar la famosa salida HTML que no está permitiendo el posterior envío de los headers...

O bien, en tu classe puede haber alguna falta de algun ; ó } que esten reflejandose en un error al final del archivo, y ese error es el que te está mandando el problema...
__________________
Manoloweb
  #14 (permalink)  
Antiguo 16/07/2003, 11:59
Avatar de Pandragon  
Fecha de Ingreso: abril-2003
Ubicación: Alicante - España
Mensajes: 66
Antigüedad: 21 años, 7 meses
Puntos: 0
Pues me he fijado y no existe ningún espacio en blanco y tampoco se trata de un error de sintaxis pues no ocurre ninguno en el otro hosting.
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 21:48.