login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Login probleem ivm headers error

Offline larssy1 - 29/11/2009 10:34
Avatar van larssy1MySQL beginner Hey mensen,

Ik zit met een probleem.. Ik krijg de error
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\crime\index.php:9) in C:\xampp\htdocs\crime\pages\login.php on line 49

niet opgelost.. Dit word veroorzaakt in mijn login.php script.

Zouden jullie misschien naar mijn index en login.php kunnen kijken??

Index: http://plaatscode.be/138103/
Login: http://plaatscode.be/138104/

Mvg
Lars

8 antwoorden

Gesponsorde links
Offline MiST - 29/11/2009 11:14
Avatar van MiST Lid je HTML begint onmiddellijk na je session_start(). Op het ogenblik dat er enige output naar het scherm van de client gestuurd moet worden, worden de headers verzonden. Daarom kan je login niet meer werken.
Offline larssy1 - 29/11/2009 11:56
Avatar van larssy1 MySQL beginner hmm, dus ik kan niet met de manier werken zoals ik het zou willen??

dat de link dan dus index.php?p=start bijv..

in de index moet ik met session_start(); beginnen, omdat de andere pagina's worden geinclude in de index.

Dit is dan niet meer mogelijk of is er een omweg?
Offline kurohyou - 29/11/2009 12:37 (laatste wijziging 29/11/2009 12:46)
Avatar van kurohyou Oud lid in je login.php moet je

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
..
</head>
<body>
..
</body>
</html>

verwijderen, ke hebt dit reeds gedaan in index.php, je moet templates maken met de actuele code die er uiteindelijk komt te staan geen volledige nieuwe pagina.

Dit gaat trouwens nog steeds niet werken dan, je moet zien dat je geen header location doet in het midden van je html, dit moet gebeurd zijn vooralleer er enige html uitgaat naar de client, dus voor <HTML ....>

je kan dit oplossen door een login scriptje te maken die je laat includen onmiddelijk na session_start, en daar controleer je direct op ingelogd of niet, indien niet header location

maar je kan beter een soort router.php maken waar je eerst op alles controleert en via je router.php dan naar de locatie verzend, dus alles dat via $_GET komt eerst door de router.php laten controleren.
Offline larssy1 - 29/11/2009 12:45
Avatar van larssy1 MySQL beginner kortom,, 't gaat niet lukken ?? tenzij ik met iframes ga werken dan..
Offline kurohyou - 29/11/2009 12:55 (laatste wijziging 29/11/2009 12:59)
Avatar van kurohyou Oud lid kijk zal even een voorbeeld geven van hoe je dit kunt doe,

index.php
  1. if ( isset($_GET['route']) ) {
  2. $get = $_GET['route'];
  3. require_once('route.php');
  4. }

en dan in je body kan je bv een include content.php doen

route.php
  1. switch ($get) {
  2. case 'login':
  3. header("Location: index.php?s=show");
  4. break;
  5. case '...':
  6. enz...


en dan in content.php
  1. if ( isset($_GET['s']) ) {
  2. include $_GET['s'] . '.php';
  3. }
  4. else {
  5. include 'default.php';
  6. }


is maar simpel voorbeeldje, maar onderzoek het even, nog even vergeten, je kan dan simpel een link aanmaken zoals index.php?route=login

dan gaat de route.php eerst controleren en dan je vervolgens doorsturen, je kan dit zo doen met alle paginas, en dan met je includes in je body de rest laten controleren die van toepassing is.

zal wss niet 1 van de beste oplossingen zijn maar is een snelle oplossing voor simpele projectjes
Offline larssy1 - 29/11/2009 13:03
Avatar van larssy1 MySQL beginner hmm, het is dus eigenlijk de uitkomst wat ik heb met de if en else mbv includes,

alleen jij werkt dan met switch / case,, klopt dat beetje..

de eerste 2 snap ik nog wel.. 1 is gewoon van de index zelf zoals ik 't heb..
de 2e word gewoon include waar alle pagina's staan gemeld mbv de Case functie..

maar de 3e snap ik nog niet helemaal..
Offline kurohyou - 29/11/2009 13:26 (laatste wijziging 29/11/2009 13:42)
Avatar van kurohyou Oud lid EDIT : heb nod even de toewijzing aangepast aan de $get variable, stond iets verkeerd in

vergeet even de code die ik gepost heb, was mss niet echt duidelijk in jouw geval, zal het even anders uitleggen.

in je index.php heb je bv een form met username en password die je via een form dan verzend naar route.php?action=login

in route.php controleer je dan via
  1. if ( isset($_POST['action']) ) {
  2. $get = $_POST['action'];
  3.  
  4. switch ($get) {
  5. case 'login':
  6. if (controleer op iets) {
  7. // voer acties uit zoals set sessions and cookies
  8. header("Location: index.php");
  9. } else {
  10. // wat doen als login niet succesvol was
  11. header("Location: index.php?s=error");
  12. }
  13. break;
  14. case 'ietsanders':
  15. ...


wat er nu gebeurd is dat eerst alles gecontrolleerd word vooralleer er enige html output is, in je index.php kan je dan een file includen waar je wilt zoals login.php en daarin controlleer je dan als je cookie terugvind toon username is logged in, in een andere file die je include bv in een plaats waar je de error code wilt laten zien controller je door middel van if ( isset($_GET['s']) ) { toon fout }

en nog een pluspunt, je code word weeral wat overzichtelijker doordat je op alles laat controlleren in je route.php
snapie?
Offline beasty - 29/11/2009 16:51
Avatar van beasty Nieuw lid gewoon ob_start(); voor je session_start(); zetten ;)

dus bv.

<?php
ob_start();
session_start();
.... code ...
?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2026 Sitemasters.be - Regels - Laadtijd: 0.254s