login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP] Apart pagina laden

Offline JikkieJikkie - 30/05/2011 17:57
Avatar van JikkieJikkieLid Hallo mensen,

Op men laptop heb ik php 5.3.4 draaien maar op de webserver draait een oudere versie en daar werkt een script niet op. Ik ben echt n00b wat betreft php dus als iemand mij kan helpen, graag 

Plaatscode: 141065

Foutmelding:
g: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\domains\niets.nl\wwwroot\index.php:74) in C:\domains\niets.nl\wwwroot\index.php on line 77

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\domains\niets.nl\wwwroot\index.php:74) in C:\domains\niets.nl\wwwroot\index.php on line 77

Warning: Cannot modify header information - headers already sent by (output started at C:\domains\niets.nl\wwwroot\index.php:74) in C:\domains\niets.nl\wwwroot\index.php on line 78

Alvast bedankt!
Rik

12 antwoorden

Gesponsorde links
Offline lolll - 30/05/2011 18:09
Avatar van lolll Lid Die code moet je in je header laden, want nu laadt hij ze vermoedelijk in de body. Hierdoor kan hij je headers niet meer aanpassen en ook geen session starten.
Offline avdg - 30/05/2011 18:21 (laatste wijziging 30/05/2011 18:23)
Avatar van avdg PHP gevorderde Hmm, is deze code ingevoegd in een ander php script?

Kijk eens in die scripts na op de volgende fouten:
(Voorbeelden gaan uit dat je headers (of session_start) gebruikt in foo.php)

  1. <html>
  2. <?php
  3. require 'foo.php';


Werkt niet, omdat <html> geen deel uitmaakt van de headers in de http request. Headers moeten altijd voor de content (hier <html>...). "require 'foo.php';" moet voor de <html>-tag komen.

  1. // Deze lijn zit er niet in, maar anders krijg ik de spaties er niet voor
  2. <?php
  3. require 'foo.php';


Deze is minder duidelijk, maar er zitten spaties voor de <?php tag en deze is dan ook deel uit van de "body" in de http request. Headers kunnen dus niet meer verzonden worden. "require 'foo.php';" moet voor de spatie komen.

  1. <?php
  2. echo 'html';
  3. require 'foo.php';


Werkt ook niet, zie eerste voorbeeld. Om dit probleem op te lossen, plaats je de echo na de 'foo.php'.
Offline JikkieJikkie - 30/05/2011 18:29
Avatar van JikkieJikkie Lid Ik ben weer lekker aan het knoeien.. Ik moet get parameter hebben zodat je een link krijgt zoals bijv: index.php?p=pagina. Effe googlen
Offline Kwarde - 30/05/2011 20:31
Avatar van Kwarde Nieuw lid Over die errors: Zet dit helemaal bovenaan:
  1. <?php ob_start(); ?>

En wat bedoel je met de 'ik moet get parameter hebben'. Die werkt nl. gewoon. De $_GET['p'];
Hier is voorbeeld:

Je hebt de map "pages". Daarin zit een pagina genaamd 'pagina.php' bestand. Je hebt dit script:
  1. <?php
  2. //ob_start(); //Haal comment (//) voor ob_start weg als je errors krijgt over cannot send header ofzo
  3. if(!isset($_GET['p'])):
  4. header("location: ?p=pagina");
  5. else:
  6. if(file_exists("pages/".$_GET['p'].".php")):
  7. include "pages/".$_GET['p'].".php";
  8. else:
  9. include "pages/pagina.php";
  10. endif;
  11. endif;
  12. ?>

Dus, als de ?p parameter er niet is, zal je automatisch naar de 'index.php?p=pagina' gaan (indien je dit script op index.php zet). Als de ?p parameter er wel is gaat hij kijken of het bestand "pages/{p_parameter}.php" bestaat. Als die bestaat wordt die included, als die niet bestaat zal hij 'pagina.php' included. Als je bijv. het bestand "contact.php" in de map 'pages' heb, en de ?p parameter is 'contact' zal hij die (waarschijnlijk [het hoort wel te werken]) includen. Is dat wat je wou?
Over die session_start(); btw -> Er zijn geen sessie's, hoezo start je die dan? ;)
Bedankt door: JikkieJikkie
Offline WouterJ - 30/05/2011 20:35
Avatar van WouterJ HTML gevorderde @Kwarde, leer als je blieft geen verkeerde manieren aan. Laat de TS gewoon goed PHP scripten!

@TS, hier wat leesvoer voor je: http://www.phph...y-sent/738/
Offline Kwarde - 30/05/2011 20:36
Avatar van Kwarde Nieuw lid Waldio wat bedoel je? Omdat ik geen {} brackets gebruik maar 'else:' en 'endif;' enzo?
Offline Abbas - 30/05/2011 20:42
Avatar van Abbas Gouden medaille

Crew .NET
Citaat:
//ob_start(); //Haal comment (//) voor ob_start weg als je errors krijgt over cannot send header ofzo
Is het niet de bedoeling dat je deftig script zodat je dat plakmiddel-regeltje niet nodig hebt?! 
Offline JikkieJikkie - 30/05/2011 20:44 (laatste wijziging 30/05/2011 20:44)
Avatar van JikkieJikkie Lid Toppie
  1. <?php
  2. ?>

Aan de bovenkant

Aan de onderkant:
  1. <?php
  2. ?>


Heb vervolgens met hulp van een kennis de code verandert:

  1. <?php
  2. $pagina = "home";
  3. if (isset($_GET['p']) && file_exists('' . $_GET['p'] . '.php'))
  4. {
  5. $pagina = $_GET['p'];
  6. }
  7. else
  8. {
  9. // als er iets moet gebeuren waar geen bestand van is..
  10. }
  11.  
  12. include('' . $pagina . '.php');
  13.  
  14. if(!isset($_GET["p"]))
  15. {
  16. header("location: index.php?p=home");
  17. }
  18. else
  19. {
  20. $pagina = $_GET['p'];
  21.  
  22. if ($pagina == "eenpagina")
  23. {
  24. include ("pagina.php");
  25. }
  26. }
  27. ?>
Offline avdg - 30/05/2011 20:51
Avatar van avdg PHP gevorderde Het gebruik van ob_start en ob_end_flush wil vaak zeggen dat de code slecht gestructureerd is (voorbeelden van "goed", maar daarbij niet altijd gerechtvaardigd gebruik kunnen templates zijn). Vermijd deze dan ook zoveel waar mogelijk en probeer ze ook later weg te werken, vooral als de ob_start en ob_end_flush zeer ver van elkaar staan (waar de kans groter is dat je simpelweg niet kijkt naar het bestaan van deze functies).
Offline Kwarde - 30/05/2011 20:59
Avatar van Kwarde Nieuw lid Ook voor het eerst dat ik dat hoor, denk ik dat het eindelijk goed gaat, is het nog niet zo 
Maar ik gebruik nooit ob_end_flush.
Maar goed, ik ben off here.
Bedankt door: JikkieJikkie
Offline JikkieJikkie - 30/05/2011 21:00
Avatar van JikkieJikkie Lid Aw ok ik kreeg alleen nog een error vanwege die header op lijn 16. Is dit een groot probleem? Het werkt nu nabehore. Ben blij dat dit werkt want ben designer en ik heb echt een hekel aan coderen 
Offline avdg - 30/05/2011 21:32 (laatste wijziging 31/05/2011 10:56)
Avatar van avdg PHP gevorderde @Kwarde: dat je het best niet gebruikt, wil niet zeggen dat je het nooit moet uitproberen Er zullen altijd situaties zijn waar de "slechte" regels eenmaal beter zijn dan de "goede" regels, maar meestal winnen de goeden :-)

@JikkieJikkie: als het probleem nog altijd niet is opgelost, kijk eens na of je utf-8 gebruikt zonder bom (byte order mark). De bom komt vooraan in het document en bepaald de leesrichting (die optioneel is), maar php behandeld deze bom als whitespace, wat genoeg is om de inhoud de verzenden voor de headers. Kijk eens in je editor om die encoding te veranderen, of probeer wat informatie te vinden op google hierover.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.251s