Warning: Cannot modify header information - headers already sent by ...
de hele foutmelding is als volgt :
Warning: Cannot modify header information - headers already sent by (output started at C:\webserver\www\Site\registreren.php:8) in C:\webserver\www\Site\registreren.php on line 311
Warning: Cannot modify header information - headers already sent by (output started at C:\webserver\www\Site\registreren.php:8) in C:\webserver\www\Site\registreren.php on line 312
Hieronder het formulier en het login script
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
#######################################################################################################
# INLOGSCHERM WEERGEVEN
#######################################################################################################
if ($action == 'login')
{
?>
#######################################################################################################
# INLOGSCHERM WEERGEVEN
#######################################################################################################
if ($action == 'login')
{
?>
<table align="center" cellpadding="5">
<tr>
<td>
<form action="?page=inloggen&action=dologin" method="post" >
</td>
</tr>
<tr>
<td class="Gewone_tekst"> Loginnaam </td>
<td> <input name="loginnaam" type="text" class="field "> </td>
</tr>
<tr>
<td class="Gewone_tekst"> Wachtwoord </td>
<td> <input name="wachtwoord" type="password" class="field "></td>
</tr>
<tr>
<td colspan="2" ><div align="center"><br />
<input type="submit" name="inloggen" value="Aanmelden" class="button2">
</div></td>
</tr>
</form>
</table>
Code (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
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
<?php
}
#######################################################################################################
# EFFECTIEF INLOGGEN
#######################################################################################################
if ($action == 'dologin')
{
$home = 'http://www.phphulp.nl';
$nickname = $_POST['loginnaam'];
$paswoord = md5($_POST['wachtwoord']);
// kijken of de nickname niet leeg is
if($nickname != "")
{
$query2 = mysql_query("SELECT gbLoginnaam FROM gebruikers WHERE gbloginnaam = '$_POST[loginnaam]'");
// kijken of de nickname bestaat indien ja
if(mysql_num_rows($query2) != 0)
{ //selecteren van inlognaam en wachtwoord
$sql1 = "SELECT gbWachtwoord FROM gebruikers WHERE gbLoginnaam = '$nickname' AND gbWachtwoord = '$paswoord'";
$query1 = mysql_query($sql1) or die(mysql_error());
while($line1 = mysql_fetch_array($query1,MYSQL_NUM))
{
// selectie omzette in variabelen
$paswoord2 = $line1[0];
}
}
// ingevuld wachtwoord en nickname vergelijken met de info in DB
if($paswoord == $paswoord2)
{
setcookie("naam", $_POST['loginnaam'], time() + (60*60*24*365)); // cookie blijft 1 jaar bestaan
setcookie("wachtwoord", md5($_POST['wachtwoord']), time() + (60*60*24*365)); // cookie blijft 1 jaar bestaan
$boodschap = "U bent succesvol ingelogd, een ogenblik geduld... <META HTTP-EQUIV=\"REFRESH\" CONTENT=\"2; URL=".$home."\">";
}
else
{
$boodschap = 'Het inloggen is mislukt';
}
}
}
echo $boodschap;
?>
}
#######################################################################################################
# EFFECTIEF INLOGGEN
#######################################################################################################
if ($action == 'dologin')
{
$home = 'http://www.phphulp.nl';
$nickname = $_POST['loginnaam'];
$paswoord = md5($_POST['wachtwoord']);
// kijken of de nickname niet leeg is
if($nickname != "")
{
$query2 = mysql_query("SELECT gbLoginnaam FROM gebruikers WHERE gbloginnaam = '$_POST[loginnaam]'");
// kijken of de nickname bestaat indien ja
if(mysql_num_rows($query2) != 0)
{ //selecteren van inlognaam en wachtwoord
$sql1 = "SELECT gbWachtwoord FROM gebruikers WHERE gbLoginnaam = '$nickname' AND gbWachtwoord = '$paswoord'";
$query1 = mysql_query($sql1) or die(mysql_error());
while($line1 = mysql_fetch_array($query1,MYSQL_NUM))
{
// selectie omzette in variabelen
$paswoord2 = $line1[0];
}
}
// ingevuld wachtwoord en nickname vergelijken met de info in DB
if($paswoord == $paswoord2)
{
setcookie("naam", $_POST['loginnaam'], time() + (60*60*24*365)); // cookie blijft 1 jaar bestaan
setcookie("wachtwoord", md5($_POST['wachtwoord']), time() + (60*60*24*365)); // cookie blijft 1 jaar bestaan
$boodschap = "U bent succesvol ingelogd, een ogenblik geduld... <META HTTP-EQUIV=\"REFRESH\" CONTENT=\"2; URL=".$home."\">";
}
else
{
$boodschap = 'Het inloggen is mislukt';
}
}
}
echo $boodschap;
?>
Ik heb geen idee waarom hij die cookies niet wil schrijven. Kan iemand me helpen aub?
Afgezien van de vraag waarom je in hemelsnaam een wachtwoord in een cookie op zou slaan zit je waarschijnlijk met het probleem dat er _geen_ html output mag zijn _voor_ het setten van een cookie.
omdat ik graag willen kunnen controleren als je naar de volgende pagina wil gaan of je daar wel recht toe hebt. dus dan zal ik vergelijken klopt jouw psw en loginnaam en bestaat die , if so dan mag je de volgende pagina zien.
Password in een cookie is erg onveilig en vrij eenvoudig te jatten.
session_start(); bovenaan je pagina, en dan overal variabelen oproepen of wijzigen met $_SESSION['var_naam'];
Groet,
Barry
Lang leve XSS...
YPM schreef op 01.04.2007 16:57:
Lang leve XSS...
wazda?
wat is xss :s
Nog zoiets, een sessie kan je ook hacken. Je moet NOOIT je wachtwoord in een sessie zetten. Zet er bijvoorbeeld een gegenereerde code in die uniek is voor een bepaalde sessie/ user. Hiermee weet iemand die de sessie hyjackt, nog steeds geen password.
Robert schreef op 01.04.2007 17:04:
@Barry
Nog zoiets, een sessie kan je ook hacken. Je moet NOOIT je wachtwoord in een sessie zetten. Zet er bijvoorbeeld een gegenereerde code in die uniek is voor een bepaalde sessie/ user. Hiermee weet iemand die de sessie hyjackt, nog steeds geen password.
Nog zoiets, een sessie kan je ook hacken. Je moet NOOIT je wachtwoord in een sessie zetten. Zet er bijvoorbeeld een gegenereerde code in die uniek is voor een bepaalde sessie/ user. Hiermee weet iemand die de sessie hyjackt, nog steeds geen password.
sorry misschien verkeerd verteld. Die kennis had ik ook.
Zoals ik het zelf altijd doe, is bij het inloggen IP & HOST opslaan in db, gebr. naam in sessie, en bij m'n switches voor pagina's checken of ip = ip & host = host where username = $sessie[username]
Tog wel een goede manier, al is het omslachtig...?
Groet,
Barry
bedankt voor jullie uitleg en tijd
Barry, niet handig & niet veilig. Die dingen zijn namelijk niet uniek. Gewoon een random code genereren, schrijf het weg in een sessie en bij iedere f5 kijk je of het userid + random code nog klopt, maak je een nieuwe code en schrijf je die weer weg in de sessie.
Arjan Kapteijn schreef op 01.04.2007 17:11:
Barry, niet handig & niet veilig. Die dingen zijn namelijk niet uniek. Gewoon een random code genereren, schrijf het weg in een sessie en bij iedere f5 kijk je of het userid + random code nog klopt, maak je een nieuwe code en schrijf je die weer weg in de sessie.
goeie, zal ik es proberen
Edit:
Waar vergelijk je die code in je sessie mee dan?
Gewijzigd op 01/01/1970 01:00:00 door Barry