Hallo, ben bezig aan een login. Alles ging prima totdat ik met cookies begon.

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

<?php
#######################################################################################################
# INLOGSCHERM WEERGEVEN
#######################################################################################################

if ($action == 'login')
{
?>

<table align="center" cellpadding="5">
<tr>
<td>
<form action="?page=inloggen&amp;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>


<?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;
?>



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.
zet het dan in sessies.

session_start(); bovenaan je pagina, en dan overal variabelen oproepen of wijzigen met $_SESSION['var_naam'];

Groet,


Barry
YPM schreef op 01.04.2007 16:57
Lang leve XSS...



wazda?
wat is xss :s
@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.
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.


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
great ik kan dus gans opnieuw beginnen maar dan met sessies
bedankt voor jullie uitleg en tijd

Reageren