Wordpress Seite mit Admidio Login schützen

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
Antworten
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Wordpress Seite mit Admidio Login schützen

Beitrag von RalphW »

Hallo zusammen,

hat irgendwer eine Idee, wie ich eine bestimmte Wordpress Seite mit dem Admidio Login schützen kann?
Also wenn die Seite aufrufe, soll ich zu Admidio weitergeleitet werden, wo ich mich anmelden kann. Dann geht es wieder zurück zur geschützten Wordpress Seite, die mir dann angezeigt wird.

Als wir noch nicht Wordpress verwendeten konnte ich das mit folgenden Einträgen ganz oben in der Seite lösen:

Code: Alles auswählen

<?php
require_once($_SERVER['DOCUMENT_ROOT']. '/admidio/adm_program/system/common.php');
include_once($_SERVER['DOCUMENT_ROOT']. '/admidio/adm_program/system/login_valid.php');
?>
<!DOCTYPE html>
<html>
...
Mit Wordpress funktioniert das so leider nicht mehr wenn ich das in die header.php von dem ausgewählten Wordpress Theme einfüge. Die Seite bleibt weiß. Scheinbar wird in der common.php schon ein Fehler generiert.

Hat jemand eine Idee?

Noch eine Information. Wordpress und Admidio liegen jeweils in einem Verzeichnis:
./WP
./admidio

viele Grüße
Ralph
XimeX
Developer
Beiträge: 1148
Registriert: 12. Jul 2015, 13:21
Wohnort: Austria

Re: Wordpress Seite mit Admidio Login schützen

Beitrag von XimeX »

schon mal in die webserver logs geschaut? Bei weißen Seiten ist das immer eine heiße Spur
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Re: Wordpress Seite mit Admidio Login schützen

Beitrag von RalphW »

Gute Idee, aber ich kann damit nicht viel anfangen.

Hier die Einträge alle zur gleichen Zeit (ich habe die Pfade etwas verkürzt):

Code: Alles auswählen

PHP Fatal error:  Uncaught Error: Call to a member function debug() on null in /admidio/adm_program/system/classes/Database.php:840
#0 /admidio/adm_program/system/classes/Database.php(213): Database->setDSNString()
#1 /admidio/adm_program/system/classes/Database.php(179): Database->connect()
#2 /admidio/adm_program/system/classes/Database.php(144): Database->__construct('mysql', 'SERVER', NULL, 'DATABASE', 'USER', 'PASSWORD')
#3 /admidio/adm_program/system/common.php(35): Database::createDatabaseInstance()
#4 /WP/wp-content/themes/twentyseventeen-child/header.php(14): require_once('/admidio/adm_program/system/common.php')
#5 /WP/wp-includes/template.php(688): require_once('/ in /admidio/adm_program/system/classes/Database.php on line 840
PHP Fatal error:  Uncaught Error: Call to a member function info() on null in /admidio/adm_program/system/shutdown.php:20
  thrown in /admidio/adm_program/system/shutdown.php on line 20
  
Ich habe noch weitere Tests durchgeführt. Eine Datei test.php im parallelen Ordner /TEST funktioniert ohne Probleme. Ich musste jedoch in der config.php $gSetCookieForDomain = true; setzen.

Code: Alles auswählen

<?php
// Datei /TEST/test.php
require_once($_SERVER['DOCUMENT_ROOT']. '/admidio/adm_program/system/common.php');
include_once($_SERVER['DOCUMENT_ROOT']. '/admidio/adm_program/system/login_valid.php');
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>Testseite</h1>
</body>
</html>
Scheinbar liegt es am Zusammenspiel von Wordpress und Admidio. Ich habe Admidio schon in eine andere Datenbank gelegt - funktioniert auch nicht.
Wie gesagt, mir sagen die Fehlermeldungen nichts, weil ich nicht verstehe, was da genau passiert.
XimeX
Developer
Beiträge: 1148
Registriert: 12. Jul 2015, 13:21
Wohnort: Austria

Re: Wordpress Seite mit Admidio Login schützen

Beitrag von XimeX »

"$gSetCookieForDomain" löst Problem Nr 1. Damit werden die Cookies für die ganze Domain gesetzt und nicht nur für den Unterordner. Du verwendest ja den Admidio Code außerhalb des admidio Ordners.

Problem Nr 2 ist wohl wieder das mit den globalen Variablen.
Die "header.php" wird ja von Wordpress sicher in einer function/class etc included/required. Dadurch werden unsere globalen variablen nicht mehr global definiert.
https://github.com/Admidio/admidio/issues/690
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Re: Wordpress Seite mit Admidio Login schützen

Beitrag von RalphW »

Was bedeutet das jetzt? Muss ich alle fehlenden globalen Variablen in der header.php auflisten?

Code: Alles auswählen

global $gDb;
usw.
XimeX
Developer
Beiträge: 1148
Registriert: 12. Jul 2015, 13:21
Wohnort: Austria

Re: Wordpress Seite mit Admidio Login schützen

Beitrag von XimeX »

Nein das Problem ist bei der Deklaration. Das ist jetzt nur mit viel aufwand möglich das auf einfach umzustellen.
Ich hab aber vor für Admidio v4.0 einige Umbauten zu machen damit wir das Problem nicht mehr haben.
Also entweder gedulden oder viel Zeit investieren alle $g... Deklarationen auf das global object umzustellen
RalphW
Beiträge: 99
Registriert: 20. Jun 2016, 14:42
Wohnort: Austria

Re: Wordpress Seite mit Admidio Login schützen

Beitrag von RalphW »

Das bedeutet, dass alle Vorkommen von z.B. $gValidLogin auf $GLOBALS["gValidLogin"] umgebaut werden müssen? :shock:
XimeX
Developer
Beiträge: 1148
Registriert: 12. Jul 2015, 13:21
Wohnort: Austria

Re: Wordpress Seite mit Admidio Login schützen

Beitrag von XimeX »

Genau. Also alle variablen die wir in Admidio als global betrachten. Also \$g[A-Z][\w]+
Antworten