Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Sessionvariablen werden neuerdings entsorgt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Sessionvariablen werden neuerdings entsorgt

    *winke mitm Huf*

    Nach einer Manipulation an der php.ini werden jetzt die Sessionvariablen nicht mehr übergeben.
    Auf dem Entwicklungssystem (Windows) waren Cookies eigentlich egal, auf dem Linuxserver sind diese doch interessant.
    Vorher lief alles, nur die Session wurde in unregelmäßigen Abständen zerstört. Ich weiß jetzt, woran es liegt, allerdings habe ich mir die php.ini derart zerschossen, daß nun alle Sessionvariablen nicht mehr übergeben werden.

    Quelltexte wurden nicht geändert, es lief vorher (wenn auch immer bis zur Cookie-Ablaufzeit), also liegt es nicht daran.

    Nach dem Login gibt ein Vardump der Session alles aus, was drin stehen soll. Nachdem die gleiche Seite geladen wird oder eine andere aufgerufen wird, ist dieses Array leer. Und damit gibts auch nur die Navigationleiste, die zum Login auffordert

    Sämtliche Seiten sind gleich aufgebaut, hier nun die stark gekürzten Quelltextschnipsel:
    PHP-Code:
    if($_SESSION['ses_ID'] == session_id() //und etwas mehr)
    {
         
    das volle Programm
    }
    else
    {
        
    session_unset ();
        
    session_destroy ();
        unset (
    $_SESSION['user_id'],$_SESSION['user_nickname'],$_SESSION['ses_ID'],$_SESSION['sess_ID2']);//wichtig fürs logout
        
    echo '
            <form name="Login" action="/index.php" method="POST">
            <div>
                <br><input type = "text" name = "Benutzername" size = "20"><br>
                <input type = "password" name = "Passwort" size = "20"><br>
                <input type="submit" value="OK">
            </div>'
    ;

    PHP-Code:
    if(!empty($_POST['Benutzername']) && !empty($_POST['Passwort']))
    {
        
    $_ID1 = (mysqli_real_escape_string($conhtmlentities(trim($_POST['Benutzername']), ENT_DISALLOWED'ISO-8859-1')));
        
    $_ID2 = (mysqli_real_escape_string($conhtmlentities(trim($_POST['Passwort']), ENT_DISALLOWED'ISO-8859-1')));

        
    $Login mysqli_query($con'SELECT Nutzer_ID, Nickname FROM Nutzer WHERE Nickname =\''.$_ID1.'\' AND Passwort = //Das bleibt geheim .'\''); 

        while (
    $LogUser mysqli_fetch_array($Login))
        {   
        
    $_SESSION['user_id'] = $LogUser['Nutzer_ID']; 
        
    $_SESSION['user_nickname'] = $LogUser['Nickname'];
        
    $_SESSION['ses_ID'] = session_id();
        
    $_SESSION['sess_ID2'] = //ein Sicherheitshash);
        
    }

        
    mysqli_free_result($Login);

    Code:
    variables_order = "GPCS" //hatte ich schon auf GPSC
    
    session.save_handler = files
    
    session.use_cookies = 1 //hatte ich schon auf 0
    
    session.use_only_cookies = 0 //hatte ich schon auf 1
    
    session.auto_start = 0 //war auch schon auf 1
    
    session.cookie_lifetime = 65000 //war von 0 bis 65000
    
    session.gc_probability = 1
    
    session.gc_divisor = 1000
    
    session.cache_expire = 180
    Irgendetwas entsorgt also nach dem fehlgeschlagenen Umbau der php.ini dieses Array. Ich habe auch schon PHP entfernt und neu aufgetan, um eine neue ini zu erhalten.
    Ich habe schon sämtliche Kombinationen, auch sinnfreie, durchgetestet. Das schlimme an dem Server ist, daß zwei php.ini's vorhanden sind (Apache2 und Client, wobei Client nicht interessiert) und das das gute Webmin auch noch was zu sagen hat.

    Bevor ich mein seelisches Gleichgewicht komplett verliere, frage ich also nach.

    *winke*

    *schnell nochmal durchgeschnuffelt: Die Quelltexte sind stark gekürzt und ich möchte das jetzt so nicht überprüfen, ob da nun ein ' zuviel oder zuwenig ist, weil da massig entfernt wurde*

  • #2
    Cookies auch immer vorhanden?

    Eine originale php.ini für PHP 5.4 bekommst du auch direkt aus den Quellen:
    https://github.com/php/php-src/commi...ini-production

    Edit: Steht was in den Logs (besonders error_log)?

    Kommentar


    • #3
      Cookie ist tatsächlich da, sogar mit der passenden Ablaufzeit.
      PHP ist ja neu, da sich zypper etwas...ungeschickt anstellt (man muß direkt die Version mitgeben, ansonsten wird das gängigste installiert).
      Fehler sind nur die vorhanden, die mir bewußt bekannt sind (mysqli_free und _fetch erwarten Parameter, die absichtlich nicht existieren).

      Ich überlege jetzt echt, ob ich Apache und PHP entferne und neu auftue.

      Es ist nur noch die Möglichkeit gegeben, daß ich gestern die Neuinstallation von PHP als root durchgeführt habe und ich das alles als etwas kleinerer Nutzer ausführe und die Rechte nicht mehr stimmen (man könnte mal ja / mit allen Unterverzeichnissen und Dateien auf 777 setzen und morgen darf ich anrufen, man möge doch bitte das System neu aufsetzen)

      *trappel*

      Kommentar


      • #4
        So, ich habe mich vorhin für die Fast-Radikalmethode entschieden.
        Apache und PHP weg und neu drauf, mysql-Paket fehlt noch, Zebra-Stute ruft zwischendurch an, sie komme ja nicht auf die Seite (mir war das seit fast 24 Stunden klar) und nun kann ich mich wieder um die Sicherheitskonfigurationen kümmern (ich benötige ja nur mysqli, phpinfo muß weg...) , die Session-Zeiten beobachten und weiterhin die noch fehlenden Grafiken erstellen

        Manchmal denke ich, man müsse sein Betriebssystem und alle laufenden Programme selbst schreiben, um zu verstehen (oder genau zu wissen), was gerade nicht nur im RAM, sondern auch im L1, L2, L3 und in der CPU steht, dann hat man die Problemlösung gleich parat bzw. es entstehen keine Probleme.

        Damit eigentlich closed, weil es kann keiner mehr nachvollziehen, was gewesen ist und hoffentlich passiert das auch niemandem.

        *trappel*

        Kommentar

        Lädt...
        X