Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP + phpBB3] Warning & onverwacht gedrag

Pagina: 1
Acties:
  • 174 views sinds 30-01-2008

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
Ik heb een website en forum op dezelfde server en in dezelfde webroot staan. Het forum phpBB3 zit in /forums van de webroot.

Ik heb custom code toegevoegd aan het forum (waardoor?) de volgende warning optreedt wanneer ik in of uitlog op het forum:

code:
1
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homepages/23/d222459718/htdocs/website/forums/cache/tpl_prosilver_grey_overall_header.html.php:2) in /homepages/23/d222459718/htdocs/website/forums/cache/tpl_prosilver_grey_overall_header.html.php on line 100


De warning is 1 ding, echter er is nog iets anders dat niet klopt. Op de website staat een menu. Wanneer men inlogt op de website veranderen enkele images van het menu. Om een voorbeeld te geven: De afbeelding van de login button verandert naar een profile button wanneer men inlogt op de site. Al goed en wel, werkt. Echter heb ik de code van dat menu ook toegevoegd aan het phpBB3 forum.(Exact dezelfde code) Het menu displayed nu dus ook op het forum, er is geen registration en login integration, gewoon een simpel copy van het menu op het forum. Echter wanneer men inlogt op de website en vervolgens naar het forum gaat dan staat de afbeelding van de login button nog steeds op "login" en niet op "profile". Hoe dit kan weet ik niet, maar ik vermoed dat het misschien iets te maken zou kunnen hebben met de bovenstaande warning.

De code die toegevoegd is aan het forum is:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!-- PHP -->
if(!isset($_SESSION))
    session_start();

if (!isset($_SESSION['loggedin'])) {
    session_register('loggedin');
    $loggedin=false;
}
<!-- ENDPHP --> 


<div id="layout">
<!-- PHP -->
    if ($loggedin) {
    <!-- ENDPHP --> 
        <a href = "/profile.php">
        <img src="/images/layout_015_06.png" width="82" height="21" alt="" /></a>
    <!-- PHP -->
    }
    else {
    <!-- ENDPHP --> 
        <a href = "/login.php">
        <img src="/images/layout_015_06_login.png" width="82" height="21" alt="" /></a>
    <!-- PHP -->
    }
<!-- ENDPHP -->


Op de website werkt dit, maar op het phpBB3 forum niet. Ik heb eraan gedacht of het een conflict kan zijn tussen misschien de session cookie van de website en phpBB of een variabel conflict, maar het is allemaal gissen.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:23

gorgi_19

Kruimeltjes zijn weer op :9

Er staat een spatie / enter aan het begin van je bestand?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Als je ergens midden in je templates session_start doet, ben je te laat. Zorg dat dit gebeurt voordat de templates getoond worden. Daarnaast heeft PHPBB een eigen sessie-systeem, en je moet oppassen dat dit niet daarmee gaat conflicteren.

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
GlowMouse schreef op woensdag 07 november 2007 @ 18:26:
Als je ergens midden in je templates session_start doet, ben je te laat. Zorg dat dit gebeurt voordat de templates getoond worden. Daarnaast heeft PHPBB een eigen sessie-systeem, en je moet oppassen dat dit niet daarmee gaat conflicteren.
Hoe kan je zorgen dat dat session_start wordt uitgevoerd voordat de phpBB templates geladen worden?

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Arcane Apex schreef op woensdag 07 november 2007 @ 19:05:
[...]


Hoe kan je zorgen dat dat session_start wordt uitgevoerd voordat de phpBB templates geladen worden?
Bekijk andere phpBB templates eens?

Going for adventure, lots of sun and a convertible! | GMT-8


  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
Snake schreef op woensdag 07 november 2007 @ 19:21:
[...]

Bekijk andere phpBB templates eens?
Ik zou niet precies weten welke info ik uit die andere templates zou moeten halen.

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
gorgi_19 schreef op woensdag 07 november 2007 @ 18:19:
Er staat een spatie / enter aan het begin van je bestand?
Die / staat voor (web)root.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
gorgi_19 schreef op woensdag 07 november 2007 @ 18:19:
Er staat een spatie / enter aan het begin van je bestand?
8)7
Er staat een spatie of enter... en dat is vaak genoeg voorbij gekomen...

Verder: als je iets aan te vullen hebt op een vorige post, gebruik dan de edit-knop ( Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/tweakers/images/icons/edit.gif, zie topickick binnen 24 uur ) en probeer voortaan eens wat actiever mee te denken dan je zo passief aan het handje te laten houden. Heb je uberhaupt al de moeite genomen om er eens in te kijken? Of wil je gewoon dat wij het voorzeggen?

[ Voor 86% gewijzigd door RobIII op 07-11-2007 20:05 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
RobIII schreef op woensdag 07 november 2007 @ 19:53:
[...]


[...]

8)7
Er staat een spatie of enter... en dat is vaak genoeg voorbij gekomen...

Verder: als je iets aan te vullen hebt op een vorige post, gebruik dan de edit-knop ( [afbeelding], zie topickick binnen 24 uur ) en probeer voortaan eens wat actiever mee te denken dan je zo passief aan het handje te laten houden. Heb je uberhaupt al de moeite genomen om er eens in te kijken? Of wil je gewoon dat wij het voorzeggen?
Er staat geen spatie of enter aan het begin van het bestand overall_header.html. (<-- het phpBB template bestand waar het menu in geplaatst is)

Excuses voor het voorheen wat warrige antwoord.

  • Cartman!
  • Registratie: April 2000
  • Niet online
Open em eens met een HEX editor en controleer daar in eens, het kan zijn dat er een UTF8 BOM zit voor je file, die zie je niet terug in een gewone editor en dan lijkt het alsof er niks voor staat.

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
Cartman! schreef op donderdag 08 november 2007 @ 08:49:
Open em eens met een HEX editor en controleer daar in eens, het kan zijn dat er een UTF8 BOM zit voor je file, die zie je niet terug in een gewone editor en dan lijkt het alsof er niks voor staat.
Ik heb het gecheckt, maar ook dat lijkt niet het geval te zijn.

Verwijderd

Misschien de Cache van PHPBB3 Legen?
Leeg nieuw bestand maken en de inhoud van het oude bestand in het lege bestand kopiëren?

Er wordt echt voor de session_start output gestuurd, dus er moet iets van die opties, die hierboven worden gegeven mis zijn.

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
Verwijderd schreef op donderdag 08 november 2007 @ 11:49:
Misschien de Cache van PHPBB3 Legen?
Leeg nieuw bestand maken en de inhoud van het oude bestand in het lege bestand kopiëren?

Er wordt echt voor de session_start output gestuurd, dus er moet iets van die opties, die hierboven worden gegeven mis zijn.
Ik heb de cache geleegd echter hielp dat niets. Ik heb nu zelfs als test even de code weggehaald en vervolgens weer de cache geleegd. Maar dan blijft de warning optreden alsof er nu permanent iets veranderd/beschadigd is. Ik heb ook geprobeerd het stukje code te plaatsen in index_body.html aan de top/begin, omdat overall_header.html ge-include wordt in index-body.html.

Wat ik ook vreemd vind is wanneer ik in de cache kijk dat ik dan het stukje code met session_start() niet eens kan vinden terwijl het wel in overall_header.html of index_body.html staat, maar in de php cache versies van die files staat lijkt dat stukje code dus niet te staan.

[ Voor 4% gewijzigd door Arcane Apex op 08-11-2007 12:50 ]


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Nogmaals maar dan duidelijker: waarom wil je pas in de templates een sessie starten?

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
Omdat ik in de templates een menu neergezet heb en dat menu komt van een website op dezelfde server in dezelfde webroot. Dat menu verandert wanneer iemand inlogt. Dus wanneer iemand inlogt op de website dan verandert bijv. de login knop naar een profile knop. Echter wil ik het zo hebben dat wanneer iemand inlogt op de website dat dan net als op de website ook op het forum het menu verandert. Dus ik moet de variabele $loggedin overhevelen van de website naar het forum. (Let wel ik doel hier niet mee op session integration tussen de website en het phpBB forum, maar op het feit dat het menu op het forum hetzelfde moet veranderen/reageren als op de website wanneer iemand inlogt)

Ik snap dat session_start(); absoluut aan het begin moet komen. Echter weet ik niet waar het begin is van phpBB3 en of dit het probleem wel zal oplossen.

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Arcane Apex schreef op donderdag 08 november 2007 @ 14:07:
Ik snap dat session_start(); absoluut aan het begin moet komen. Echter weet ik niet waar het begin is van phpBB3 en of dit het probleem wel zal oplossen.
Één ding weet ik heel zeker, en dat is dat wanneer je aan de templates toekomt, het grootste deel van de code al gedraaid heeft. Afhandelen van sessies hoort ook gewoon niet in een template thuis, dan ga je aan het doel van templates voorbij.

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
GlowMouse schreef op donderdag 08 november 2007 @ 14:24:
[...]

Één ding weet ik heel zeker, en dat is dat wanneer je aan de templates toekomt, het grootste deel van de code al gedraaid heeft. Afhandelen van sessies hoort ook gewoon niet in een template thuis, dan ga je aan het doel van templates voorbij.
Op het phpBB3 forum werd verteld dat sessies in de header van overall_header.html moeten staan, dus daar heb ik het dan geplaatst, maar het lijkt ten eerste niet te werken en ten tweede blijf ik die warning krijgen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:35

Janoz

Moderator Devschuur®

!litemod

Tja, de foutmelding is gewoon duidelijk. Er is al output. In de foutmelding is verder exact aangegeven waar die output dan wel was (Staat ook in de foutmelding). Het 'headers already sent' probleem is gewoon basic php en hoe dit opgelost moet worden moet makkelijk zelf te vinden zijn.

Verder is het in PRG niet de bedoeling om support te verlangen op producten van anderen.

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

Pagina: 1

Dit topic is gesloten.