Cannot modify header information - headers already sent

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Mathijs Frencken

Mathijs Frencken

24/11/2011 22:13:55
Quote Anchor link
Hallo!
Dit is de tweede keer dat ik hier om hulp moet vragen en ik hoop even goed geholpen te worden als de eerste keer (toen was het een simpeler probleem :) )

Ik werk nu aan een login systeem die van index.php via een zwevend panel in de top (die in index.php word gehaald via een include()), gebruikers de gelegenheid geeft om in te loggen.

De informatie post hij dan naar loginhandler.php die je dan weer terug zou moeten sturen met of een succesvolle login, of een error dat de gegevens niet kloppen of een bericht met "Registratie voltooid" alleen de header is al verzonden op index.php en de output is al gestart dus loginhandler.php kan de gebruiker nu dus niet terugsturen nadat er een actie is ondernomen.

Zou u mij kunnen helpen? Het is niet mijn script, ik snap het wel maar dit is nog boven mijn niveau (ik zit nog op middelbare school :) )
De website is: http://mfrencken.zernikecollege.nl/index.php (de layout is ook nu niet helemaal top, die heb ik al eens eerder wel in orde gekregen het gaat nu specifiek om die headers)

nu het begin van de source van index.php (de rest is volgens mij onbelangrijk):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
include 'loginhandler.php';
include 'login/panel.php';
require 'connect.php';
?>

<!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>


dan de code van de zwevende panel in de bovenkant:
panel.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
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
<!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>A Cool Login System With PHP MySQL &amp jQuery | Tutorialzine demo</title>
    
    
    <link rel="stylesheet" type="text/css" href="login_panel/css/slide.css" media="screen" />
    
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    
    <!-- PNG FIX for IE6 -->
    <!-- http://24ways.org/2007/supersleight-transparent-png-in-ie6 -->
    <!--[if lte IE 6]>
        <script type="text/javascript" src="login_panel/js/pngfix/supersleight-min.js"></script>
    <![endif]-->
    
    <script src="login_panel/js/slide.js" type="text/javascript"></script>
    
    <?php echo $script; ?>
</head>

<body>

<!-- Panel -->
<div id="toppanel">
    <div id="panel">
        <div class="content clearfix">
            <div class="left">
                <h1>The Sliding jQuery Panel</h1>
                <h2>A register/login solution</h2>        
                <p class="grey">You are free to use this login and registration system in you sites!</p>
                <h2>A Big Thanks</h2>
                <p class="grey">This tutorial was built on top of <a href="http://web-kreation.com/index.php/tutorials/nice-clean-sliding-login-panel-built-with-jquery" title="Go to site">Web-Kreation</a>'s amazing sliding panel.</p>
            </div>
            
            
            <?php
            
            if(!$_SESSION['id']):
            
            ?>

            
            <div class="left">
                <!-- Login Form -->
                <form class="clearfix" action="loginhandler.php" method="post">
                    <h1>Member Login</h1>
                    
                    <?php
echo '<div class="err">'.$_SESSION['msg']['login-err'].'</div>';
                            unset($_SESSION['msg']['login-err']);
                        
                        if($_SESSION['msg']['login-err'])
                        {

                            echo '<div class="err">'.$_SESSION['msg']['login-err'].'</div>';
                            unset($_SESSION['msg']['login-err']);
                        }

                    ?>

                    
                    <label class="grey" for="username">Username:</label>
                    <input class="field" type="text" name="username" id="username" value="" size="23" />
                    <label class="grey" for="password">Password:</label>
                    <input class="field" type="password" name="password" id="password" size="23" />
                    <label><input name="rememberMe" id="rememberMe" type="checkbox" checked="checked" value="1" /> &nbsp;Remember me</label>
                    <div class="clear"></div>
                    <input type="submit" name="submit" value="Login" class="bt_login" />
                </form>
            </div>
            <div class="left right">            
                <!-- Register Form -->
                <form action="" method="post">
                    <h1>Not a member yet? Sign Up!</h1>        
                    
                    <?php
                        
                        if($_SESSION['msg']['reg-err'])
                        {

                            echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
                            unset($_SESSION['msg']['reg-err']);
                        }

                        
                        if($_SESSION['msg']['reg-success'])
                        {

                            echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
                            unset($_SESSION['msg']['reg-success']);
                        }

                    ?>

                            
                    <label class="grey" for="username">Username:</label>
                    <input class="field" type="text" name="username" id="username" value="" size="23" />
                    <label class="grey" for="email">Email:</label>
                    <input class="field" type="text" name="email" id="email" size="23" />
                    <label>A password will be e-mailed to you.</label>
                    <input type="submit" name="submit" value="Register" class="bt_register" />
                </form>
            </div>
            
            <?php
            
            else:
            
            ?>

            
            <div class="left">
            
            <h1>Members panel</h1>
            
            <p>You can put member-only data here</p>
            <a href="registered.php">View a special member page</a>
            <p>- or -</p>
            <a href="?logoff">Log off</a>
            
            </div>
            
            <div class="left right">
            </div>
            
            <?php
            endif;
            ?>

        </div>
    </div> <!-- /login -->    

    <!-- The tab on top -->    
    <div class="tab">
        <ul class="login">
            <li class="left">&nbsp;</li>
            <li>Hello <?php echo $_SESSION['usr'] ? $_SESSION['usr'] : 'Guest';?>!</li>
            <li class="sep">|</li>
            <li id="toggle">
                <a id="open" class="open" href="#"><?php echo $_SESSION['id']?'Open Panel':'Log In | Register';?></a>
                <a id="close" style="display: none;" class="close" href="#">Close Panel</a>            
            </li>
            <li class="right">&nbsp;</li>
        </ul>
    </div> <!-- / top -->
    
</div> <!--panel -->


</body>
</html>

en dan als laatste loginhandler.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
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
161
162
163
164
165
<?php

define('INCLUDE_CHECK',true);

require 'connect.php';
require 'functions.php';
// Those two files can be included only if INCLUDE_CHECK is defined


session_name('tzLogin');
// Starting the session

session_set_cookie_params(2*7*24*60*60);
// Making the cookie live for 2 weeks

session_start();

if($_SESSION['id'] && !isset($_COOKIE['tzRemember']) && !$_SESSION['rememberMe'])
{

    // If you are logged in, but you don't have the tzRemember cookie (browser restart)
    // and you have not checked the rememberMe checkbox:


    $_SESSION = array();
    session_destroy();
    
    // Destroy the session
}


if(isset($_GET['logoff']))
{

    $_SESSION = array();
    session_destroy();
    
    header("Location: demo.php");
    exit;
}


if($_POST['submit']=='Login')
{

    // Checking whether the Login form has been submitted
    
    $err = array();
    // Will hold our errors
    
    
    if(!$_POST['username'] || !$_POST['password'])
        $err[] = 'All the fields must be filled in!';
    
    if(!count($err))
    {

        $_POST['username'] = mysql_real_escape_string($_POST['username']);
        $_POST['password'] = mysql_real_escape_string($_POST['password']);
        $_POST['rememberMe'] = (int)$_POST['rememberMe'];
        
        // Escaping all input data

        $row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM tz_members WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));

        if($row['usr'])
        {

            // If everything is OK login
            
            $_SESSION['usr']=$row['usr'];
            $_SESSION['id'] = $row['id'];
            $_SESSION['rememberMe'] = $_POST['rememberMe'];
            
            // Store some data in the session
            
            setcookie('tzRemember',$_POST['rememberMe']);
        }

        else $err[]='Wrong username and/or password!';
    }

    
    if($err)
    $_SESSION['msg']['login-err'] = implode('<br />',$err);
    // Save the error messages in the session

    header("Location: demo.php");
    exit;
}

else if($_POST['submit']=='Register')
{

    // If the Register form has been submitted
    
    $err = array();
    
    if(strlen($_POST['username'])<4 || strlen($_POST['username'])>32)
    {

        $err[]='Your username must be between 3 and 32 characters!';
    }

    
    if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['username']))
    {

        $err[]='Your username contains invalid characters!';
    }

    
    if(!checkEmail($_POST['email']))
    {

        $err[]='Your email is not valid!';
    }

    
    if(!count($err))
    {

        // If there are no errors
        
        $pass = substr(md5($_SERVER['REMOTE_ADDR'].microtime().rand(1,100000)),0,6);
        // Generate a random password
        
        $_POST['email'] = mysql_real_escape_string($_POST['email']);
        $_POST['username'] = mysql_real_escape_string($_POST['username']);
        // Escape the input data
        
        
        mysql_query("    INSERT INTO tz_members(usr,pass,email,regIP,dt)
                        VALUES(
                        
                            '"
.$_POST['username']."',
                            '"
.md5($pass)."',
                            '"
.$_POST['email']."',
                            '"
.$_SERVER['REMOTE_ADDR']."',
                            NOW()
                            
                        )"
);
        
        if(mysql_affected_rows($link)==1)
        {

            send_mail(    '[email protected]',
                        $_POST['email'],
                        'Registration System Demo - Your New Password',
                        'Your password is: '.$pass);

            $_SESSION['msg']['reg-success']='We sent you an email with your new password!';
        }

        else $err[]='This username is already taken!';
    }


    if(count($err))
    {

        $_SESSION['msg']['reg-err'] = implode('<br />',$err);
    }
    
    
    header("Location: demo.php");
    exit;
}


$script = '';

if($_SESSION['msg'])
{

    // The script below shows the sliding panel on page load
    
    $script = '
    <script type="text/javascript">
    
        $(function(){
        
            $("div#panel").show();
            $("#toggle a").toggle();
        });
    
    </script>'
;
    
}

?>

Ik ben al een tijdje opzoek naar een oplossing, op een ander manier doorsturen d.m.v een javascript zorgt dat er geen bericht meekomt en dat de gebruiker dan nog steeds niet kan inloggen :(
Gewijzigd op 24/11/2011 22:29:52 door Mathijs Frencken
 
PHP hulp

PHP hulp

25/11/2024 12:42:30
 
Wouter J

Wouter J

24/11/2011 22:21:19
Quote Anchor link
Zou je alsjeblieft alleen relevante code willen plaatsen?

En daarnaast, lees even deze tutorial door en je begrijpt het: www.phphulp.nl/php/tutorial/php-algemeen/header-already-sent/738/

Je leeftijd doet er niet toe, 50% van al deze mensen zit denk ik op de middelbare school...
 
Mathijs Frencken

Mathijs Frencken

24/11/2011 22:35:02
Quote Anchor link
Ik heb het gelezen, al eerder trouwens :)
(had eerst gezocht op deze website voor dat ik postte).
Maar helaas kom ik er nog steeds niet uit, ik heb de relevante code gepost maar ik weet niet precies waar het probleem is dus ik weet niet helemaal wat ik weg kan laten.

Het script dat ik gebruik maakt ook gebruik van cookies, misschien heeft dit er iets mee te maken?
 
- Ariën  -
Beheerder

- Ariën -

24/11/2011 22:41:36
Quote Anchor link
Het staat toch echt in dat artikel uitgelegd?

Kijk eens naar je error, daar wordt al verwezen op welke lijn de output staat.
 
Mathijs Frencken

Mathijs Frencken

24/11/2011 22:45:09
Quote Anchor link
ja er staat (output started at /home/zcollege/domains/mfrencken.zernikecollege.nl/public_html/index.php:1) in /home/zcollege/domains/mfrencken.zernikecollege.nl/public_html/loginhandler.php on line 57

op line 57 staat de header die de gebruiker probeert door te sturen,

en op line 1 van index.php staat
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
include 'loginhandler.php';
[
/code]

Ik snap gewoon niet wat hier fout aan is, ik heb het artikel gelezen maar ik kom er nog niet uit :(
Gewijzigd op 24/11/2011 22:45:51 door Mathijs Frencken
 
- Ariën  -
Beheerder

- Ariën -

24/11/2011 22:49:34
Quote Anchor link
Staat er ook geen spatie voor?

Anders even de inhoud kopieeren en opnieuw opslaan in 'notepad'. Waarschijnlijk heb je een B-O-M (Byte-order-mark) bovenaan staan, die moeilijk doet.
 
- SanThe -

- SanThe -

24/11/2011 22:54:45
Quote Anchor link
Al die html is ook output en dat mag dus ook niet vóór header() staan.
 
Mathijs Frencken

Mathijs Frencken

24/11/2011 22:57:41
Quote Anchor link
Nope geen spatie ervoor of erachter, alles opgeslagen in notepad, opgeslagen en de orginelen vervangen maar zonder succes.. hopeloze zaak? :(
 
- Ariën  -
Beheerder

- Ariën -

24/11/2011 23:01:58
Quote Anchor link
En zie je in de HTML-broncode een vage spatie of andere vorm van output staan op de plek waar die header zou staan?
 
Mathijs Frencken

Mathijs Frencken

24/11/2011 23:09:17
Quote Anchor link
O dit is dom, er staat een spatie voor de headers.. probleem opgelost dankjewel!
Er zou echt een makkelijkere oplossing moeten zijn om die venijnige spaties te vinden =)
Nogmaals bedankt !
 
Jacco Brandt

Jacco Brandt

25/11/2011 14:38:22
Quote Anchor link
Die is er, ctrl+F
 



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.