Probleem met inlogscript

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tom C

Tom C

03/06/2008 19:09:00
Quote Anchor link
Hallo,

Ik heb een heel makelijk inlogscriptje gedownload. Dit heb ik in mijn website geïntegreerd, alleen, als ik met de juiste gebruikersnaam en wachtwoord inlog, krijg ik de volgende error:

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\CR\login\functions.php:48) in C:\xampp\htdocs\CR\login\index.php on line 26


Hier zijn de codes die van belang zijn

index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
session_start();

include ( "./functions.php" );
        
if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{


    // wanneer er 1 van de velden niet is ingevuld
    if ( $_POST['sGebruikersNaam'] == "" )
    {

        echo "Wel naam invullen he, ga <a

href='javascript:history.back(-1)';>terug</a>"
;
    }

    elseif ( $_POST['sWachtwoord'] == "" )
    {

        echo "Wel wachtwoord invullen he, ga <a

href='javascript:history.back(-1)';>terug</a>"
;
    }

    else // wanneer alle velden wel zijn ingevuld
    {        
        if ( !LoginControle() )
        {

            echo "Gebruikersnaam en wachtwoord zijn onbekend";
        }

        else
        {
            header ( "location: beveiligde_pagina.php" );
        }
            
    }
}

else
{
    ?>
  
    <form method="post" action="" >
            <table>
                <tr>
                    <td style="width: 100px;">
                    Gebruikersnaam:
                    </td>
                    <td>
                    <input type="text" name="sGebruikersNaam" value=""

/>
                    </td>
                </tr>
                <tr>
                    <td style="width: 100px;">
                    Wachtwoord:
                    </td>
                    <td>
                    <input type="password" name="sWachtwoord" value=""

/>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                    <input type="submit" name= submit" value="Inloggen"

/>
                    </td>
                </tr>
            </table>
    </form>
    <?php    
}
    

?>
  


functions.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php

function LoginControle ()
{
    
    $aGebruikers = array (     array('***','****'), // hier kunnen gebruikers toegevoegd worden
                            array('***','***'),
                array('***','***')
                         );

        foreach ( $aGebruikers as $value )
        {

            if ( $_POST['sGebruikersNaam'] == $value[0]  && md5 ( $_POST['sWachtwoord'] ) == md5 ( $value[1] ) )
            {
    
                $_SESSION['sGebruikersnaam'] = $_POST['sGebruikersNaam'];
                $_SESSION['bIngelogd'] = TRUE;
                $_SESSION['iTijd'] = time()+300;    
                $_SESSION['iIp'] = $_SERVER['REMOTE_ADDR'];
                return true;
            }
            
        }
    
}


function
Beveiliging()
{

    if ( isSet ( $_SESSION['bIngelogd'] ) && ( $_SESSION['bIngelogd'] == 1) )
    {

        if ( $_SESSION['iTijd'] > ( time() ) )
        {

            $_SESSION['iTijd'] = time()+300;
            return true;    
        }

        elseif ( $_SERVER['REMOTE_ADDR'] != $_SESSION['iIp'] )
        {

            return false;
        }

        else
        {
            return false;        
        }
    }
            
}



?>
  


Zou iemand mij kunnen vertellen wat die error veroorzaakt en hoe ik die oplos?

Bvd,
Tom
 
PHP hulp

PHP hulp

30/11/2024 22:12:48
 

03/06/2008 19:17:00
Quote Anchor link
De error zelf zegt dat al:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\CR\login\functions.php:48) in C:\xampp\htdocs\CR\login\index.php on line 26

Kopieer je functions.php eens naar kladblok en sla hem dan op. Kijk ook effe of je rare tekens ziet. Welke editor gebruik je?
Gewijzigd op 01/01/1970 01:00:00 door
 
Tom C

Tom C

03/06/2008 19:31:00
Quote Anchor link
Kladblok als editor..

Maar ik heb dus die funtions.php al in kladblok gekopieërd, om gebruikers toe te voegen. Maar ik kan dus niet zien waar die fout vandaan komt. :(
 

03/06/2008 19:35:00
Quote Anchor link
Er is blijkbaar ergens output naar de browser geweest, op regel 48 van functions.php, maar die zie ik hier niet staan, hier gaat functions.php maar tot 47.
 
Tom C

Tom C

03/06/2008 19:36:00
Quote Anchor link
Dat is dus het vreemde.
Ik heb hier de volledige functions.php geplaatst! Ik snap er niks van.
 
Tom C

Tom C

03/06/2008 20:10:00
Quote Anchor link
Ik heb het al opgelost!

Ik heb aan alle drie de PHP-pagina's die bij dit inlogscript betrokken waren wat toegevoegd.

ob_start(); helemaal bovenaan de pagina, en
ob_end_flush(); helemaal onderaan de pagina.
(uiteraard wel tussen de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php en ?>
tags.)

Toch bedankt!
 
GaMer B

GaMer B

03/06/2008 20:16:00
Quote Anchor link
@Tom, ob_start(); en ob_end_flush(); zijn geen oplossing voor je probleem. Je behoort naar behoren te programmeren, dus op z'n minst in dit stappenplan:
1. Logica (PHP) zonder output eerst
2. Output (eventueel met PHP echo's/prints) na de (PHP) logica.
3. Binnenpretje hebben dat je systeem werkt.

Er is toch blijkbaar output voor de header(); functie, wat resulteert in deze error. Zorg eerst dat dat opgelost is. Als je dit niet opgelost hebt, heb je in feite een defecte PHP code draaien.
Quote:
"Je plakt je band toch ook niet met een pleister, of wel?"
 

03/06/2008 20:18:00
Quote Anchor link
Dat ga je dus echt niet doen. Ob prop je in een meisje niet in php. Met ob_start omzeil je je probleem, je verhelpt het dan niet. Je gebruikt die functie dan ergens voor waar je hem niet voor gebruiken moet. Zie ook dit en dit.
Wat je moet doen is debuggen. Download eclipse ofzo, die heeft een debugger. Of zend studio. Dan kan je d'r stap voor stap doorheen lopen.
Ik heb geen tijd voor jou gedebug...
 
Tom C

Tom C

03/06/2008 23:03:00
Quote Anchor link
Het werkt toch? Ik zie het probleem niet.

en @GaMer13: Je dacht toch niet dat ik die code niet 15x heb overgekeken voordat ik deze oplossing ging gebruiken? Ik vond het op een site, en het werkte, dus lijkt mij prima.

en @Karl: Als je geen tijd hebt voor mijn 'ge-debug', reageer dan ook niet aub.

Wat me alleen hier opvalt op dit forum is, dat als je mensen om hulp vraagt, ze snel geneigd zijn om te zeggen 'los het maar lekker zelf op'. Zo komt het iig wel over. Ik post hier omdat het een PHP-forum is, waar dus mensen die er verstand van hebben mensen ermee kunnen helpen. En dat gebeurt hier dus weinig. Er wordt meer nutteloos gereageerd. Sorry dat ik dit zo zeg, maar zo ervaar ik het wel.

Ik stel hier netjes de vraag hoe het komt dat deze error verschijnt, omdat ik het dus zelf niet kan vinden, en in plaatst van dat jullie dan gewoon zeggen van 'probeer dit of dat eens', is het van 'zoek het lekker zelf uit'. Geef dan geen antwoord.

Dus: Zouden jullie zo vriendelijk willen zijn mij dan te vertellen hoe het wél moet, of laten jullie liever iemand in de steek die netjes om hulp vraagt?

Mvg,
Tom
Gewijzigd op 01/01/1970 01:00:00 door Tom C
 
Klaasjan Boven

Klaasjan Boven

03/06/2008 23:07:00
Quote Anchor link
Waarschijnlijk een spatie of een enter na de sluittag van functies.php op pagina 48
 
Tom C

Tom C

03/06/2008 23:18:00
Quote Anchor link
Klaasjan: Thnx!
Daar heb ik tenminste wat aan. ob_start en ob_end_flush weggehaald. Op onzichtbare spaties en enters gecheckt: bingo!

Heel erg bedankt!
(Nu iedereen tevreden?)
 
Klaasjan Boven

Klaasjan Boven

03/06/2008 23:20:00
Quote Anchor link
Graag gedaan, en onthoud php liegt niet, als er staat regel 48 STAAT er wat op regel 48
 

03/06/2008 23:20:00
Quote Anchor link
Tom schreef op 03.06.2008 23:03:
Het werkt toch? Ik zie het probleem niet.

en @GaMer13: Je dacht toch niet dat ik die code niet 15x heb overgekeken voordat ik deze oplossing ging gebruiken? Ik vond het op een site, en het werkte, dus lijkt mij prima.

Daar heeft GaMer13 een quote voor:
Quote:
"Je plakt je band toch ook niet met een pleister, of wel?"

Snap je wat daar bedoelt wordt?

Tom schreef op 03.06.2008 23:03:
Wat me alleen hier opvalt op dit forum is, dat als je mensen om hulp vraagt, ze snel geneigd zijn om te zeggen 'los het maar lekker zelf op'. Zo komt het iig wel over. Ik post hier omdat het een PHP-forum is, waar dus mensen die er verstand van hebben mensen ermee kunnen helpen. En dat gebeurt hier dus weinig. Er wordt meer nutteloos gereageerd. Sorry dat ik dit zo zeg, maar zo ervaar ik het wel.

quote='GaMer13 schreef op 03.06.2008 20:16']@Tom, ob_start(); en ob_end_flush(); zijn geen oplossing voor je probleem. Je behoort naar behoren te programmeren, dus op z'n minst in dit stappenplan:
1. Logica (PHP) zonder output eerst
2. Output (eventueel met PHP echo's/prints) na de (PHP) logica.
3. Binnenpretje hebben dat je systeem werkt.

Er is toch blijkbaar output voor de header(); functie, wat resulteert in deze error. Zorg eerst dat dat opgelost is. Als je dit niet opgelost hebt, heb je in feite een defecte PHP code draaien.
Quote:
"Je plakt je band toch ook niet met een pleister, of wel?"
[/quote]
Hij heeft verstand van php. Dus wat ie zegt is geen onzin.
En sommige vragen zijn al wel miljoenen keren gevraagt, waarvoor een simpele link oid wel volstaat. Waarom moet je dan elke keer weer opnieuw een heel verhaal houden van zus-en-zo?
Deze headers error is volgens mij wel de meest voorkomende. Meestal hebben mensen gewoon html boven de header staan, maar soms dus niet. Dan is er een BOM character aan het begin geplaatst door dreamweaver ofzo, die je weer niet ziet. Maar heb je ook naar die andere topics waar ik naar linkde gekeken?

Tom schreef op 03.06.2008 23:03:
Dus: Zouden jullie zo vriendelijk willen zijn mij dan te vertellen hoe het wél moet, of laten jullie liever iemand in de steek die netjes om hulp vraagt?

Karl schreef op 03.06.2008 20:18:
Wat je moet doen is debuggen. Download eclipse ofzo, die heeft een debugger. Of zend studio. Dan kan je d'r stap voor stap doorheen lopen.
Ik heb geen tijd voor jou gedebug...

Tom schreef op 03.06.2008 23:03:
en @Karl: Als je geen tijd hebt voor mijn 'ge-debug', reageer dan ook niet aub.

Ik heb geen tijd om jou code te debuggen. Dat neemt wel effetjes tijd in beslag, waarvan ik niet veel heb. Veel mensen hier hebben niet zoveel tijd over dat ze ieders code kunnen gaan debuggen. Bovendien is het handig als je dit zelf ook kunt.

Edit:
Tom schreef op 03.06.2008 23:18:
Klaasjan: Thnx!
Daar heb ik tenminste wat aan. ob_start en ob_end_flush weggehaald. Op onzichtbare spaties en enters gecheckt: bingo!

Heel erg bedankt!
(Nu iedereen tevreden?)

Ik had dus verwacht dat je dat dus al had gedaan.
Gewijzigd op 01/01/1970 01:00:00 door
 
Klaasjan Boven

Klaasjan Boven

03/06/2008 23:23:00
Quote Anchor link
@Karl ik had er minder werk van en van mijn antwoord wel hij wel gelukkig. Asl je wel tijd alles aan elkaar te quoten maar niet om die jongen even te helpen zeg dan gewoon niks
 

03/06/2008 23:28:00
Quote Anchor link
Klaasjan Boven schreef op 03.06.2008 23:23:
@Karl ik had er minder werk van en van mijn antwoord wel hij wel gelukkig. Asl je wel tijd alles aan elkaar te quoten maar niet om die jongen even te helpen zeg dan gewoon niks

Zie mijn edit. Hij had er al bij mijn post over 47 regels en kladblok uit kunnen komen. En ik reageer op hem, dat lijkt mij wel zo netjes.

Trouwens, @TS: je kunt beter een editor die syntax highlighting doet nemen zoals notepad++, je ziet dan bijvoorbeeld dat je een haakje bent vergeten, of welke bijelkaar horen. In notepad++ zie je ook speciale characters. Eclipse, of zend, of iets anders kan natuurlijk ook.
 
Tom C

Tom C

04/06/2008 09:28:00
Quote Anchor link
@Karl: Je zei het wel ongeveer ja, maar niet zo duidelijk als Klaasjan.
Jij begon met 'output naar de browser' enz., maar hoe moet ik zoiets begrijpen als total PHPn00b?
Als je het gewoon in volkstaal zegt (zoals Klaasjan), begrijpt iedereen het.
NIW, nog wel bedankt voor de tip. Heb ff notepad++ gedownload.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.