Foros del Web » Programando para Internet » PHP »

Parar un script dentro de un include...

Estas en el tema de Parar un script dentro de un include... en el foro de PHP en Foros del Web. Hola gente: Quisiera saber si hay alguna forma de detener la ejecución de un script sin "dañar" el resto, a ver, pongo un ejemplo. Tengo ...
  #1 (permalink)  
Antiguo 13/07/2005, 18:12
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Parar un script dentro de un include...

Hola gente:

Quisiera saber si hay alguna forma de detener la ejecución de un script sin "dañar" el resto, a ver, pongo un ejemplo.

Tengo una pagina de este tipo (modular)

Código PHP:
<html>
<head>
<title>hola mundo</title>
</head>
<body>
<?php
echo '<div>';
include(
"includes/lala.php");
echo 
'</div>';
?>
</body>
</html>
El tema es que si yo quiero que el archivo lala.php lo puedan ver solo los usuarios registrados deberia poner, en el archivo lala.php, un condicional del tipo:
if (!$user) { echo 'solo usuarios registrados'; } else {....

El tema es que yo siempre tengo que hacerlo de esa forma, en lugar de poder usar un include con el codigo:
if (!$user) { echo 'solo usuarios registrados'; exit; }


Se entiende??, como puedo hacer un "exit" o un "break" sin que afecte al archivo "padre" (el cargador del modulo), ya que si hago un exti en este momento solamente se ve la mitad de la pagina (lo que este debajo del include no se verá...)

Espero haberme hecho explicar... es algo confuso pero bueno.
__________________
I Love Programming...
  #2 (permalink)  
Antiguo 13/07/2005, 18:22
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
La verdad es que no tengo ni idea de si te va a funcionar o si estoy diciendo una barbaridad
Pero porque no pruebas a poner continue;?
Jajajaj lo siento a todos si digo la más grande estupidez!
__________________
sergiold
  #3 (permalink)  
Antiguo 13/07/2005, 18:45
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 12 años, 5 meses
Puntos: 1
no te entendi no veo cual es el problema realmente segun veo el archivo padre solo tiene un div con un include y no se que es lo que quieres hacer dime si pner el exit si no entra a ese if que iria en el else? y di cual es el archivo padre

si te sirve la funcion break acepta un parametro ej : break 2 que sale de ese numero de estructuras de control en orden jerarquico
  #4 (permalink)  
Antiguo 13/07/2005, 19:46
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
si pongo un "exit" en el include el ultimo tag, en donde cierro el "div" no aparece...

Además eso de "solo tiene un div"... tene en cuenta que es un ejemplo, arriba y abajo del include hay cientos de divs y demas cosas... como todo sitio modular...

Lo que yo quiero hacer es NO TENER que usar ELSE, pues esto solo me hace tener que poner archivo por archivo las condiciones (no puedo usarla en un include...)
__________________
I Love Programming...
  #5 (permalink)  
Antiguo 13/07/2005, 19:48
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
a ver si me explico mejor, quiero que el "break" solo frene el script del include y no el script general...
__________________
I Love Programming...
  #6 (permalink)  
Antiguo 13/07/2005, 20:10
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 14 años
Puntos: 1
hola fulano

porq no mejor usas una funcion en tu archivo include pasandole como parametro $user en donde el code q necesita tu archivo principal se lo devuelve a traves de return

y en tu pagina principal pones

<?php echo mifuncion($user) ?>

espero haber sido claro
__________________
saludos :adios:
  #7 (permalink)  
Antiguo 13/07/2005, 20:59
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
pues porque para eso directamente hago que el include solamente se incluya (valga la redundancia) si el usuario esta registrado... yo estoy intentando usar algo mas practico...

En un sitio cuando quieres restringir el acceso lo unico que haces es poner un include que compruebe si el nick esta logueado o no, y si no lo esta que imprima un mensaje y pare el script... esto es lo que quiero hacer, el tema es que al ser un sitio modular se complica hacer estos "stops" directamente en los modulos... quizas deba, en lugar incluir el modulo y allí verificar si el usuario esta logueado, verificar si el usuario esta logueado en la mismo SWICHT que utilizo para incluir los modulos...

algo asi:

Código PHP:
//todo el HTML
<?php
if ($user) {
  switch(
$mod) {
    case 
'una_seccion':
    include(
"lalala.php");
   break;
  }
}
else {
  switch(
$mod) {
    case 
'una_seccion':
    echo 
'Seccion solo para usuarios registrados...';
   break;
  }
}
?>
//resto del HTML
Se entiende lo que digo?
__________________
I Love Programming...
  #8 (permalink)  
Antiguo 13/07/2005, 21:40
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 14 años
Puntos: 1
AH bueno, entonces si todo lo kieres en el include seria lago asi:
Código PHP:
<?php
//archivo lala.php
// 
function validauser()
{
global 
$user;//dependiendo como has definido user si es session esto no es necesario solo bastaria $_SESSION['user']
$rs=NULL;

  if (empty(
$user)) {
  
$rs"solo usuarios registrados"
  } 
  else{ 
  
$rs="Bienvenido $user";
  }
return 
$rs
}

echo 
validauser()
?>
espero q este simple ejemplo te sirva
__________________
saludos :adios:
  #9 (permalink)  
Antiguo 14/07/2005, 12:28
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
entiendo, pero eso es lo que estoy usando en este momento...

a ver... si yo al "solo usuarios registrados" no le pongo un "exit;" o un "break;" el script va a hacer esto:

solo usuarios registrados
CONTENIDO DEL INCLUDE

se entiende? si yo no paro el include me va a incluir el contenido igual (solamente me avisará que es para usuarios registrados...)

Al parecer no se entiende lo que pido

Voy a probar con el "break 2" como dijo dopon, de lo contrario lo hare directamente en el cargador de modulos...
__________________
I Love Programming...
  #10 (permalink)  
Antiguo 14/07/2005, 12:37
Avatar de shinblood  
Fecha de Ingreso: diciembre-2003
Ubicación: lima
Mensajes: 214
Antigüedad: 14 años
Puntos: 1
que pena fulano que NO nos podemos entender en fin...
cada persona tiene su forma de pensar
Ojala puedas encontrar solucion a tu problema
saludos
__________________
saludos :adios:
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 03:04.