Foros del Web » Programando para Internet » PHP »

Como imprimo, y luego "header" ?

Estas en el tema de Como imprimo, y luego "header" ? en el foro de PHP en Foros del Web. HASTA ANOCHE HACIA ASI LAS COSAS: case eliminarS: $sqla = "DELETE FROM tabla WHERE campo = '$id' OR campo = ''"; mysql_query("$sqla"); echo "<H3 CLASS=C>Se ...
  #1 (permalink)  
Antiguo 20/01/2004, 18:41
 
Fecha de Ingreso: enero-2004
Mensajes: 89
Antigüedad: 13 años, 11 meses
Puntos: 0
Como imprimo, y luego "header" ?

HASTA ANOCHE HACIA ASI LAS COSAS:

case eliminarS:
$sqla = "DELETE FROM tabla WHERE campo = '$id' OR campo = ''";
mysql_query("$sqla");
echo "<H3 CLASS=C>Se elimino la solicitud No $id realizada por $usuario.</H3>
<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1; URL=index.php\">";
break;

PERO AL COLOCAR MI BROWSER EN "NO COOK" SE BUELVE UNA LOCURA.

POR QUE SE PIERDE EL "SID".

Entonces coom puedo hacer las cosas de forma similar a como se hacen aqui en FDW, que uno escribe un post, y le sale la ventana: "Haz realizado un mensaje". Luego le REDIRIJE a uno a X pagina.

Como puedo imprimir un mensaje en acuerdo a lo que halla realizado el usuario, y luego REDIIRIGIRLO A:

"index.php?&=".SID."';

Gracias.
  #2 (permalink)  
Antiguo 21/01/2004, 01:02
 
Fecha de Ingreso: octubre-2003
Ubicación: Veracruz, México
Mensajes: 169
Antigüedad: 14 años, 2 meses
Puntos: 0
Para propagar el SID de PHP puedes usar esta sintaxis:

tuscript.php?SID

Yo lo manejo asi:

sign_out.php?<?php echo SID ?>

Espero te sirva
  #3 (permalink)  
Antiguo 21/01/2004, 08:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En FWD .. la redirección se hace automática desde tu script de proceso que hace por ejemplo ese "delete" o proceso en general.

desde ahí se redirecciona con:

Código PHP:
<?
// proceso...
header("location: pagina_aviso.php");
exit;
?>
ese script de proceso no debe (y no tiene por qué) incluir nada de HTML (ni cabeceras <head> ni nada ..).

En el caso concreto de FWD .. se redirecciona a una página que muestra ese mensaje de "SU mensaje fué enviado .. o bla blabla". Ese página contien una etiqueta de refresh (META) como la que usabas. Y esta es la página que redirecciona al destino final del proceso .. (mostrar tu listado otra vez .. o lo que corresponda).

Lo importante es NO presentar mensajes de error/exito en los scripts que hagan el proceso (en tu caso trabajar con tu BD haciendo INSERT .. etc ..). Así evitaras que por ejemplo si recargan esa página se requiera enviar los datos nuevamente (de tu posible formulario que los envies) o bien repetir el proceso .. tantas veces como el usuario se canse de recargar la página .. lo cual podría implicar e-mails repetidos (caso de que ese proceso enviase un e-mail ) .. o registros duplicados (caso de que haga insert a tu BD..) etc.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 21/01/2004, 10:01
 
Fecha de Ingreso: enero-2004
Mensajes: 89
Antigüedad: 13 años, 11 meses
Puntos: 0
Gracias maestros, lo que sucede es:

Le quito las cook al navegador que utilizo (opera).

Y entonces el SID se pierde.

Por ejemplo intento redirigir asi:

<META HTTP-EQUIV="REFRESH" CONTENT="2; URL=index.php?accion=inicio&<?php echo SID; ?>">

Si las cook estan activas, todo va muy bien.

Si las desactivo que es la razon del post, entonces carga la pagina de ingreso con pasword al sitio.

Si hago lo que me indica CLUSTER, el SID se pierde, y entonces el usuario otra vez tiene que ingresar el pasword, y asi....

Cada vez que realice un redirect.

Que hago?.

Gracias.
  #5 (permalink)  
Antiguo 21/01/2004, 11:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Anque uses el header() para redireccionar .. igualmente tienes que añadir el SID (sea como constante o via: session_name()."=".session_id() ...)

EL caso que primero tienes que verificar que el SID está tomando su valor esperado (el ID de sesión) ...

No vemos el código completo de ese script que haces tu insert y redireccionas.. pero "parece" que no iniciastes la session con:

session_start() en ese script .. y por ende no toma valor tu SID y no se propaga (no lo obtienes).

Si usas cookies . el SID ya está en la cookie .. así que donde inicialices session_start() podrás acceder a esas variables de sesión pese que en alguna que no las uses .. no inicies la sesión.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 21/01/2004, 12:38
 
Fecha de Ingreso: enero-2004
Mensajes: 89
Antigüedad: 13 años, 11 meses
Puntos: 0
Esta todo, (creo)

No maestro, si esta todito lo que ustedes me han enseñado:

<?php


session_name(amigo);
session_start();
include("cabecera.php");

luego dice:


//Aqui se sabe si existe en la BD:
$result = mysql_query("SELECT $kt2[1],$kt2[10] FROM $t2 WHERE $kt2[1] = '$usuarioregistrado'");
if ($row = mysql_fetch_array($result))
{
$tt = $row["$kt2[10]"];
$nt = $tt+1;
$salida = no;
}
else
{
$salida = on;
}
}
//Si no existe = pagina de ingreso
if($salida == on)
{
session_destroy();
echo "$k $A";
include("../z.php");
exit;
}


Etc...

Un poco de "cositas" qe le he mtido.

Luego biene el chicharron:

"Si el usuario hizo esto, entonces imprima

echo "Gracias por el articulo.<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0; URL=index.php?&".SID."\"></HEAD></HTML>";

Y si hace otra cosa, otro texto y refresh, etc...

Si el browser tiene activas las COOK, NO PROBLEMA.

Pero si las desactiva, tonces se va para la pagina de inicio y pide nuevamente el pasword.

Gracias por la ayuda.

Última edición por CHAMO01; 21/01/2004 a las 12:41
  #7 (permalink)  
Antiguo 21/01/2004, 13:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El nombre de usa sesión es nu "string" (cadena) .. así que debes usar comillas si prentes dar ese nombre de sesión


session_name("amigo");

(amigo sin comillas será interpretado como constante .. supongo que devolverá 0 ..)

Lo mismo para esos no y on que usas .. en $salida =... usa comillas (o acaso son constantes que has definido antes con define()?)

Si pones el código completo sería mejor .. por qué con las cosas que dices que omites aquí .. tal vez esté por allá el problema.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 21/01/2004, 14:46
 
Fecha de Ingreso: enero-2004
Mensajes: 89
Antigüedad: 13 años, 11 meses
Puntos: 0
De acuerdo Si, eran las comillas.

Si maestro, ahora si.

Le coloque asi:

session_name("amigo");
session_start();
include("../fecha.php");

Y tambien:

else {$salida = "si";}
if ($salida == "si"){
Tonces chao de mi sitio;}

Y todo va muy bien.

*********************************

Entonces ahora debo hacer algo mas o menos asi para poder evitar que me hagan "travesuras" en la BD?:


<FORM ACTION='paginadeacciones.php' METHOD='POST'>

Y en la pagina de acciones:

SWITCH ("accion"){

case "borrar":

borre de todo;
header("location: pagina_aviso.php?texto=mensajedeborrado");

break;

case "cambiarpasword":

cambie datos del usuario;
header("location: pagina_aviso.php?texto=preferenciasmodificadas");
break;

Etc, Etc, Etc, etc...

Y en "pagina_aviso.php"


SWITCH ("texto"){

case "mensajedeborrado":

echo "<H3 CLASS=C>Se elimino la solicitud No $tema realizada por $usuario.</H3>
<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1; URL=index.php&".SID."\">";
break;

case "preferenciasmodificadas":

echo "<CENTER><H3 CLASS=C>Modificacion realizada en todos los campos de tu panel!.</H3></CENTER><META HTTP-EQUIV=\"REFRESH\" CONTENT=\"2; URL=index.php?&".SID."\">";
break;

Etc, Etc, Etc, etc...

#######################################

Asi debo hacer a partir de ahora hasta que mi alma abandone este cuerpo?. : )

Muchas gracias!.

PD: Si ahora si se animan a explicarme cuando usar ' y cuando " se los agradecere.
Ya vieron que apenas si comienzo en estas cosas.
  #9 (permalink)  
Antiguo 22/01/2004, 10:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cuando haces el redireccionamiento a tu pagina_aviso.php . no le estás propagando el SID

Si quieres propagar el SID en el URL de forma manual deberías hacer:
Código PHP:
header("location: pagina_aviso.php?texto=preferenciasmodificadas&".SID); 
¿ Supongo que tu 'paginadeacciones.php' hará un session_start() al principio y antes de este un session_mame("conelnombredelasesionqueseledio") ? (para poder leer la constante SID).

Así que .. decide si vas a usar cookies para propagar el SID y así olvidarte de propagarlo a mano en tus links (sean links HTML, redirccionamientos header("location...), javascript o etiquetas META de refresh).

Lo más seguro es usar cookies para propagar el SID .. a costa de perder "compatibilidad" (si un usuario no acepta cookies .. no podrá usar tus sesiones .. El SID no se propagaría).

Otros detalles:

Consejo:
Despues de cada header() .. usa exit; ya que se supone que vas a tenerminar la ejecución de ese scirpt en ese punto del código (flujo).

Cita:
PD: Si ahora si se animan a explicarme cuando usar ' y cuando " se los agradecere.
Ya vieron que apenas si comienzo en estas cosas.
Que mejor que el própio manual de PHP en su apartado "strings" (cadenas):

http://www.php.net/manual/en/language.types.string.php


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 22/01/2004, 18:09
 
Fecha de Ingreso: enero-2004
Mensajes: 89
Antigüedad: 13 años, 11 meses
Puntos: 0
Gracias

Gracias.

Cita:
Lo más seguro es usar cookies para propagar el SID .. a costa de perder "compatibilidad" (si un usuario no acepta cookies .. no podrá usar tus sesiones .. El SID no se propagaría).
Cluster, osea que en la forma que lo hago hay insegurifdad para mi sitio y mis paginas php?.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:43.