Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

Admin Seite funktioniert nicht mehr

Begonnen von Stefan, 02. Februar 2019, 14:51:33

« vorheriges - nächstes »

Stefan

Hallo,

ich bin mit meinem seit Jahren sehr erfolgreich eingesetzten Mozilo 2.0 Version 5.1 auf einen neuen Server umgezogen. Neben der php Version (nun 7.2) ist auch der Zugang von http zu https (also SSL Verbindung) verändert worden.
Die Seiten selbst funktionieren nach wie vor, die Admin -Seite leider nicht mehr:

Ich logge mich erfolgreich über https://x.y.z.de/admin ein,
1.) sehe dann aber, dass das "mod_rewrite verfügbar" auf "nein" steht (Eintrag rot), obwohl beim neuerlichen  install.php- Durchlauf diese Option aktiviert wurde (.htaccess ist korrekt vorhanden).
2.) Weiterhin passiert  nun folgendes: Ich klicke irgendetwas auf der Admin-Seite an (z.B. Info oder Dateien), dann werde ich sofort ausgeloggt und die Anmeldeseite erscheint wieder.

Es scheint so zu sein, dass die Ajax Anmeldung nicht mehr funktioniert...


Ich bedanke mich für Tipps in dieser Sache, denn so kann ich nichts mehr administrieren.

Stefan

marusti

#1
Hallo Stefan,
welche Revision hast du installiert? 51? Das mod_rewrite Problem wurde hier auch mal gemeldet, hatte sich aber mit der aktuellen Version erledigt
https://www.mozilo.de/forum/index.php/topic,4367.0.html

Stefan

Hallo,

ich benutzte die neuste Version (also 5.1), ich habe auch den Admin und CMS Bereich (also die Verzeichnisse) überschrieben., das ist alles auf dem neusten Stand.
Weiterhin habe ich den Ajax Funktion mit dem Rewrite-Test in eine neue Datei isoliert kopiert und dieser Test funktioniert da einwandfrei.

Ich habe in den letzten Tagen einiges ausprobiert, finde die Ursache leider nicht, da es auch überhaupt keine Fehlermeldung gibt.
Das einzige was mir aufgefallen ist, dass session_start() in der admin/index.php nicht dazu führt, dass ein Session-File erstellt wird, sondern nur die beiden Dateien session.conf.php und users.conf.php werden upgedated.

Eine Idee wäre noch, dass der user_agent durch ein rewrite von http auf https ständig verändert wird?

Vielen Dank

Stefan

Stefan

Hallo,

ich habe nun eine lange Weile ohne Langeweile nach Fehlern gesucht und bin fündig geworden, wobei mir noch nicht alles ganz klar ist. Insbesondere, wieso funktioniert die jetzige Version bei allen anderen?????

Doch nun zu meinen "Erkenntnissen":


In der ...admin/index.php wird die Variable SESSION_MO definiert  (define("SESSION_MO",$name_id)  und später als session_name verwendet.

In der ...admin/sessionClass.php hingegen wird SESSION_MO als session_id (@session_name(SESSION_MO);) verwendet. Dies funktioniert nicht, da die session_id kein Unterstrich enthalten darf, der aber in SESSION_MO drin ist.
Da aber SESSION_MO mal als name, mal als id verwendet wird, ist die session Funktion grundsätzlich ausgehebelt.

Deshalb habe ich in der index.php folgendes geschrieben:

define("SESSSION_NAME", "MOZILOID");
@session_name(SESSION_NAME);
$name_id = md5($_SERVER['SERVER_NAME'].BASE_DIR);
define("SESSION_ID",$name_id);
unset($name_id);

if(is_file("sessionClass.php")) {
   require_once("sessionClass.php");
} else
    @session_id(SESSION_ID);

Weiterhin wird weiter unten in der "index.php" die session_id geändert ( session_regenerate_id(true); ), nachdem der Header gesendet wird. Das ist nicht zulässig laut php. (Lösung Die Header Anweisung weiter runter ziehen)

Unverstanden von mit ist dennoch
if(getRequestValue('nojs','get')) {
        session_regenerate_id(true);
}
Nach dem Auskommentieren dieser 3 Zeilen funktioniert wieder alles.

Merkwürdig merkwürdig, aber vielleicht fällt  jemand dazu eine kluge Lösung oder ein kluger Kommentar ein....

Stefan




hausl78

#4
ZitatIn der ...admin/sessionClass.php hingegen wird SESSION_MO als session_id (@session_name(SESSION_MO);) verwendet. Dies funktioniert nicht, da die session_id kein Unterstrich enthalten darf, der aber in SESSION_MO drin ist.

SESSION_MO ist eine Konstante, erkennbar an den fehlenden Anfürhungszeichen. Diese wird, wie du auch darüber zitiert hast mit dem Inhalt der Variable $name_id gefüllt.
Zitat(define("SESSION_MO",$name_id)
gefüllt.

Du kannst dir mal zwecks Fehlersuche den Inhalt von SESSION_MO asugeben lassen, direkt vor dem
Zitat(@session_name(SESSION_MO);)
Kommando. Da hier auch ein @ davorsteht, werden leider auch Fehlermeldungen unterdrückt. Kannst du auch testweise mal entfernen und schauen ob/was dann passiert. Ev.ist man dann ja schlauer.

EDIT: Laut dem Code oben wird hier eigentlich nur der Konstanten SESSIN_Name der String "MOZILOID" zugeweisen.
Zitatdefine("SESSSION_NAME", "MOZILOID");
@session_name(SESSION_NAME);

Stefan

Hallo,

SESSION_MO wird gefüllt mit "MOZILOID_123456789", wie erwartet.

Aber: Wenn man einer Session NUR den Namen (session_name) gibt (wie in der index.php), dann erhält die  session eine ZufallsID. Nur mit der ID (übertragen per Cookie oder post) ist aber die session wieder aktivierbar. Der Name ist dabei vollkommen egal.
Die /admin/index.php übermittelt die ID aber weder per Cookie noch per post, deshalb muss die session_id bei jedem Aufruf der index.php die gleiche sein (d.h. session_id muss immer wieder mit dem gleichem Wert belegt sein).
Aus diesem Grunde fehlt der /admin/ index.php die Zeile session_id(md5($_SERVER['SERVER_NAME'])). Wenn ich das einfüge, dann funktioniert alles.

Aber warum das nur bei mir Probleme macht, ist mir absolute schleierhaft.......

Vielen Dank für jede Hilfe

Stefan

Stefan

Hallo,

nun aber die finale Ursache und Behebung meines Problems:

Mein Provider hat die Session Variable "session.cookie_domain" nicht belegt, sodass php durch session_start()  kein Cookie mehr erzeugen konnte......
Ich setzte sie jetzt einfach selbst....

Das hat mich doch einige Nerven und nochmehr Zeit  gekostet.

Vielen Dank für die Unterstützung hier.

Grüße
Stefan



marusti