Probleem met Session settings

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Peter Kroonenburg

Peter Kroonenburg

16/07/2022 08:18:22
Quote Anchor link
Hallo allen,

Ik loop tegen het volgende probleem aan. Ik heb een website draaien op mijn Synology NAS. Werkt allemaal prima. Deze website wordt gesynchroniseerd met de site op mijn MacBook. Ze zijn dus identiek. Ook de database lokaal en op de NAS zijn identiek.

Het geval wil nu dat als ik inlog op de site op mijn NAS de procedure goed verloopt maar lokaal wil dir niet lukken. Als ik in het inlogscript op de plaats net voordat ik redirect naar de homepage controleer ben ik ook lokaal goed ingelogd. Zodra ik op de homepage aankom is de sessievariabele $_SESSION['user'] weg.

Ik hoop dat ik het duidelijk heb beschreven. Iemand een idee waar ik de oorzaak zou moeten zoeken. Overigens heeft het in het verleden wel goed gewerkt. Kan het een instelling in php.ini zijn?

Bij voorbaat dank
Peter
 
PHP hulp

PHP hulp

26/04/2024 11:16:54
 
Jan R

Jan R

16/07/2022 10:34:36
Quote Anchor link
Onwaarschijnlijk. Wat zegt de error_log.
Staan foutmeldingen aan?
is hetdezelfde php versie?
synology is de nieuwste versie 8.0.17
local 8.1.8

Toevoeging op 16/07/2022 10:34:51:

Een beetje code kan mischien helpen
 
Ad Fundum

Ad Fundum

16/07/2022 12:09:25
Quote Anchor link
Wanneer je lokaal werkt worden cookies waarschijnlijk niet opgeslagen in de browser vanwege veiligheidsinstellingen.
Als ik gelijk heb, kan je dit gedrag terugzien in de browser, al dan niet met een plug-in (bijvoorbeeld "Cookie Quick Manager" in Firefox)
 
Peter van Kroonenburg

Peter van Kroonenburg

16/07/2022 14:04:15
Quote Anchor link
In de log geen meldinge.
Stukje code



index.php

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php include("../include/session.php");
ini_set("display_errors", 1);
$_SESSION['cart1'][]="<?PHP echo $gebruiker;?>";
$meld="Homepage";
//logboek($title,$meld);



Login.php
    //-----------------------------------------------------------------------------------
    // inloggegevens opslaan in een cookie
    //-----------------------------------------------------------------------------------

      if($bewaar==1){
              $verloopt_op = time() + 60*60*24*30;  // maand
              $_SESSION["inlogtime"]=time();
              $_SESSION["verloopt"]=$verloopt_op;    
              setcookie("email", "$email", $verloopt_op,"/","");
    
              $_SESSION['cart'][]="Gegevens bewaard!".$cc_pass;
              $_SESSION['cart'][]="Gegevens bewaard!".$email;
          }
// einde bewaar
        
        // ingelog  en door naar de homepagek

        phpinfo();  // tot hier gaat het goed vaiabelen bestaan
        
        redirect_to('../php/index.php');
        exit();

    }
else{
        
            $_SESSION['cart'][]="Inloggen niet gelukt";
        $gevonden="nee";
        // inloggen niet gelukt
        $_SESSION['cart'][]="Onjuiste invoer.";
        
        if(isset($_SESSION['wacht'])){
            // volgende foute invoer wachttijd verdubbelen
            //$_SESSION['wacht']=($_SESSION['wacht']*2);

        }else{    
            // 1e keer fout 5 seconden wachten
            $_SESSION['wacht']=1;
        }

        $_SESSION['cart'][]="Bij de volgende poging is de wachttijd " .$_SESSION['wacht']. " seconden!";
        $_SESSION['cart'][]="LET OP! Bij invoer is verschil tussen HOOFDLETTERS en kleine letters! ";
        redirect_to("../app_register/login.php");    
        exit();
    }
 
Ad Fundum

Ad Fundum

16/07/2022 14:26:00
Quote Anchor link
En wat zit er in include("../include/session.php") ?
Je moet wel eerst session_start() aanroepen, doe je dat ook?
 
Peter van Kroonenburg

Peter van Kroonenburg

16/07/2022 15:49:16
Quote Anchor link
../include/session.php

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
33
34
<?php
if (!isset($_SESSION)) {session_start();}

ini_set("display_errors", 1);
//error_reporting(E_ALL & ~E_NOTICE);
error_reporting(E_ALL);
$paginaName=$_SERVER['PHP_SELF'];
//**************************************************************
// variabelen instellen
//**************************************************************

date_default_timezone_set('Europe/Amsterdam');
setlocale(LC_ALL,'nl_NL');
$updated= "Bijgewerkt op: " . date ("F d Y H:i:s.", getlastmod());

$root=$_SERVER['DOCUMENT_ROOT'];

$root1="../";
$root2="../../";
$path="../";


connection naar de database









[size=xsmall][i]Toevoeging op 16/07/2022 15:50:53:[/i][/size]

En dit werk dus allemaal goed op de server.
 
- Ariën  -
Beheerder

- Ariën -

16/07/2022 16:06:05
Quote Anchor link
Fix je codeblok eens? ^^

Kijk ook eens wat print_r over je $_SESSION zegt?
 
Peter van Kroonenburg

Peter van Kroonenburg

16/07/2022 16:18:37
Quote Anchor link
Kijk ook eens wat print_r over je $_SESSION zegt?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?PHP print_r($_SESSION['auth']);?>

Notice: Undefined index: auth in /Volumes/Werkdisk/Sites/home/php/index.php on line 98
Dit zou dus True moeten geven.

Wat bedoel je met: Fix je codeblok eens? ^^
 
- Ariën  -
Beheerder

- Ariën -

16/07/2022 16:51:13
Quote Anchor link
Zie regel 34. Dat lijkt mij buiten je codeblok te horen.

Bestaat je SessionID cookie wel?
Gewijzigd op 16/07/2022 16:52:03 door - Ariën -
 
Peter van Kroonenburg

Peter van Kroonenburg

16/07/2022 18:00:20
Quote Anchor link
Ik heb alleen het relevante deel van het script gestuurd. t/m row 19.
De rest heb ik zelf bij gezet.



.Session_id:snn2dmsv8jbt97h0f3ii6ubsrc

Voor zover ik het nu kan bekijken wordt er na het inloggen een nieuwe sessie gestart.


Toevoeging op 16/07/2022 18:01:59:

Omdat het op de server goed werkt en de bestanden identiek zijn (Synology Drive) zou je toch aan kunnen nemen dat er met het script niets mis is.
 
Ozzie PHP

Ozzie PHP

16/07/2022 18:05:03
Quote Anchor link
>> Kijk ook eens wat print_r over je $_SESSION zegt?

>>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?PHP print_r($_SESSION['auth']);?>


Nu controleer je slechts op een bepaalde key. Check gewoon de complete session variabele eens om te zien of/wat daar (iets) in zit.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

var_dump($_SESSION);

?>
Gewijzigd op 16/07/2022 18:05:31 door Ozzie PHP
 
Jan R

Jan R

16/07/2022 18:27:14
Quote Anchor link
Ik vind regel 3 maar iets raar hoor
$_SESSION['cart1'][]="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?PHP echo $gebruiker;?>
";
 
Ozzie PHP

Ozzie PHP

16/07/2022 18:30:49
Quote Anchor link
Jan R op 16/07/2022 18:27:14:
Ik vind regel 3 maar iets raar hoor
$_SESSION['cart1'][]="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?PHP echo $gebruiker;?>
";

Dat is het ook. Klopt niet.
 
Peter van Kroonenburg

Peter van Kroonenburg

16/07/2022 18:43:19
Quote Anchor link
Na het inloggen op het moment dat ik terug ga naar index.php


array(28) { ["host"]=> string(9) "localhost" ["user"]=> string(15) "petervankroonen" ["dbf"]=> string(15) "petervankroonen" ["pw"]=> string(11) “XXXXX!” ["cart"]=> array(3) { [0]=> string(12) "Login scherm" [1]=> string(19) "Succescvol ingelogd" [2]=> string(6) "Welkom" } ["cart1"]=> array(0) { } ["apparaat"]=> string(7) "desktop" ["LogonCounter"]=> int(0) ["filename"]=> string(51) "/Volumes/Werkdisk/Sites/home/app_register/login.php" ["bron"]=> string(16) "../php/index.php" ["aantal_records"]=> int(1) ["auth"]=> bool(true) ["timeout"]=> int(1660581666) ["gebruiker"]=> string(0) "" ["password"]=> string(5) “XXXXXX” ["klant_login"]=> string(0) "" ["klant_wachtwoord"]=> string(5) “XXXXXXX” ["klant_id"]=> string(10) "1657263846" ["niveau"]=> string(1) "9" ["niveau_id"]=> string(1) "9" ["klant_niveau"]=> string(1) "9" ["voornaam"]=> string(5) "Peter" ["achternaam"]=> string(15) "van kroonenburg" ["initialen"]=> NULL ["email"]=> string(27) "[email protected]" ["groep_id"]=> string(1) "1" ["groepklant"]=> string(1) "A" ["groepcode"]=> string(1) "A" }

Sessie: 5q8s4q0dvdlnjs2lt94i0b1sf7

Toevoeging op 16/07/2022 18:44:58:

Dus keuring ingelogd maar gegevens weg zodra ik aankom bij index.php
 
- Ariën  -
Beheerder

- Ariën -

16/07/2022 18:46:27
Quote Anchor link
Dan bestaat je sessie gewoon.

Ik snap alleen niet waarom je er inloggegevens in plaatst?
 
Ozzie PHP

Ozzie PHP

16/07/2022 19:01:59
Quote Anchor link
Die 'auth' key die eerder niet bestond, blijkt dus wel te bestaan.

["auth"]=> bool(true)
 
Peter van Kroonenburg

Peter van Kroonenburg

16/07/2022 19:43:27
Quote Anchor link
Ik denk dat alle opties bekeken zijn. Bedankt voor het meedenken. Ik ben nu 2 dagen bezig geweest helaas zonder resultaat. Lijkt me beter om er mee te stoppen en een ander inlogscript te gaan schrijven.
 
- Ariën  -
Beheerder

- Ariën -

16/07/2022 20:08:00
Quote Anchor link
En werkt het wel met een simpel sessie script van een paar regels?
 
Peter Kroonenburg

Peter Kroonenburg

16/07/2022 20:24:11
Quote Anchor link
Dat ga ik morgen proberen!
 
Ivo P

Ivo P

18/07/2022 14:09:08
Quote Anchor link
Vraag: sta jij nu ergens binnen?
Zo ja: heb je momenteel je sleutels in je hand?

Nee?
Waarschijnlijk niet, want die had je alleen nodig toen je door de voordeur ging.

Waarom vraag ik dit?
Ik zie in je session-dump:
["gebruiker"]=> string(0) "" ["password"]=> string(5) “XXXXXX” ["klant_login"]=> string(0) "" ["klant_wachtwoord"]=> string(5) “XXXXXXX” [

Dat je opslaat wie ingelogd is, is verklaarbaar.
Maar dat je (plaintext) het gebruikte wachtwoord in de session set niet. De lengte 5 suggereert ook nog eens dat je dat dan ongehasht doet.
Het wachtwoord heb je net als een sleuten nodig bij het binnenkomen. Daarna is kennelijk goedgekeurd dat je er erin mocht en dus is het voldoende om te weten we je bent. (naamkaartje om je nek zoals bij veel bedrijven)

Die session data wordt ergens bewaard op de server.
In een /tmp map of een speciale session-map. Of mogelijk in een database.
Ik denk dat die lokatie te vinden is via phpinfo().

Probleem is soms, dat dit session-bestandje plaintext op de server komt te staan en mogelijk door een derde gelezen kan worden. Daar wil je niet je password in hebben staan dus.

Over die locatie:
Wordt dat bestandje wel aangemaakt? Heeft Apache / PHP daar wel schrijfrechten?
 
Peter van Kroonenburg

Peter van Kroonenburg

18/07/2022 23:47:46
Quote Anchor link
Dank voor je reactie Ivo. Het is een oud script toen ik nog minder php/sql kennis had. Ben bezig met herschrijven en hoop daarmee ook mijn probleem te kunnen oplossen.

Toevoeging op 19/07/2022 10:18:09:




Sessions worden opgeslagen
php
sess_1t6pe6hh0f9egro7okrptuch72
sess_1o3o3u8r086mld2nem5as0kgis
sess_1eqkl7kljuhb2uak5uuscls9ne
sess_0jch5tl40octncmo9i8a2v4u9p


Session Support enabled
Registered save handlers files user
Registered serializer handlers php_serialize php php_binary
Directive Local Value Master Value
session.auto_start Off Off
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_samesite no value no value
session.cookie_secure 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.lazy_write On On
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /Applications/MAMP/tmp/php /Applications/MAMP/tmp/php
session.serialize_handler php php
session.sid_bits_per_character 5 5
session.sid_length 26 26
session.upload_progress.cleanup On On
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix upload_progress_ upload_progress_
session.use_cookies 1 1
session.use_only_cookies 1 1
session.use_strict_mode 0 0
session.use_trans_sid 0 0


Toevoeging op 19/07/2022 10:22:05:

Ik zie ook dat telkens zodra ik een pagina vernieuw een ander session_id krijg.
 

Pagina: 1 2 volgende »



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.