PHP Header warnings

Pagina: 1
Acties:
  • 40 views sinds 30-01-2008

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Ik ben al eventjes bezig om vanuit een bestaande login script een eenvoudig gebruikerssysteem te maken. Nu krijg ik na mijn login steeds de melding"Cannot modify header information". Uiteraard ben ik daarmee op internet naar aan het zoeken geweest en ik weet dan ook dat ik geen echo's voor de header moet zetten. Toch krijg ik wel nog steeds deze error.

Dit is de bron:
PHP:
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
<?php
//error_reporting( E_ERROR );

// Connects to your Database 
include ("includes/mysqlconnect.php");

//Checks if there is a login cookie
if(isset($_COOKIE['ID_my_site']))

//if there is, it logs you in and directes you to the members page
{ 
    $gebruikersnaam = mysql_real_escape_string( $_COOKIE['ID_my_site'] ); 
    $wachtwoord = mysql_real_escape_string ($_COOKIE['Key_my_site'] );
    
    $check = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '$gebruikersnaam'")or die(mysql_error());

    while($info = mysql_fetch_array( $check ))  
        {

        if ($wachtwoord != $info['wachtwoord']) 
            {
            
            }

        else
            {
            header("Location: index.php?page=gebruikers");

            }

        }

}


//if the login form is submitted

if (isset($_POST['submit'])) { // if form has been submitted


// makes sure they filled it in

    if(!$_POST['gebruikersnaam'] | !$_POST['wachtwoord']) {
        die('Uw inloggegevens zijn onjuist. Probeer het <a href="index.php?page=login">opnieuw</a>.');
    }

    // checks it against the database

    if (!get_magic_quotes_gpc()) {
        $_POST['gebruikersnaam'] = addslashes($_POST['gebruikersnaam']);
    }

    $check = mysql_query("SELECT * FROM gebruikers WHERE gebruikersnaam = '".mysql_real_escape_string($_POST['gebruikersnaam'])."'")or die(mysql_error());

//Gives error if user doesn't exist

$check2 = mysql_num_rows($check);
if ($check2 == 0) {
        die('Uw inloggegevens zijn onjuist. Probeer het <a href="index.php?page=login">opnieuw</a>.');
                }


while($info = mysql_fetch_array( $check )) {

    $_POST['wachtwoord'] = stripslashes($_POST['wachtwoord']);
    $info['wachtwoord'] = stripslashes($info['wachtwoord']);
    $_POST['wachtwoord'] = sha1($_POST['wachtwoord']);

    //gives error if the password is wrong

    if ($_POST['wachtwoord'] != $info['wachtwoord']) {
        die('Uw inloggegevens zijn onjuist. Probeer het <a href="index.php?page=login">opnieuw</a>.');
    } else {
        // if login is ok then we add a cookie 
        
        $_POST['gebruikersnaam'] = stripslashes($_POST['gebruikersnaam']);

        $hour = time() + 3600;
        
        setcookie(ID_my_site, $_POST['gebruikersnaam'], $hour);
        setcookie(Key_my_site, $_POST['wachtwoord'], $hour);    

        //then redirect them to the members area
        header("Location: index.php?page=gebruikers");
        exit;
        //include('content/gebruikers.php');
        //echo "U bent ingelogd, welkom!";
    }

}

} else {    

// if they are not logged in
?>

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<table>
<tr><td colspan="3"><h1>InhollandAir - Login</h1></td></tr>
<tr><td>E-mail</td><td>:</td><td><input type="text" name="gebruikersnaam" maxlength="40"></td></tr>
<tr><td>Wachtwoord</td><td>:</td><td><input type="password" name="wachtwoord" maxlength="50"></td></tr>
<tr><td>&nbsp;</td><td>&nbsp;</td><td><input type="submit" name="submit" value="Login"></td></tr>
<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td colspan="3" align="center">Heeft u nog geen account? <a href="index.php?page=registreer">Registreren</a>.</td></tr>
</table>
</form>
<?php
}

?>

En het probleem speelt zich af (volgens de error) bij:
PHP:
1
2
3
4
5
        setcookie(ID_my_site, $_POST['gebruikersnaam'], $hour);
        setcookie(Key_my_site, $_POST['wachtwoord'], $hour);    

        //then redirect them to the members area
        header("Location: index.php?page=gebruikers");


Wat doe ik nou fout? Want na enkele uurtje prutsen wil het nog steeds maar niet lukken...

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:24

gorgi_19

Kruimeltjes zijn weer op :9

De foutmelding geeft een regelnummer en daar zal iets van een enter of spatie oid staan.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Als je wat gezocht had had je het echt zo gevonden,

Je output eerst wat content (HTML) en daarna doe je nog een keer een header() call, dat mag niet :)


verder doe je een setcookie, en daarna een header:location, en die gaat ook niet werken geloof ik :)

[ Voor 39% gewijzigd door SchizoDuckie op 27-03-2007 16:19 ]

Stop uploading passwords to Github!


  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
gorgi_19 schreef op dinsdag 27 maart 2007 @ 16:17:
De foutmelding geeft een regelnummer en daar zal iets van een enter of spatie oid staan.
De warning geeft regel 80,81 en 84 aan, maar ik heb er geen enters of spaties staan.

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 31-10 21:55
setcookie() stuurt header-informatie dus moet voor iedere andere output staan.. Heb je dat ook? (zo te doen heb je n.l. een deel van je code weggelaten.)
Zie: http://nl2.php.net/manual/en/function.setcookie.php

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

De eerste parameter van setcookie is een string.

http://nl3.php.net/setcookie

PHP:
1
2
        setcookie('ID_my_site', $_POST['gebruikersnaam'], $hour);
        setcookie('Key_my_site', $_POST['wachtwoord'], $hour);

Programmer - an organism that turns coffee into software.


  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
SchizoDuckie schreef op dinsdag 27 maart 2007 @ 16:18:
Als je wat gezocht had had je het echt zo gevonden,

Je output eerst wat content (HTML) en daarna doe je nog een keer een header() call, dat mag niet :)


verder doe je een setcookie, en daarna een header:location, en die gaat ook niet werken geloof ik :)
Ik heb echt een tijdje gezocht. Ik heb de bron hiervandaan, daar doen ze precies hetzelfde: http://php.about.com/od/finishedphp1/ss/php_login_code.htm

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:17

Janoz

Moderator Devschuur®

!litemod

Naast het feit dat we geen support leveren op scripts van derden is de 'headers already sent' foutmelding 1 van de meest simpel op te lossen foutmelding. Het goed lezen van de foutmelding moet je al een duidelijk beeld van eht probleem geven en mocht dit niet genoeg zijn dan kun je nog meer info vinden in de manual bij header. Er is zelfs een stukje over geschreven in de PW faq en google levert miljoenen resultaten waarvan vele gewoon relevant zijn.


Kortom, ik kan me niet aan de indruk onttrekken dat je er ook maar geen enkele moeite ingestoken hebt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1

Dit topic is gesloten.