[PHP] include icm session = dubbele include?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DP Kunst
  • Registratie: Juni 2003
  • Laatst online: 10-09 22:34
Ik was zonet ff bezig met een scriptje dat een incasso bestand maakt. Dit scriptje werkt prima. Echter heb ik meerdere scriptjes die ik allemaal bij elkaar wil hebben. Hier heb ik een pagina voor gemaakt.

Nu het probleem. Deze scriptjes zitten achter een login. De scriptjes worden geïnclude. Nou wordt het scriptje dat de incasso bestanden maakt 2x vlak achter elkaar uitgevoerd. Nou ben ik samen met iemand anders even wat aan het testen geweest en daar kwam het voglende uit:

Dit scriptje voert create_incasse.php 2x uit
PHP:
1
2
3
4
<?php
session_start();
include_once ("includes/create_incasso.php");
?>

Dit scriptje voert create_incasse.php 1x uit

PHP:
1
2
3
<?php
include_once ("includes/create_incasso.php");
?>


Is er iemand die dit rare probleem eerder tegen gekomen is? Als ik een session toevoeg wordt het bestand ineens vlak achter elkaar geïnclude. Dit resulteert in 1 bestand met 2x de data achter elkaar, of 2 bestanden met 1x de data (als hij uitgevoerd wordt als de seconde wisselt).

Heeft iemand hier een oplossing voor?

Mijn nieuwe portfolio (Under Construction) | Benieuwd wat Solar Team Twente gaat doen?


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Dat zou niet mogen kunnen. Wellicht kun je eens kijken met debug_print_backtrace() of je wat geks ziet?

Acties:
  • 0 Henk 'm!

  • Rvanlaak
  • Registratie: Juni 2005
  • Laatst online: 19-09 10:52
Ik heb ook wel eens last gehad van zo'n vreemde bug. Als ik het me goed herinner was deze bug weg toen ik van alle Warnings af was. Op welke modus staat je error_reporting?

Anders kun je ook gebruik maken van een static variabele in een klasse. Door daarop te checken wordt iets maar 1x uitgevoerd.

Acties:
  • 0 Henk 'm!

Verwijderd

Kun je niet proberen om een singleton te maken van de functie die je aanroept. Dit geeft de functie de mogelijkheid om maar eens aangeroepen te worden.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Dit resulteert in 1 bestand met 2x de data achter elkaar, of 2 bestanden met 1x de data (als hij uitgevoerd wordt als de seconde wisselt).
Hangt de bestandsnaam af van de tijd en wordt de output toegevoegd aan het bestand?

Het lijkt mij namelijk helemaal niet dat het probleem binnen 1 request zit. Weet je zeker dat er niet ergens een header redirect wordt gebruikt waardoor er 2 requests achter elkaar uitgevoerd worden?
Verwijderd schreef op dinsdag 17 maart 2009 @ 13:01:
Kun je niet proberen om een singleton te maken van de functie die je aanroept. Dit geeft de functie de mogelijkheid om maar eens aangeroepen te worden.
Dat is niet wat een singleton doet. Een singleton beperkt het aantal instanties van een classe tot maximaal 1. Van een functie kun je helemaal geen singleton maken.

[ Voor 32% gewijzigd door Janoz op 17-03-2009 13:10 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Rvanlaak
  • Registratie: Juni 2005
  • Laatst online: 19-09 10:52
Dat is niet wat een singleton doet. Een singleton beperkt het aantal instanties van een classe tot maximaal 1. Van een functie kun je helemaal geen singleton maken.
Dat is inderdaad waar, maar je kunt het concept van dit pattern wel gebruiken. Als je de functionaliteit in de constructor zet dan wordt deze maar een keer uitgevoerd. (Wel heel erg lelijke manier van programmeren overigens) Dan moet de klasse wel dmv 'function getInstance()' aangeroepen worden... :P

Alleen ik denk dat de oplossing simpeler is, maar kan zo ook niet ontdekken hoe.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Er is uberhaupt pas een oplossing te geven wanneer het probleem boven water is. Alle oplossingen die nu geboden worden zijn niks meer dan symptoombestrijdingen. Een symptoombestrijding is geen oplossing.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1