Foros del Web » Programando para Internet » PHP »

redireccionar desde php

Estas en el tema de redireccionar desde php en el foro de PHP en Foros del Web. Quiero hacer un alert y después de éste redireccionar a otra página. Ya me he enterado de que el alert lo tengo que hacer con ...
  #1 (permalink)  
Antiguo 20/09/2009, 14:42
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
redireccionar desde php

Quiero hacer un alert y después de éste redireccionar a otra página. Ya me he enterado de que el alert lo tengo que hacer con javascript, y ya he aprendidido a hacerlo, haciendo un echo y metiendo en él la llamada a javascript.

Por otro lado, he aprendido a redireccionar desde php con header, pero no se puede hacer esto después de haber escrito algo en la página. Como no se puede hacer después del echo, no puedo usar header después del alert, ya que éste lo hago por medio de un echo.

La solución que se me ocurre es redireccionar por medio de javascript, evitando así la restricción del header de no poderlo usar después de un echo.

El código para redirecconar sería por ejemplo:
Código:
<html>
<?php
echo "
<script language='JavaScript'>
location.href = "http://ctdp.tripod.com/"
</script>";
?>
</html>
el resultado es:


Parse error: parse error, expecting `','' or `';'' in C:\xampp\htdocs\imagenes\prueba.php on line 5
  #2 (permalink)  
Antiguo 20/09/2009, 14:48
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 15 años, 6 meses
Puntos: 7
Respuesta: redireccionar desde php

es error de sintaxis amigo, si te fijas, tienes comillas dobles en la linea 5

location.href = "http://ctdp.tripod.com/"

tenes que escapar esas comillas, seria asi: location.href = \"http://ctdp.tripod.com/\"

has aprendido usar header y todo eso, pero no a algo basico, escapar comillas xDDDDDD
  #3 (permalink)  
Antiguo 20/09/2009, 20:41
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 2 meses
Puntos: 7
Respuesta: redireccionar desde php

@PacoRuiz, aunque JS es una gran herramienta de apoyo, para cosas como esta no lo recomendaria. Que tal si usas meta refresh ??

Código PHP:
<?php echo '<meta http-equiv="Refresh" content="0;URL=pagina.php">'?>
El meta refresh te da la ventaja de la pausa por la cantidad de segundos que le indiques, tiempo que puedes usar para halar cualquier JS o lo que quieras. Aunque de todos modos puedes usar a header, con el que no tendras pausa en la carga:

Código PHP:
<?php header("Location: pagina.php"); ?>
__________________
JuniHH
- Mi blog
- Mi portafolio
  #4 (permalink)  
Antiguo 21/09/2009, 08:30
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Respuesta: redireccionar desde php

Ok, lo entiendo, y no lo conocía, pero, si no lo he entendido mal, creo que no me vale para lo que yo quiero, porque tendría que estar en la cabecera y simplemente podría ponerle un tiempo antes de que redirija a otro sitio, y yo quiero un alert.

Con la opción anterior tengo lo que quería.
  #5 (permalink)  
Antiguo 21/09/2009, 09:07
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Respuesta: redireccionar desde php

Y he escapado las comillas. Este es el codigo resultante:

Código:
echo "
<script language='JavaScript'>
var prueba = 'prueba';
alert(prueba);
location.href = \"http://localhost/imagenes/forminsert_tipo.php\"
</script>";
Este código está dentro de un fichero llamado insert_tipo.php, que es llamado desde un formulario llamado forminsert_tipo.php, que es precisamente la página a donde se redirecciona desde inset_tipo.php

Ambos ficheros están en la misma carpeta imágenes. Cuando completo el formulario forminsert_tipo.php,, me aparece en la barra de direcciones:

http://localhost/imagenes/forminsert...nsert_tipo.php

Que no corresponde realmente a ningún fichero. Si elimino el código anterior de la página insert_tipo.php, me funciona bien el formulario de forminsert_tipo.php y me manda a insert_tipo.php

para mí esto no tiene ningún sentido ya que el fichero a donde te dirije el formulario debería ser cosa del código del formulario, no del fichero receptor.

Voy a incluir los dos cñodigos completos por si queréis mirar algo:

forminsert_tipo.php
Código:
<html>
<br><br><br>
<form action="insert_tipo.php" method="POST">
Descripción: <input type ="text" name ="descrip"><br>
Padres (Si el tipo tiene varios padres sepáralos por comas): &nbsp <input type ="text" name ="padres"><br>
Hijos (Si el tipo tiene varios hijos sepáralos por comas): &nbsp &nbsp  <input type ="text" name ="hijos"><br><br><br>
<input type ="submit" value ="ENVIAR"><BR><BR>

</form>

<?php
/*esto simplemente muestra una clasificación. No afecta al formulario*/
INCLUDE 'libreria.php';
muestraclasif();

?>

</html>
insert_tipo.php
Código:
<?php
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$postpadres=$_POST['padres'];
$posthijos=$_POST['hijos'];
$descrip=$_POST['descrip'];
$padres=explode(',',$postpadres);
$hijos=explode(',',$posthijos);


mysql_query("insert into tipos (descripcion) VALUES ('$descrip')");
$result=mysql_query("SELECT MAX(IDtipo) AS ult_id FROM tipos");  
$ultimo=mysql_result($result,0);
foreach($padres as $elemento){
    if ($elemento){
    mysql_query("insert into jerarquia (tipo, padre) VALUES ('$ultimo','$elemento')");
    
    }
}
foreach($hijos as $elemento){
    if ($elemento){
    mysql_query("insert into jerarquia (tipo, padre) VALUES ('$elemento','$ultimo')");
    
    }
}
echo "
<script language='JavaScript'>
var prueba = 'prueba';
alert(prueba);
location.href = \"http://localhost/imagenes/forminsert_tipo.php\";
</script>";

?>
  #6 (permalink)  
Antiguo 21/06/2010, 08:59
 
Fecha de Ingreso: junio-2010
Mensajes: 16
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: redireccionar desde php

Buenos días, tengo un problemita con redireccionamiento también, es el siguiente: hay 2 tipos de usuario que pueden entrar a la página, personas o departamentos completos, por lo tanto un if con 2 else, si no esta en la tabla de persona (usuario) lo busca en la tabla de departamento. cuando es un usuario se redirecciona bien a empresa.php, pero cuando pasa al else busca bien al departamento y trae los datos de sesión pero no me redirecciona a la página empresa.php sino que me deja en el index. No entiendo porque si es el mismo código funciona la primera vez pero después que pasa el else no funciona.
No se si se entiende bien el problema, de todas formas ahi les dejo el código a ver si alguien puede ayudarme


<?
session_start();

include("includes/conexion.php");

$accion=0;
$cs=0;

if(isset($_POST["accion"])) $accion=$_POST["accion"];
echo $accion;

if($accion==1) //inicio de sesion.
{
$usuario=$_POST["usuario"];
$contrasena=$_POST["contrasena"];
$log=mysql_query("select id, nombre, usuario, password, idDepartamento from usuario where usuario='$usuario' and password='$contrasena'");

$login=mysql_fetch_object($log);
echo "Antes del usuario";
if($usuario==$login->usuario && $contrasena==$login->password)
{ echo "\n entro a usuario";
$_SESSION["usuario"]=$login->usuario;
$_SESSION["idUsuario"]=$login->id;
$_SESSION["departamento"]=$login->idDepartamento;
$_SESSION["nombreUsuario"]=$login->nombre;
echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL=empresa.php">';
/* header ("Location: empresa.php");
exit();*/
}
else
{ $login="0";
$log="0";
$log=mysql_query("select id, nombre, idEmpresa, usuario, clave from departamento where usuario='$usuario' and clave='$contrasena'");
$login=mysql_fetch_object($log);
if($usuario==$login->usuario && $contrasena==$login->clave)
{
$_SESSION["usuarioDepartamento"]=$login->usuario;
$_SESSION["empresa"]=$login->idEmpresa;
$_SESSION["nombreDepartamento"]=$login->nombre;
echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL=empresa.php">';
/* header ("Location: empresa.php");
exit();*/
}
else
echo "<script>alert('Los datos introducidos son incorrectos, por favor intente de nuevo')</script>";
}
}

if(isset($_GET["cs"])) $cs=$_GET["cs"];
echo $cs;
if($cs==1)
{session_destroy(); // destruyo la sesión
//header("Location: index.php");
}
?>

Gracias de antemano por la ayuda que puedan brindarme.
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 05:15.