Cookies
daar zet ik mijn sessies in..
nu wil ik er een cookie aan toevoegen..
als je dan inlogt.. krijg je een header fout.. terwijl
sessionstart(); gewoon helemaal bovenaan staat.
en kan je een paar regels rond om de fout laten zien?
Dat probleem heb ik ook, dat komt doordat er of css tussen de SESSION en cookie zit, of de headers zoals: <meta ... blablabla>
er zit niets tussen de session en het stuk dat ik het cookie set..
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
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
<?
if ($submit){
if (isset($_COOKIE['login'])){
echo "je bent al bekend ";
}
else{
$sql_db = "SELECT id, loginnaam, paswoord, admin FROM $table WHERE loginnaam = '$_POST[loginnaam]' AND paswoord = '$_POST[paswoord]' '$_POST[admin]' ";
$res_db = mysql_query($sql_db);
// check of er een overeenkomst is met ingevoerde en uitgelezen bestanden
if (mysql_num_rows($res_db) >= 1)
{
// zet de values van database in een array
$row = mysql_fetch_array($res_db);
// zet de sessions
$sess_id = $row[id];
$sess_loginnaam = $row[loginnaam];
$sess_admin = $row[admin];
// registreer ze
$_SESSION['sess_id'] = $sess_id;
$_SESSION['sess_loginnaam'] = $sess_loginnaam;
$_SESSION['sess_admin'] = $sess_admin;
$een = $sess_loginnaam;
setcookie("login", $een , time()+60*60*24*30); //cookie wordt 30 dagen bewaard.
else{
//form
?>
if ($submit){
if (isset($_COOKIE['login'])){
echo "je bent al bekend ";
}
else{
$sql_db = "SELECT id, loginnaam, paswoord, admin FROM $table WHERE loginnaam = '$_POST[loginnaam]' AND paswoord = '$_POST[paswoord]' '$_POST[admin]' ";
$res_db = mysql_query($sql_db);
// check of er een overeenkomst is met ingevoerde en uitgelezen bestanden
if (mysql_num_rows($res_db) >= 1)
{
// zet de values van database in een array
$row = mysql_fetch_array($res_db);
// zet de sessions
$sess_id = $row[id];
$sess_loginnaam = $row[loginnaam];
$sess_admin = $row[admin];
// registreer ze
$_SESSION['sess_id'] = $sess_id;
$_SESSION['sess_loginnaam'] = $sess_loginnaam;
$_SESSION['sess_admin'] = $sess_admin;
$een = $sess_loginnaam;
setcookie("login", $een , time()+60*60*24*30); //cookie wordt 30 dagen bewaard.
else{
//form
?>
En dit include je ergens in. Wat is de exacte foutmelding?
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
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
<?
if ($submit){
if (isset($_COOKIE['login'])){
echo "je bent al bekend ";
}
else{
$sql_db = "SELECT id, loginnaam, paswoord, admin FROM $table WHERE loginnaam = '$_POST[loginnaam]' AND paswoord = '$_POST[paswoord]' '$_POST[admin]' ";
$res_db = mysql_query($sql_db);
// check of er een overeenkomst is met ingevoerde en uitgelezen bestanden
if (mysql_num_rows($res_db) >= 1)
{
// zet de values van database in een array
$row = mysql_fetch_array($res_db);
// zet de sessions
$sess_id = $row[id];
$sess_loginnaam = $row[loginnaam];
$sess_admin = $row[admin];
// registreer ze
$_SESSION['sess_id'] = $sess_id;
$_SESSION['sess_loginnaam'] = $sess_loginnaam;
$_SESSION['sess_admin'] = $sess_admin;
$een = $sess_loginnaam;
setcookie("login", $een , time()+60*60*24*30); //cookie wordt 30 dagen bewaard.
} // MISCHIEN MOET ER HIER NOG ÉÉN
else{
//form
?>
if ($submit){
if (isset($_COOKIE['login'])){
echo "je bent al bekend ";
}
else{
$sql_db = "SELECT id, loginnaam, paswoord, admin FROM $table WHERE loginnaam = '$_POST[loginnaam]' AND paswoord = '$_POST[paswoord]' '$_POST[admin]' ";
$res_db = mysql_query($sql_db);
// check of er een overeenkomst is met ingevoerde en uitgelezen bestanden
if (mysql_num_rows($res_db) >= 1)
{
// zet de values van database in een array
$row = mysql_fetch_array($res_db);
// zet de sessions
$sess_id = $row[id];
$sess_loginnaam = $row[loginnaam];
$sess_admin = $row[admin];
// registreer ze
$_SESSION['sess_id'] = $sess_id;
$_SESSION['sess_loginnaam'] = $sess_loginnaam;
$_SESSION['sess_admin'] = $sess_admin;
$een = $sess_loginnaam;
setcookie("login", $een , time()+60*60*24*30); //cookie wordt 30 dagen bewaard.
} // MISCHIEN MOET ER HIER NOG ÉÉN
else{
//form
?>
$sess_loginnaam = $row[loginnaam];
$sess_admin = $row[admin]; zet die namen is tussen de quotes!
dus $row['admin'] enz...
ik ben opnieuw gaan sleutelen aan mijn script..
nu heb ik mijn cookies werkend..
Probelemen zo goed als weg..
nu vroeg ik me af hoe je kan voorkomen dat als je 2 variabelen vergelijk kan dat ze hoofdlettergevoelig zijn..
setcookie is net als header, er mag geen output voor komen. Ik los het altijd op door een meta refresh naar setcookie.php te maken, en daar de cookie te setten.
mhh.. maar hoe komt het dan dat je het vaak in scriptjes tussendoor ziet staan?
Alle output wordt gebufferd, dus niet echt als output gegeven. Nu kan je rustig vanalles echoën voordat je setcookie() of header() doet. ob_start() houd alles tegen, en stuurt de hele handel, dus dan de headers eerst, pas aan het eind van het script op als uitvoer.