php geen session
Hallo,
Ik heb een bestand op mijn computer staan
index.html
via dit bestand log ik in via json en jquery.
echter als ik probeer te controleren of ik al ben ingelogd krijg ik nee ook al is het ja.
Ik heb eens print_r($_SESSION) gedaan, via element inspecteren kwam ik er achter dat deze leeg was in de gekregen json maar als ik de json.php zelf benader dan is deze dat niet.
Hoe los ik dit op?
Mvg. Knipper
Ik heb een bestand op mijn computer staan
index.html
via dit bestand log ik in via json en jquery.
echter als ik probeer te controleren of ik al ben ingelogd krijg ik nee ook al is het ja.
Ik heb eens print_r($_SESSION) gedaan, via element inspecteren kwam ik er achter dat deze leeg was in de gekregen json maar als ik de json.php zelf benader dan is deze dat niet.
Hoe los ik dit op?
Mvg. Knipper
session_start(); vergeten? En ik lees iets over index.html? Maar PHP werkt niet in een HTML bestand.
Maar met code kunnen we veel meer, want mijn glazenbol werkt momenteel niet optimaal.
Maar met code kunnen we veel meer, want mijn glazenbol werkt momenteel niet optimaal.
misschien moet je de waarden uit $_SESSION eerst in een ander array kopieren voor je die in json verpakt doorgeeft?
Hoe kun je trouwens in index.html (of in je javascript een print_r() doen? daarmee bedoel je toch de php functie?
Hoe kun je trouwens in index.html (of in je javascript een print_r() doen? daarmee bedoel je toch de php functie?
hier is de code
index.html (voor op de pc)
token.js
token.php (hier geeft de print_r enkel iets terug als je de pagina zelf opent (niet via js)
index.html (voor op de pc)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!doctype html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Login</title>
<link rel="stylesheet" href="http://lsite/main/plugin/1.9.2_jquery-ui.css" />
<script src="http://site/main/plugin/jquery-1.8.3.js"></script>
<script src="http://site/main/plugin/1.9.2_jquery-ui.js"></script>
<script src="http://site/login/token.js"></script>
<script>
var token = 'test';
</script>
</head>
<body>
Indien deze tekst blijft staan is er geen verbinding met de server.
</body>
</html>
<html lang="nl">
<head>
<meta charset="utf-8">
<title>Login</title>
<link rel="stylesheet" href="http://lsite/main/plugin/1.9.2_jquery-ui.css" />
<script src="http://site/main/plugin/jquery-1.8.3.js"></script>
<script src="http://site/main/plugin/1.9.2_jquery-ui.js"></script>
<script src="http://site/login/token.js"></script>
<script>
var token = 'test';
</script>
</head>
<body>
Indien deze tekst blijft staan is er geen verbinding met de server.
</body>
</html>
token.js
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
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
$(document).ready(function(){
$('body').html('<div># Jquery geladen, verbonden met server</div>');
$('body').append('<div># Inloggen...</div>');
var adapter = "http://site/login/token.php";
$.getJSON( adapter, {
token: token
})
.done(function(data) {
if(data.error == 'NULL') {
if(data.message !== 'NULL') {
$('body').append('<div># ' + data.message + '.</div>');
alert(data.message);
}
if(data.login == 'true') {
$('body').append('<div># Inloggen gelukt.</div>');
$('body').append('<div># Opstarten...</div>');
window.location.replace("http://site");
} else {
$('body').append('<div style="background:rgb(255, 187, 187)"># Inloggen mislukt.</div>');
}
} else {
$('body').append('<div style="background:rgb(255, 187, 187)"># ' + data.error + '</div>');
alert(data.error);
}
})
.fail(function() {
$('body').append('<div style="background:rgb(255, 187, 187)"># Er is een fout opgetreden bij het inloggen.</div>');
alert('Er is een fout opgetreden bij het inloggen.');
});
});
$('body').html('<div># Jquery geladen, verbonden met server</div>');
$('body').append('<div># Inloggen...</div>');
var adapter = "http://site/login/token.php";
$.getJSON( adapter, {
token: token
})
.done(function(data) {
if(data.error == 'NULL') {
if(data.message !== 'NULL') {
$('body').append('<div># ' + data.message + '.</div>');
alert(data.message);
}
if(data.login == 'true') {
$('body').append('<div># Inloggen gelukt.</div>');
$('body').append('<div># Opstarten...</div>');
window.location.replace("http://site");
} else {
$('body').append('<div style="background:rgb(255, 187, 187)"># Inloggen mislukt.</div>');
}
} else {
$('body').append('<div style="background:rgb(255, 187, 187)"># ' + data.error + '</div>');
alert(data.error);
}
})
.fail(function() {
$('body').append('<div style="background:rgb(255, 187, 187)"># Er is een fout opgetreden bij het inloggen.</div>');
alert('Er is een fout opgetreden bij het inloggen.');
});
});
token.php (hier geeft de print_r enkel iets terug als je de pagina zelf opent (niet via js)
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
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
<?php
session_start();
include "../main/instellingen.php";
$data_output = array();
$data_output['error'] = 'NULL';
$data_output['message'] = 'NULL';
$data_output['login'] = 'false';
print_r($_SESSION);
/*=== controleer is er al ingelogd ===*/
if(!isset($_SESSION['gebruikersnaam'])) {
if(!empty($_GET['token'])) {
/*controleer inloghack*/
} else {
$data_output['error'] = 'Niet alle gegevens zijn ingevoerd.';
}
} else {
$data_output['message'] = 'U bent al ingelogd.';
$data_output['login'] = 'true';
}
/*=== output ===*/
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
echo json_encode($data_output);
?>
session_start();
include "../main/instellingen.php";
$data_output = array();
$data_output['error'] = 'NULL';
$data_output['message'] = 'NULL';
$data_output['login'] = 'false';
print_r($_SESSION);
/*=== controleer is er al ingelogd ===*/
if(!isset($_SESSION['gebruikersnaam'])) {
if(!empty($_GET['token'])) {
/*controleer inloghack*/
} else {
$data_output['error'] = 'Niet alle gegevens zijn ingevoerd.';
}
} else {
$data_output['message'] = 'U bent al ingelogd.';
$data_output['login'] = 'true';
}
/*=== output ===*/
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
echo json_encode($data_output);
?>
wat is in token.js dan de waarde die je binnenkrijgt in data.login?
Je controleert wel of het 'true' is maar dat is het dus niet, begrijp ik?
Wat is dan wel de waarden?
--
of ook:
wat als het is:
Je controleert wel of het 'true' is maar dat is het dus niet, begrijp ik?
Wat is dan wel de waarden?
--
of ook:
wat als het is:
als jquery het laad is het false
als ik de pagina opvraag via de url dan is het true (ervanuitgaande dat ik ook echt ben ingelogd)
als ik de pagina opvraag via de url dan is het true (ervanuitgaande dat ik ook echt ben ingelogd)
en het is dezelfde site? Dus geen andere domeinnaam of zo?
jawel
file://c:/user/******/index.html (om in te loggen)
dit laad file
www.site.com/token.js in de head
en deze haalt json op vanaf
www.site.com/token.php?token=***** (token komt uit de index.html)
file://c:/user/******/index.html (om in te loggen)
dit laad file
www.site.com/token.js in de head
en deze haalt json op vanaf
www.site.com/token.php?token=***** (token komt uit de index.html)
het zou een "cross-domein" probleem zijn alleen weet ik niet hoe dit op te lossen.
Probeer in token.js eens zonder http://site bij adapter
dan vind hij hem niet
Je kunt geen sessies van de ene server op de andere server lezen.
wat zou kunnen werken
je logt in op http://www.site.com/login.php
je gaat naar een heel andere site, of desnoods een file op je pc's hd: c:\index.html
daarin laad je weer http://www.site.com/eenjavascript.js
en die javascript verwijst dan weer naar een script op www.site.com.
Maar de vraag is dan, of eenjavascript.js redeneert: /ajax.php staat op www.site.com/ of redeneert: we kijken relatief tov. c:\index.html
Dat zul je kunnen zien als je met firebug meekijkt met de ajaxcall.
Zou hij zo slim zijn om naar www.site.com te kijken, dan moet hij ook nog een session-cookie meesturen, zodat www.site.com snapt dat jij dezelfde bent die zojuist op login.php is ingelogd.
Wat is je uiteindelijke doel eigenlijk? Waarom gebruik je een index.html die op je lokale hd staat?
je logt in op http://www.site.com/login.php
je gaat naar een heel andere site, of desnoods een file op je pc's hd: c:\index.html
daarin laad je weer http://www.site.com/eenjavascript.js
en die javascript verwijst dan weer naar een script op www.site.com.
Maar de vraag is dan, of eenjavascript.js redeneert: /ajax.php staat op www.site.com/ of redeneert: we kijken relatief tov. c:\index.html
Dat zul je kunnen zien als je met firebug meekijkt met de ajaxcall.
Zou hij zo slim zijn om naar www.site.com te kijken, dan moet hij ook nog een session-cookie meesturen, zodat www.site.com snapt dat jij dezelfde bent die zojuist op login.php is ingelogd.
Wat is je uiteindelijke doel eigenlijk? Waarom gebruik je een index.html die op je lokale hd staat?
het is de bedoeling dat index.html op de computer blijft staan. Door hierop te klikken haalt deze het javascript bestand op (dit staat online zodat het bestand klein blijft en zodat ik het nog kan bewerken). als alle's geladen is zal de javascript de token.php openen en vragen om in te loggen met die token (in index.html).
Alles mislukt echter, de session's en cookies blijven leeg.
Alles mislukt echter, de session's en cookies blijven leeg.
je bent dus nog niet ingelogd op het moment dat token.js geladen wordt?
Hoe komt het cookie mee met de ajax call en hoe wordt deze cookie bij de vervolg aanroepen meegegeven?
Mogelijk dat de volgorde:
- inloggen
- laden token.js
wel tot gevolg heeft dat de browser weet dat er cookies in het spel zijn?
Hoe komt het cookie mee met de ajax call en hoe wordt deze cookie bij de vervolg aanroepen meegegeven?
Mogelijk dat de volgorde:
- inloggen
- laden token.js
wel tot gevolg heeft dat de browser weet dat er cookies in het spel zijn?
heb ik ook geprobeerd, ik heb ingelogd via de site en hij detecteert dat niet.
de json die wordt geladen via javascript zegt niet ingelogd
de json in de browser openen dan ben ik wel ingelogd, hij vind dus de session niet.
de json die wordt geladen via javascript zegt niet ingelogd
de json in de browser openen dan ben ik wel ingelogd, hij vind dus de session niet.
de ajax call: alle details daarvan moet je in firebug kunnen volgen. (in elk geval in firefox, maar ik dacht ook in Chrome.
Daar kun je dus ook zien of er cookies meegestuurd worden.
Daar kun je dus ook zien of er cookies meegestuurd worden.
ik chrome zie ik:
via ajax:
en als ik de json meteen laad
hoe kan ik dit oplossen?
via ajax:
en als ik de json meteen laad
hoe kan ik dit oplossen?
ik ben ingelogd op site www.test.com en toch krijg ik de melding dat ik niet ben ingelogd door mijn session. Hij stuurt dus bij hij gebruikt de session cookie niet. Hoe kan ik dit verhelpen?




