[ERROR] Header already sent on line 8

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Brandon Cooper

Brandon Cooper

01/11/2010 19:55:46
Quote Anchor link
Beste,

Ik heb een foutje opgelopen als ik in mijn index.php login.php include. Dit doe ik omdat die dan mooi in het frame komt.

Zie hier de fout

Quote:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/bas/domains/beerboys.nl/public_html/site/beveiligd/index.php:8) in /home/bas/domains/beerboys.nl/public_html/site/beveiligd/login.php on line 2


Het stukje code van index.php
Quote:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Beerboys design</title>
<link rel="stylesheet" type="text/css" href="./beerboys.css" media="all" />
<!--[if IE]>
<style type="text/css" media="all">.borderitem {border-style: solid;}</style>
<![endif]-->
</head>

login.php
Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?PHP
session_start();
$host="localhost"; // De host (Meestal localhost)
$username="****************"; // Je mySQL
$password="***********"; //  Je wachtwoord
$db_name="**************"; // Database naam
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') { [/quote]

Wie o wie?

Alvast bedankt.
Gewijzigd op 01/11/2010 19:56:30 door Brandon Cooper
 
PHP hulp

PHP hulp

27/11/2024 11:28:09
 
Benny Lava

Benny Lava

01/11/2010 20:00:34
Quote Anchor link
Session_start(); moet altijd (meeste gevallen) boven aan de pagina staan. Nu verstuur je dus al HTML code en vervolgens ga je verder met login.php waar session_start() staat. Dus je zult eerst session_start() moeten aanroepen en vervolgens de rest van de code etc.
 
Jasper hoi

jasper hoi

01/11/2010 20:01:54
Quote Anchor link
Je kan geen session_start() doen als je al headers hebt verzonden. Wat dus betekent dat je dat moet doen voordat je HTML naar de browser stuurt.
 
Brandon Cooper

Brandon Cooper

01/11/2010 20:02:13
Quote Anchor link
Dus jij zegt dat ik mijn connect boven index.php moet knallen vanaf lijn 1. En dan weg moet halen uit login.php?

Toevoeging op 01/11/2010 20:02:33:

WERKT!! Bedankt!

Toevoeging op 01/11/2010 20:03:45:

Btw alleen session_start(); de rest moet geowon in login.php blijven.
 
Jasper hoi

jasper hoi

01/11/2010 20:10:03
Quote Anchor link
@bas van de Pol,
Het beste wat je kan doen is eerste alle php code uitvoeren en dan pas de html code te maken, nog beter is het gebruik van een template engine zoals smarty.
 
Brandon Cooper

Brandon Cooper

01/11/2010 20:11:46
Quote Anchor link
Ja ik merk het. De HTML zit in de login.php verwerkt. En.. Als ik de sessie boven aan de pagina open. Dan log ik in, en op een of andere manier zegt ie dan alsof de sessie NIET is aangemaakt. Hmm erg vreemd.
 
Jasper hoi

jasper hoi

01/11/2010 20:15:21
Quote Anchor link
@Bas van der Pol,
post anders de volledige code die je gebruikt even hier, kunnen we je misschien wat beter helpen.
 
Brandon Cooper

Brandon Cooper

01/11/2010 20:18:51
Quote Anchor link
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
<?PHP
session_start();
$host="localhost"; // De host (Meestal localhost)
$username="members_login"; // Je mySQL
$password="dAH8Eur"; //  Je wachtwoord
$db_name="dahdateauihd"; // Database naam
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
?>

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Dit is niet mijn gewoonte om queries op deze manier in te springen, maar om de layout
    // van Sitemasters niet naar de knoppen te helpen doe ik dit even gek :)

    
    $qLogin = mysql_query("SELECT id FROM gebruikers WHERE
                gebruikersnaam = '"
.mysql_real_escape_string($_POST['gebruikersnaam'])."' AND
                wachtwoord     = '"
.sha1($_POST['wachtwoord'])."'");
    
    // Met deze query selecteren we het gebruikers-id van de gebruikersnaam en controleren we of
    // de account geactiveerd is in 1 keer. Als je deze niet snapt, lees hem dan 20 keer :)
    // Je kan natuurlijk ook een tutorial over dit soort queries lezen, alhoewel
    // ze poepsimpel zijn IMO.
    // Deze query mag overigens geen resultaten opleveren om te mogen inloggen. Als deze
    // wél een resultaat oplevert is de account nog niet geactiveerd (en bestaat de
    // activatiedata dus nog).

    $qActivatie = mysql_query("SELECT COUNT(id) FROM gebruikers, gebruikers_activaties WHERE
        gebruikers.gebruikersnaam = '"
.mysql_real_escape_string($_POST['gebruikersnaam'])."' AND
        gebruikers.id             = gebruikers_activaties.gebruikers_id"
);
        
    if(mysql_result($qActivatie,0) != 0) {
        echo 'De account is nog niet geactiveerd.';
    }
elseif(mysql_num_rows($qLogin) == 0) {
        echo 'De gebruikersnaam/wachtwoord combinatie is niet correct.';
    }
else {
        // Alles ok, inloggen dus.
        // Nu is 1 ding belangerijk:
        // ZORG DAT ER EEN session_start() GEPLAATST IS, HETZIJ IN JE INDEX.PHP WAAR
        // DEZE PAGINA IN GEPLAATS WORDT, HETZIJ BOVENAAN DEZE PAGINA (ALS ER GEEN
        // INCLUDESYSTEEM IS)!!!

        $_SESSION['gebruiker']         = mysql_result($qLogin, 0);
        $_SESSION['gebruikersnaam'] = $_POST['gebruikersnaam'];
        // Mocht je nog andere data willen in je sessie,  
        // zoals een level, dien je dit hier te plaatsen.

        ?>

        Je bent succesvol ingelogged. Klik <a href="controlepaneel.php">hier</a> om naar je controlepaneel te gaan.
        <?php
    }
}

?>

<form action="<?=htmlentities($_SERVER['REQUEST_URI'])?>" method="post">
Gebruikersnaam:<br />
<input type="text" name="gebruikersnaam" /><br />
Wachtwoord:<br />
<input type="password" name="wachtwoord" /><br />
<br />
<input type="submit" value="Inloggen die handel" />
</form>


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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?PHP
session_start();
$host="localhost"; // De host (Meestal localhost)
$username="members_login"; // Je mySQL
$password="dAH8Eur"; //  Je wachtwoord
$db_name="dahdateauihd"; // Database naam
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
?>

<?php  
// Zorg dat hierboven ERGENS session_start() staat!  
if(isset($_SESSION['gebruiker'])) {  
    // E-mailadres bijwerken:  
    // De variabele fout aanmaken om fouten ivm 'undefined variable' te voorkomen  

    $fout = '';  
    if($_SERVER['REQUEST_METHOD'] == 'POST') {  
        // Zelfde functie als bij registratie  
        // Een globale functies.php waarin je al je functies gooit is dus wel handig  

        function is_email($in) {  
            list($local, $host) = explode('@', $in);  
            $pattern_local = '^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.'
                           . '([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$';  
            $pattern_host = '^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)'
                          . '[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$';  
            $match_local = eregi($pattern_local, $local);  
            $match_host = eregi($pattern_host, $host);  
        
            return ($match_local && $match_host ? true : false);  
        }
      
        
        if(!is_email($_POST['email'])) {  
            $fout = 'Geen geldig e-mailadres!';  
        }
else {  
            mysql_query("UPDATE gebruikers SET  
                email = '"
.mysql_real_escape_string($_POST['email'])."'  
                WHERE id = "
.$_SESSION['gebruiker']);  
                // Vervolgens moet de pagina vernieuwd worden.  
                header('Location: '.$_SERVER['REQUEST_URI']);  
        }  
    }
else {  
        // Het formulier is nog niet verzonden, dus vullen we het veldje met het huidig e-mailadres  
        $email = mysql_result(mysql_query("SELECT email FROM gebruikers WHERE id = ".$_SESSION['gebruiker']),0);  
    }
  
?>
  
<h1>Welkom, <?=htmlentities($_SESSION['gebruikersnaam'])?>!</h1>  
Wijzig je e-mailadres:  
<?=$fout?>  
<form action="<?=htmlentities($_SERVER['REQUEST_URI'])?>" method="post">  
<input type="text" name="email" value="<?=htmlentities($email)?>" />  
<input type="submit" value="Bijwerken" />
</form>
<a href="uitloggen.php" onclick="return confirm('Ben je zeker dat je je wilt afmelden?');">Uitloggen</a>  
<?php  
} else {  
    echo 'Je bent niet ingelogged, klik <a href="login.php">hier</a> om dit te doen.';  
}
  
?>

[/quote]
[quote]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Beerboys design</title>
    <link rel="stylesheet" type="text/css" href="./beerboys2.css" media="all" />
    <!--[if IE]>
    <style type="text/css" media="all">.borderitem {border-style: solid;}</style>
    <![endif]-->
</head>

<body>

<div id="Shape_1">
</div>
<div class="Oh_lager_beer_It_makes_good_cheer_And_proves_the_poor_man">
    
        <p class="lastNode">"Oh, lager beer! It makes good cheer, And <br />proves the poor man's worth; It cools <br />the body through and through, and <br />regulates the health."
    </p>
</div>
<div id="Shape_2">
</div>
<div class="Agenda">
    
        <p class="lastNode">Agenda
  </p>
</div>
<div class="Fotos">
    
        <p class="lastNode">Foto&rsquo;s
    </p>
</div>
<div class="Ledenlijst">
    
        <p class="lastNode">Ledenlijst
    </p>
</div>
<div class="Home">
    
        <p class="lastNode">Home
    </p>
</div>
<div class="Biografie">
    
        <p class="lastNode">Biografie
    </p>
</div>
<div class="Nieuws">
    
        <p class="lastNode">Nieuws
    </p>
</div>
<div id="Shape_9">
</div>

<div class="Actueel">
    
        <p class="lastNode">Inloggen
    </p>
</div>

<div class="Txt_Lorem">
        <p>

<?PHP
include('login.php');
?>


        </p><p class="lastNode">
    </p>
</div>




</div>
<div id="beerboys_r1_c1">
</div>
<div id="beerboys_r1_c7">
</div>
<img src="images/beerboys_r1_c17.jpg" id="beerboys_r1_c17" alt="" />
<img src="images/beerboys_r2_c17.jpg" id="beerboys_r2_c17" alt="" />
<div id="beerboys_r5_c1">
</div>
<div id="beerboys_r6_c1">
</div>
<div id="beerboys_r6_c3">
</div>
<div id="beerboys_r6_c5">
</div>
<div id="beerboys_r6_c8">
</div>
<div id="beerboys_r6_c10">
</div>
<div id="beerboys_r6_c12">
</div>
<div id="beerboys_r11_c1">
</div>
</body>
</html>


Onthou: Die include, daar moet ik dus een oplossing voor vinden.

Toevoeging op 01/11/2010 20:20:58:

1e script is dus login.php

2e is de controle pnaeel waar je dan heen gaat, die geeft aan dat je dus dan neit ingelogd bent als ik men sessie boven het 3e script doet de pagina met de makeup enzo waar die inkomt

3e naja de site de omheining zegmaar.

http://www.beerboys.nl/site/beveiligd/index.php

Gebruik code-tags voor het overzichtelijk weergeven van je code[/modedit]
Gewijzigd op 01/11/2010 20:40:18 door Joren de Wit
 
Jasper hoi

jasper hoi

01/11/2010 20:33:36
Quote Anchor link
@Bas,
Ik zou eerder voor een structuur als deze gaan als ik geen template engine gebruik.
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
<?php

/**
 * @author Jasper
 * @copyright 2010 vanOeffelHaarlem
 */

//alleen voor debugging nooit zo online zetten!

ini_set('display_errors', 'On');
error_reporting(E_ALL);

session_start();


$host="localhost"; // De host (Meestal localhost)
$username="members_login"; // Je mySQL
$password="dAH8Eur"; //  Je wachtwoord
$db_name="dahdateauihd"; // Database naam

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

//controleer of iemand probeert in te loggen
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    //controlleer username en password  
}
else{
    //controlleer of de gebruiker is ingelogd
    if($_SESSION['ingelogd'] == true){
        //laat het controle paneel zien
    }
    else{
        //de gebruiker is niet ingelogd, dus laat een login forum zien
    }
}


echo $html;

?>
 
Gerben pHp

Gerben pHp

03/11/2010 22:37:32
Quote Anchor link
Eerst php code uitvoeren, daarna html ouput verzenden:

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
<?php
// Start buffer
ob_start();

// Content
echo 'Blablabla';
// Is nu wel toegestaan!
session_start();

// Sla buffer op en beëindig bufferen
$buffer = ob_get_flush();
// Schoon buffer op
ob_clean();

// Toon opgeslagen buffer
echo $buffer;

?>
 
Milo S

Milo S

04/11/2010 08:14:37
Quote Anchor link
@ Gerben? WTF? ob_start? waarom? das helemaal niet nodig!

Persoonlijk zou ik het zo doen... Je config lekker apart net als je controlpannel en een logische volgorde in het script. Makkelijk toch?
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
<?php
# Sessie starten
session_start();

# DB Connectie maken
include('config.php');

# Is ingelogt?
if( $_SESSION['login'] )
{

    # Controle pagneel
    include('ControlPannel.php');
}

else
{
    # Als er gesubmit is
    if( $_SERVER['REQUEST_METHOD'] == 'POST' )
    {

        # Check uitvoeren...        
    }
    else
    {
        # Log in formulier
        echo '
        <form action="" method="post">
        
            <label></label>
            <input name="" type="" />
            
            <label></label>
            <input name="" type="" />
            
            <input type="" value="" />
        
        </form>        
        '
;
    }
}

?>
 
Luc a

luc a

04/11/2010 08:18:05
Quote Anchor link
je kan het ook doen door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ob_start();
# rest van de code
[/code] te gebruiken
Gewijzigd op 04/11/2010 08:20:40 door luc a
 
Milo S

Milo S

04/11/2010 08:50:12
Quote Anchor link
ob_start moet je niet gebruiken, en zeker niet als het niet nodig is...
 
TJVB tvb

TJVB tvb

04/11/2010 09:32:32
Quote Anchor link
Gerben en Luc, OB is wat dames zo af en toe nodig hebben tegen het bloeden. Het is niet om je script op een brakke manier te kunnen gebruiken.
 
Obelix Idefix

Obelix Idefix

04/11/2010 09:53:32
Quote Anchor link
TJVB tvb op 04/11/2010 09:32:32:
Gerben en Luc, OB is wat dames zo af en toe nodig hebben tegen het bloeden.


:D

Zo hoor je wel goede argumenten om iets niet (meer) te doen... ;-)
 
Milo S

Milo S

04/11/2010 13:34:31
Quote Anchor link
Offtopic:

Whaaah, die moeten we er in houden...
Telemarketiers hebben een boekje met geschikte antwoorden, zullen we er een samenstellen voor phphulp? Kiesbaar via een dropdown formuliertje? XD


Maar even zonder dollen, tis gewoon niet nodig. Bouw je script opnieuw op met een logische volgorde en niks meer aan het handje...
 
TJVB tvb

TJVB tvb

04/11/2010 13:45:41
Quote Anchor link
Het is een argument die ik ooit eens van iemand anders gehoord had. Het was toen ook bedoeld om mensen eens na te laten denken waarom ze nu perse ob willen gebruiken,

Maar wat Milo zegt klopt gewoon. Opbouw overnieuw en het probleem is opgelost.
 



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.