[PHP] include in 'die' functie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb de volgende code:
PHP:
1
2
3
if($controle==0){
    die("\n$body\n");
}

nu moet voor de body variabel het volgende komen te staan:
PHP:
1
<? include("user_menu.html") ?>

echter wat ik ook probeer dit stuit op parse errors, vb:
PHP:
1
2
3
if($controle==0){
    die("<?include('user_menu.html')?>\n$body\n");
}
geeft niet het gewenste resultaat

ik zal er wel overheen kijken... suggesties?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

PHP:
1
die(file_get_contents('user_menu.html'));

Acties:
  • 0 Henk 'm!

  • Blacksnak
  • Registratie: Oktober 2001
  • Laatst online: 07-07-2024
*edit*

Reply niet relevant, probleem te snel overlezen...

*edit 2*

Even herlezen ondertussen.

Kan het hier nu niet uittesten maar al iets geprobeerd in de trend van:

code:
1
2
3
if($controle==0){ 
    die(include('user_menu.html')."\n".$body."\n"); 
}

[ Voor 154% gewijzigd door Blacksnak op 11-05-2005 10:43 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op woensdag 11 mei 2005 @ 10:32:
PHP:
1
die(file_get_contents('user_menu.html'));
dekt niet de volledige lading, want er moet meer dan alleen die include inzitten, bijv.:

PHP:
1
2
3
if($controle==0){
    die(file_get_contents('user_menu.html')$body);
}
wordt nog steeds niet geaccepteerd, ik neem aan dat de quotes verkeerd staan.. ff testen

Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
Alles wat je tussen de () van die zet wordt gewoon ge-echo-ed. echo include('pagina'); werkt toch ook niet.. Include plakt eigenlijk een stuk code (of html) in je PHP code, die dan wordt uitgevoerd.
file_get_contents is dan de oplossing.

Stel dat je nu toch nog een PHP pagina wilt includen en dus alle PHP code die daarin staat wilt uitvoeren, dan werkt file_get_contents niet, want dan krijg je de kale PHP code.
De simpelste oplossing is dan om gewoon te doen:
include ('pagina.php');
die();

:)

edit:
In je code hierboven: probeer eens een punt (.) voor $body te zetten. Maar probeer eens een paar voorbeeld pagina's te lezen en te oefenen anders...

[ Voor 16% gewijzigd door pierre-oord op 11-05-2005 10:40 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op woensdag 11 mei 2005 @ 10:37:
[...]


dekt niet de volledige lading, want er moet meer dan alleen die include inzitten, bijv.:

PHP:
1
2
3
if($controle==0){
    die(file_get_contents('user_menu.html')$body);
}
wordt nog steeds niet geaccepteerd, ik neem aan dat de quotes verkeerd staan.. ff testen
neem eens een cursusje php :/
www.php.net

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 19-09 09:34

thomaske

» » » » » »

Verwijderd schreef op woensdag 11 mei 2005 @ 10:37:
[...]


dekt niet de volledige lading, want er moet meer dan alleen die include inzitten, bijv.:

PHP:
1
2
3
if($controle==0){
    die(file_get_contents('user_menu.html')$body);
}
wordt nog steeds niet geaccepteerd, ik neem aan dat de quotes verkeerd staan.. ff testen
waarom niet iets als dit:

PHP:
1
2
3
4
5
if ($controle == 0) {
    include('user_menu.html');
    echo $body;
    die();
}

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 05-09 21:19

Wacky

Dr. Lektroluv \o/

Waar komt die $body vandaan?

Als je het al perse via een die wil doen:
code:
1
2
3
if($controle==0){
    die(file_get_contents('user_menu.html'));
}


Maar als je code een beetje fatsoenlijk in elkaar zit doe je het gewoon zo:
code:
1
2
3
4
5
if ($controle == 0) {
    // Niet goed, dus doe iets
} else {
    // De rest van de code
}

Zo heb je die hele "die" niet nodig (die waarschijnlijk ook nog de output van een footer op je pagina weglaat vanwege die "die")

Nu ook met Flickr account


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Een include in een die() functie is overigens niet erg netjes. Het verstoort je applicatie flow, waardoor je razige toepassingen moet bedenken om weer terug in die flow te keren. Als nu gewoon een if-else statement gebruikt kun je gewoon verder gaan met je programma en de error netjes afhandelen.

Gebruik een die() alleen daar waar het echt nodig is, want een die() zorgt ervoor dat PHP abrupt stopt met het uitvoeren van je script.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
thomaske schreef op woensdag 11 mei 2005 @ 10:39:
[...]


waarom niet iets als dit:

PHP:
1
2
3
4
5
if ($controle == 0) {
    include('user_menu.html');
    echo $body;
    die();
}
dit is zo een beetje wat ik zocht, de die functie is 'nodig' omdat als iemand niet is ingelogd het script uiteraard dient te stoppen.. (control kijkt dus of je bent ingelogd).

Acties:
  • 0 Henk 'm!

  • Huppie
  • Registratie: Mei 2003
  • Laatst online: 02-09 09:59
edit:
laat maar :X

my bad :)

[ Voor 116% gewijzigd door Huppie op 11-05-2005 13:10 ]

Proud member of TCF - D2OL is zooooo 2005


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 11 mei 2005 @ 10:37:
dekt niet de volledige lading, want er moet meer dan alleen die include inzitten, bijv.:

PHP:
1
2
3
if($controle==0){
    die(file_get_contents('user_menu.html')$body);
}
wordt nog steeds niet geaccepteerd, ik neem aan dat de quotes verkeerd staan.. ff testen
Je doet toch zeker ook niet dit:
PHP:
1
echo "test""test";

of dit:
PHP:
1
echo $var1$var2;

Er is in PHP niet voor niks een operator die strings aan elkaar kan plakken (de . dus), wat dus betekent dat er ook een . moet tussen alle strings die je aan elkaar wil plakken. Dat geldt ook in jouw geval, waar je een functie die een string returnt en een variabele aan elkaar wil plakken.

Verder had je toch ook zelf wel op de oplossing van thomaske kunnen komen? Is sowieso een stuk leesbaarder dan alles in elkaar willen proppen. Sowieso geef je me met code als de volgende niet het idee dat je PHP begrijpt:
PHP:
1
2
3
if($controle==0){
    die("<?include('user_menu.html')?>\n$body\n");
}

Je zit al in PHP en drukt een string af met daarin PHP-tags in de hoop dat die geparst worden... Dat zal dus nooit gebeuren.

Probeer de volgende keer iets meer moeite te doen. Lees een goed boek, of werk de beginnersgids in de online documentatie van php.net eens door, dan heb je in elk geval geen problemen meer met dingen die tot de basiskennis behoren. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Brainstorm
  • Registratie: November 2000
  • Laatst online: 20-09 13:56
Als alternatief: die include() en die() afplitsen naar een nieuwe functie?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
function fatalError($fileName)
{
   include($fileName);
   die();
}

if ($a == 0)
{
   fatalError('iets.php');
}

mysql_query($query) or fatalError('queryerror.php')

[ Voor 6% gewijzigd door Brainstorm op 11-05-2005 14:26 ]

Programmer's Drinking Song: 99 little bugs in the code, 99 bugs in the code, Fix one bug, compile it again, 100 little bugs in the code. (go to start if bugs>0)

Pagina: 1