hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
19 de Julio de 2008, 02:22:27
Noticias: Convocatoria E-zine CPH #2
Para ver este enlace Registrate o Inicia Sesion
Aquí

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Desarrollo Web
| | |-+  Php (Moderador: shevchenko)
| | | |-+  Problema con el header
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Problema con el header  (Leído 664 veces)
Hugiogh
NZ1
*
Desconectado Desconectado

Mensajes: 71


Member, pOrtal HAcker


Ver Perfil
« : 03 de Marzo de 2008, 12:24:58 »

Hola a todos!!!

Estoy tratando de hacer una pagina web en php aunque algo cutre quiero programarla yo mismo para aprender el lenguaje php. Llevo ya bastantes horas con el mismo problema y esque en una pagina que se llama registrate.php tengo un formulario que el usuario rellena. Cuando da a enviar la accion llama a un archivo que esta dentro de la carpeta codigo que se llama comprobacion.p hp y el problema que tengo es:

if ((!isset($nombre)) or (!isset($contraseña)) or (!isset($confContraseña)))
{
   $_SESSION["error"] = 1;
   header('location: http://www.mipagina.com/registrate.php');
   exit();
}
if ($contraseña != $confContraseña)
{
   $_SESSION["error"] = 2;
   //header('location:../registrate.php');
   echo "mal";
   exit();
}

Entra en los bucles pero no consigo que redireccione otra vez a la pagina de registrate en la que mostrare un mensaje de error segun los datos alamcenados en la variable de sesion y en la que pedire que vuelva a rellenar los datos.
Mi pregunta es, cual seria la sintaxis correcta??

Muchas gracias de ante mano Wink
En línea
eriik
NZ1
*
Desconectado Desconectado

Mensajes: 99


Ver Perfil WWW
« Respuesta #1 : 07 de Marzo de 2008, 10:16:35 »

Solución:

Es un error del header, bueno, lo primero que aprendi es que headers, inicios de sesion y demás no pueden tener codigo atras, así que lo que yo te podria decir esque probaras esto:
Código:
<? $header = header("Location: www"); ?>

Porque header solo puede ponerse antes, y si no, ahora te hago un javascript para redireccionar y que te sirva en php Smiley.
En línea
Universal SAC
NZ3
***
Desconectado Desconectado

Mensajes: 652


Universal SAC


Ver Perfil
« Respuesta #2 : 07 de Marzo de 2008, 08:54:09 »

Tu código es correcto pero http es muy estricto con algunas cosas, por lo que hay que poner Location con mayúscula... si aún así no funciona cambia las comillas simples por dobles.

Para redireccionar "de regreso", es decir, al archivo que lo llamo, puedes poner la url completa (http://www.caca.x/registrate.php) o bien, hacerlo automático utilizando el REFERER (hay que tener cuidado con los bucles infinitos).
Me refiero a algo así:

Código:
header("Location: $_SERVER['REFERER']");

Saludos
« Última modificación: 07 de Marzo de 2008, 08:58:10 por Universal SAC » En línea

~UNIVERSAL[HACK]
eriik
NZ1
*
Desconectado Desconectado

Mensajes: 99


Ver Perfil WWW
« Respuesta #3 : 08 de Marzo de 2008, 12:15:07 »

Bueno, lo vuelvo a repetir ya que hay gente que no escucha, no es un problema de sintax ni nada por el estilo, hay sentencias que solo se pueden poner a principio de codigo session_start();, header();, porque php es así, por eso antes de añadir codigos html ni nada debes hacer eso, tu solución 2:

Código:
echo '<script type="text/javascript">
window.location="http://www.tuweb.com";
</script>';

Haber si te va, sino, dimelo, ami si me va.
« Última modificación: 10 de Marzo de 2008, 09:54:54 por eriik » En línea
Universal SAC
NZ3
***
Desconectado Desconectado

Mensajes: 652


Universal SAC


Ver Perfil
« Respuesta #4 : 08 de Marzo de 2008, 07:38:30 »

"porque php es así" jajajaja, me encantó esa frase.

No importa donde vaya header() mientras no se hayan terminado de enviar las cabeceras, pudiendo estar la función header() -inclusive- al final del código.

Por cierto, sigo sin "escuchar" lo que dices, jojojo
En línea

~UNIVERSAL[HACK]
eriik
NZ1
*
Desconectado Desconectado

Mensajes: 99


Ver Perfil WWW
« Respuesta #5 : 09 de Marzo de 2008, 12:30:37 »

"porque php es así" jajajaja, me encantó esa frase.

No importa donde vaya header() mientras no se hayan terminado de enviar las cabeceras, pudiendo estar la función header() -inclusive- al final del código.

Por cierto, sigo sin "escuchar" lo que dices, jojojo

:O Que gran programador, el sabe todo Smiley.
Citar
No importa donde vaya header()
Perdona que te corrija de nuevo Tongue, esque no me gusta correjir, pero aveces hay que hacerlo, te lo repito una 3ª vez, y no me importa repetirtelo 1000 veces, header si que importa donde va, no se donde has aprendido php, espero que no sea de un zpr programmer =)!
Buena suerte Universal HACK
En línea
Hugiogh
NZ1
*
Desconectado Desconectado

Mensajes: 71


Member, pOrtal HAcker


Ver Perfil
« Respuesta #6 : 10 de Marzo de 2008, 09:43:00 »

Bueno chicos, no os peleis. Perdon por no haber respondido antes y muchas gracias a todos por vuestra colaboracion. Con el codigo en javascript si que me funciona el redireccionami ento, respecto a lo del header.... supongo que si que importa donde vaya porque en mi caso solo redirecciona cuando cargo el header al principio del script... Pero bueno, si a alguien le funciona en otro lado me parece perfecto porque aqui el truco es que cada uno se busque la vida, o no??

Saludos a todos y muchas gracias!!!
En línea
eriik
NZ1
*
Desconectado Desconectado

Mensajes: 99


Ver Perfil WWW
« Respuesta #7 : 10 de Marzo de 2008, 09:45:28 »

Bueno chicos, no os peleis. Perdon por no haber respondido antes y muchas gracias a todos por vuestra colaboracion. Con el codigo en javascript si que me funciona el redireccionami ento, respecto a lo del header.... supongo que si que importa donde vaya porque en mi caso solo redirecciona cuando cargo el header al principio del script... Pero bueno, si a alguien le funciona en otro lado me parece perfecto porque aqui el truco es que cada uno se busque la vida, o no??

Saludos a todos y muchas gracias!!!

No es una discusion tranquilo, jajaja, solo es un comentario que hice para decir algo que es una realidad aunque cuesta saberla, y de nada, espero que sigas haciendo aplicaciones php, aportes, y si tienes dudas no esperas a decirlas te ayudara algun usuario de PH incluyendome en tu duda.
En línea
Universal SAC
NZ3
***
Desconectado Desconectado

Mensajes: 652


Universal SAC


Ver Perfil
« Respuesta #8 : 10 de Marzo de 2008, 08:47:58 »

Que bueno que hayas podido resolver tu problema. Aprovecho para mencionar que no suelo decir cosas cuando desconosco del asunto, que no busco problemas ni hacerme el que sé mucho, pero creo que con esa actitud no se puede hacer mucho, eriik, Como compañeros, los invito a ambos a comprobar lo que propuse.

Es más, un pequeño ejemplo:

Código:
<?php
   $popo
="http://www.portalhacker.net";
   
$imprimir="popo, caca, pipi...";
   
$imprimir.="de tin marin...";
   if(isset(
$_GET['web']) && strcmp($_GET['web'],$popo)==0){
      
header("Location: ".$_GET['web']);
      exit();
   }else{
      echo 
"<html><body><b>";
   }
   
$imprimir.="cacatua";
   echo 
$imprimir."</b></body></html>";
?>


header() no está al principio, no es lo primero en el código, antes hay declaraciones (y puede haber cualquier cosa que no requiera enviar las cabeceras al cliente). Funciona perfectamente.
En línea

~UNIVERSAL[HACK]
eriik
NZ1
*
Desconectado Desconectado

Mensajes: 99


Ver Perfil WWW
« Respuesta #9 : 10 de Marzo de 2008, 11:21:59 »

Que bueno que hayas podido resolver tu problema. Aprovecho para mencionar que no suelo decir cosas cuando desconosco del asunto, que no busco problemas ni hacerme el que sé mucho, pero creo que con esa actitud no se puede hacer mucho, eriik, Como compañeros, los invito a ambos a comprobar lo que propuse.

Es más, un pequeño ejemplo:

Código:
<?php
   $popo
="http://www.portalhacker.net";
   
$imprimir="popo, caca, pipi...";
   
$imprimir.="de tin marin...";
   if(isset(
$_GET['web']) && strcmp($_GET['web'],$popo)==0){
      
header("Location: ".$_GET['web']);
      exit();
   }else{
      echo 
"<html><body><b>";
   }
   
$imprimir.="cacatua";
   echo 
$imprimir."</b></body></html>";
?>


header() no está al principio, no es lo primero en el código, antes hay declaraciones (y puede haber cualquier cosa que no requiera enviar las cabeceras al cliente). Funciona perfectamente.

Yo en ningun momento dije que no se podia declarar nada antes de header() lo que dije esque no se podia poner codigo, prueba a poner codigo html, o echos diciendo echo "funciona?";...
En línea
Hugiogh
NZ1
*
Desconectado Desconectado

Mensajes: 71


Member, pOrtal HAcker


Ver Perfil
« Respuesta #10 : 11 de Marzo de 2008, 12:07:54 »

Tienes razon Universal SAC, ese script funciona pero en mi pagina no funcionaba. Debe ser porque al cambiar el valor de la variable de sesion este mandando datos de salida y por eso no carga la pagina o sino no lo se, pero en todo caso teneis los dos razon. Tu porque has demostrado que funciona aunque no este al principio y eriik por decir que no funciona si se han enviado datos de salida y eso es lo que sirve para aprender y yo lo he aprendido y lo he aplicado en mi super cutre pagina web, jaja. Es lo que tiene aprender que habra mas bug que otra cosa pero poco a poco, jeje.

Salduos a todos y muchisimas gracias a los dos. Seguramente siga con muchisimas dudas porque ahora voy a la conexion a la base de datos... Gracias!!!
En línea
Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online