php geen session

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Php knipper

php knipper

12/01/2014 16:44:55
Quote Anchor link
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
 
PHP hulp

PHP hulp

03/12/2024 18:49:27
 
Joakim Broden

Joakim Broden

12/01/2014 17:14:13
Quote Anchor link
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.
 
Ivo P

Ivo P

12/01/2014 17:37:00
Quote Anchor link
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?
 
Php knipper

php knipper

12/01/2014 22:20:00
Quote Anchor link
hier is de code

index.html (voor op de pc)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


token.js
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
$(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.');
    });
});


token.php (hier geeft de print_r enkel iets terug als je de pagina zelf opent (niet via js)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);    
?>
 
Ivo P

Ivo P

12/01/2014 23:29:36
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
.done(function(data){
  console.log(data);
});
 
Php knipper

php knipper

13/01/2014 17:59:46
Quote Anchor link
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)
 
Ivo P

Ivo P

13/01/2014 18:06:16
Quote Anchor link
en het is dezelfde site? Dus geen andere domeinnaam of zo?
 
Php knipper

php knipper

13/01/2014 18:15:23
Quote Anchor link
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)
 
Php knipper

php knipper

14/01/2014 21:34:00
Quote Anchor link
het zou een "cross-domein" probleem zijn alleen weet ik niet hoe dit op te lossen.
 
Ivo P

Ivo P

14/01/2014 21:38:34
Quote Anchor link
Probeer in token.js eens zonder http://site bij adapter
 
Php knipper

php knipper

14/01/2014 22:03:41
Quote Anchor link
dan vind hij hem niet
 
Joakim Broden

Joakim Broden

15/01/2014 08:01:20
Quote Anchor link
Je kunt geen sessies van de ene server op de andere server lezen.
 
Ivo P

Ivo P

15/01/2014 09:01:05
Quote Anchor link
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?
 
Php knipper

php knipper

15/01/2014 13:13:36
Quote Anchor link
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.
 
Ivo P

Ivo P

15/01/2014 13:57:20
Quote Anchor link
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?
 
Php knipper

php knipper

15/01/2014 14:59:49
Quote Anchor link
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.
 
Ivo P

Ivo P

15/01/2014 15:20:11
Quote Anchor link
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.
 
Php knipper

php knipper

15/01/2014 17:38:47
Quote Anchor link
ik chrome zie ik:

via ajax:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
Request Cookies
-(leeg)
Response Cookies
-PHPSESSID


en als ik de json meteen laad
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
Request Cookies
-PHPSESSID
Response Cookie
-(leeg)

hoe kan ik dit oplossen?
 
Php knipper

php knipper

16/01/2014 19:13:44
Quote Anchor link
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?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.