WBCE CMS – Way Better Content Editing.
You are not logged in.
Moin!
Auf einer Webseite hatte ich die gleiche Problematik: ich wollte bestimmte Inhalte nur passwordgeschüzt zeigen, gleichzeitig wollte ich nicht, dass die Leute im Backend des CMS eingelogt werden.
Ich habe so ein Modul richtig vermisst!
Ich habe aber die Problematik mittels eines Droplets gelöst. Als Grundlage habe ich SectionsPicker Droplet genommen und modifiziert.
Hier ist der modifizierter Code:
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
$sid = isset($sid) ? intval($sid) : 0;
$anchor = isset($anchor) ? (string)$anchor : '';
$requiredPassword = isset($pwd) ? (string)$pwd : '';
$sessionKey = 'section_access_' . $sid;
$enteredPassword = $_POST['section_password'] ?? '';
if ($requiredPassword !== '') {
if (!isset($_SESSION[$sessionKey]) || $_SESSION[$sessionKey] !== true) {
if ($enteredPassword === $requiredPassword) {
$_SESSION[$sessionKey] = true;
} else {
return '
<form method="post">
<label>Bitte Passwort eingeben:</label><br>
<input type="password" name="section_password">
<button type="submit">Anzeigen</button>
</form>
' . ($enteredPassword !== '' ? '<p style="color:red;">Falsches Passwort!</p>' : '');
}
}
}
return get_section_content($sid, false, $anchor);Der Aufruf erfolgt wie beim SectionsPicker gewöhnt durch:
[[pwdsectionspicker?sid=1234&pwd=Geheim123]]
Last edited by florian (21.12.2025 20:00:22)
Offline
byteworker, jean
So ganz verstehe ich deine Frage nicht. Genau das macht das Modul ja. Es fragt ein Passwort ab und gibt, wenn richtig, den Content aus.
![]()
[...]
Das Zeigt wie unterschiedlich die Herangehensweise sein können. kleo hat nochmals eine andere Richtung eingeschlagen.
Im Endeffekt kommt es darauf an das es funktioniert.
![]()
Offline
Moin!!
ich habe Droplet weiter modifiziert. Zum Passwort ist auch Login dazu gekommen und die Möglichkeit nicht nur eine, sondern mehrere Sectionen (Abschnitte) zu zeigen.
Die zu zeigende Abschnitte werden unter sid= mit Komma getrennt eingegeben und in der eingegebenen Reihenfolge dargestellt.
Bei Login/Passwort ist es möglich mehrere Logins und Passwörter einzugeben, die dann in der Reihenfolge wie eingegeben: Login1/Passwort1, Login2/Passwort2 usw gelten.
Werden z.B. 3 verschiedene Logins eingegeben, aber nur ein Passwort, gilt dieses für alle 3 Logins.
Hier ist der modifizierte Code:
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
$sidParam = $sid ?? '';
$loginParam = $login ?? '';
$pwdParam = $pwd ?? '';
$enteredLogin = $_POST['section_login'] ?? '';
$enteredPassword = $_POST['section_password'] ?? '';
$sidList = array_filter(array_map('intval', explode(',', $sidParam)));
$logins = array_filter(array_map('trim', explode(',', $loginParam)));
$passwords = array_filter(array_map('trim', explode(',', $pwdParam)));
$credentials = [];
if (count($passwords) === 1) {
// 1 Passwort für alle Logins
foreach ($logins as $loginName) {
$credentials[$loginName] = $passwords[0];
}
} else {
// 1:1 Zuordnung (minimale Länge)
$count = min(count($logins), count($passwords));
for ($i = 0; $i < $count; $i++) {
$credentials[$logins[$i]] = $passwords[$i];
}
}
$groupKey = hash('sha256', json_encode($credentials));
$sessionKey = 'section_access_group_' . $groupKey;
$cookieKey = 'section_access_group_cookie_' . $groupKey;
if (isset($_COOKIE[$cookieKey]) && $_COOKIE[$cookieKey] === $groupKey) {
$_SESSION[$sessionKey] = true;
}
if (!isset($_SESSION[$sessionKey]) || $_SESSION[$sessionKey] !== true) {
if (
$enteredLogin !== '' &&
isset($credentials[$enteredLogin]) &&
$enteredPassword === $credentials[$enteredLogin]
) {
$_SESSION[$sessionKey] = true;
// Cookie setzen (7 Tage)
setcookie(
$cookieKey,
$groupKey,
time() + (7 * 24 * 60 * 60),
'/',
'',
false,
true
);
} else {
return '
<form method="post">
<label>Login:</label><br>
<input type="text" name="section_login"><br><br>
<label>Passwort:</label><br>
<input type="password" name="section_password"><br><br>
<button type="submit">Anmelden</button>
</form>
' . (($enteredLogin !== '' || $enteredPassword !== '')
? '<p style="color:red;">Login oder Passwort falsch!</p>'
: '');
}
}
$output = '';
foreach ($sidList as $singleSid) {
$output .= get_section_content($singleSid, false, '');
}
return $output;Der Aufruf:
[[pwdsectionspicker?sid=10,20&login=alice,bob&pwd=passA,passB]]
oder nur mit einem Passwort
[[pwdsectionspicker?sid=10,20,30&login=user1,user2,user3&pwd=secret]]
Man kann beliebig viele Logins und Passwörter eingeben, bei mehreren wird es aber schnell unübersichtlich.
;-)
Offline
P.S.
Angemeldet bleibt man 7 Tage.
Wenn jemand es ändern möchte, Parameter in dieser Zeile ändern:
time() + (7 * 24 * 60 * 60),
Tage * Stunden * Minuten * Sekunden
Offline
Ich hab das mal vom Ursprungsthread angetrennt
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Themenbezeichnung war falsch, mein Fehler, sorry. Ist jetzt korrigiert
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Pages: 1