Author Topic: Einfacher Passwortschutz für eine Seite  (Read 7183 times)

zeus-web

  • Guest
Einfacher Passwortschutz für eine Seite
« on: March 12, 2010, 01:29:34 PM »
Hallo Leute,

ich würde gerne bestimmte einzelne Seiten mit einem Passwort versehen. Also in der Art, dass wenn eine dieser Setien aufgerufen wird, nur ein Passwortfeld zu sehen ist. Wenn das richtige PW eingegeben wird, dann kommt der eigentliche Seiteninhalt.
Das Ganze müsste jetzt nicht hochsicher sein, sollte halt nur einem "Normalo" die Anzeige verhindern.
Extra Benutzer und Gruppen anlegen wäre mir hierfür zu kompliziert und mit diversen Nachteilen verbunden.

Jetzt frage ich mich, ob es da nicht eine Möglichkeit mittels eines Droplets/Snippets/Moduls oder so geben würde. Ich stelle mir das so vor, dass man im Editor einfach in der Art [[schutzpassowrt=12345]] einbaut und das dann irgendwie beim Anzeigen verarbeitet wird ;-)

Zum selber Programmieren fehlen mir da (noch) die Kenntnisse.
Darum: Hat jemand für mich ein paar Denkansätze wie man sowas angehen könnte?

Oder gibt es evtl. schon was und ich habs nur nicht gefunden?

Vielen Dank schonmal und viele Grüße
zeus


« Last Edit: March 12, 2010, 01:35:48 PM by zeus-web »

mr-fan

  • Guest
Re: Einfacher Passwortschutz für eine Seite
« Reply #1 on: March 12, 2010, 06:18:29 PM »
bitte hilfeseiten lesen und nach "Privat" suchen... :wink:

fang mal mit dieser seite an:

http://www.websitebaker2.org/de/hilfe/benutzerhandbuch/umgang-mit-wb/seitenverwaltung.php?searchresult=1&sstring=privat#wb_440

grüße martin

zeus-web

  • Guest
Re: Einfacher Passwortschutz für eine Seite
« Reply #2 on: March 12, 2010, 07:01:59 PM »
Hi Martin,

danke für Deine Antwort!
Leider ist das aber ja genau das, was ich grade NICHT will:
Ich möchte keine Benutzerverwaltung verwenden müssen, diese Methode hat leider diverse Nachteile:
 - Pflegeaufwand: extra Gruppen anlegen, User anlegen usw.
 - Jede Seite soll ein eigenes Passwort bekommen, da müssten sich bereits registrierte User ja dauernd ab und wieder neu anmelden

Die entsprechenden Seite(n) soll(en)
 - in den Menüs erscheinen
 - per URL eingabe aufrufbar sein (
 - sowohl für angemeldete als auch unangemeldete User erscheinen
 - jeweils eigene Passwörter bekommen

Allerdings soll dabei IMMER erst dann der Text/Inhalt der Seite erscheinen, wenn das richtige Passwort dazu eingegeben wurde. Zuvor (also ohne PW) sollte nur der Hinweis kommen, dass die Seite gesichert ist (möglichst noch mit pro Seite definierbarem Hinweistext).
Wohlgemerkt: nur ein _Passwort_, also User-unabhängig, aber jeweils ein festes Passwort für eine Seite. Für verschiedene Seiten verschiedene Passwörter.

Z.B. Soll auch ein angemeldeter User, der ansonsten alles sehen dürfte, nur dann den Seiteninhalt sehen, wenn das passende Passwort eingegeben wurde.

Konkretes Beispiel.
Ein gewünschter Anwendungszweck wäre eine Art Quiz: Auf der Seite bekommt man das Rätsel dargestellt und das "Passwortfeld" zur Eingabe der Lösung.
Gibt man nun die richtige Lösung (also das richtige Passwort) ein, dann "erweitert" sich die Seite (oder eine neue geht auf) wo man bisher versteckte weitergehende Infos zu der Frage findet. Natürlich muss das ganze im backend stecken (also nicht mit versteckten divs arbeiten) damit die Lösung/die Infos nicht schon im Quelltext der Seite zu finden sind :-)
Also hier ist die Variante mit Benutzerverwaltung wenig geeignet.

Weiteres Beispiel:
Auf einer Geburtstagsfeier wurden Fotos geschossen. Die möchte ich online stellen, damit die Gäste sich das anschauen können. Da ich aber nicht alle Gäste selber kenne (war selber nur Gast), möchte ich dort einfach bekannt geben: "Bilder auf meiner Homepage http://blafasel...".
Wenn die Leute nun auf die Seite gehen, dann sehen sie im Menü einen Link "Geburtstagsfeier vom 1.1.2009". Drauf geklickt, sehen sie nur sowas wie: "Geschützter Bereich. Um die Fotos zu sehen, muss das Passwort eingegeben werden. Dieses ist der Nachname des Geburtstagskindes".
Also der "Fremde" Besucher kann damit nichts anfangen, alle Geburtstagsgäste kennen aber den Namen und kommen weiter.
Auch dafür erscheint mir die Benutzervariante nicht praktikabel...

Momentan verwende ich noch Wordpress, wo es beim Verfassen eines Beitrages direkt die Möglichkeit gibt,
einer Seite ein PW zuzuweisen.... Aber ich würde gerne auf WebsiteBaker umsteigen, weil das für meine Zwecke an und für sich besser geeignet wäre...

Vielleicht hat ja noch jemand eine Idee? Oder eine Lösung, auf die ich bisher noch nicht gekommen bin? Oder hab ich das mit den Benutzern nur doch nicht verstanden?

Danke für Eure Tips!
zeus

Offline pcwacht

  • Posts: 2923
  • Gender: Male
    • Dutch ICT info
Re: Einfacher Passwortschutz für eine Seite
« Reply #3 on: March 12, 2010, 08:07:38 PM »
Mach ne droplet welche die inhalt zeigt WENN die richtige passwort gegeben ist


John
http://www.ictwacht.nl = Dutch ICT info
http://www.pcwacht.nl = My first
both still work in progress, since years.....

zeus-web

  • Guest
Re: Einfacher Passwortschutz für eine Seite
« Reply #4 on: March 12, 2010, 09:50:34 PM »
Hey, genau das mein ich ;-) Die Frage ist nur, wie geht man da ran? Hab keine Ahnung :-)

Offline pcwacht

  • Posts: 2923
  • Gender: Male
    • Dutch ICT info
Re: Einfacher Passwortschutz für eine Seite
« Reply #5 on: March 12, 2010, 10:59:26 PM »
(leider im english, mein Deutsch ist nicht am besten)

first duplicate your template
call it yourtemplatename_se cret (for example)
remove the :    <meta name="description" content="<?php page_description(); ?>" />
if you have it in your template because we need a field to set the password, and description is asd good as an other ;)

next find the :        <?php page_content(); ?>
and replace it with:
Code: [Select]
// show only content if correct password is given
// password is set in description on the page settings
//
$secretpass = $_POST["secretpass"] ;
$password = page_description();
echo "<hr>".$password."<hr>";
if ($secretpass=='') {  
// no password posted, show password form
echo '<form name="passneeded" action="'.$_SERVER['PHP_SELF'].'" method="post">
Please enter password: <input type="text" name="secretpass" value="" class="text" />
    &nbsp;<input type="submit" value="Unlock!" class="submit" />
    </form>';
} else {
    // password posted, is it the correct one?
if ($secret==$secretpass) {
// not the correct password
echo "Not valid, sorry!";
} else {
// correct pass, show content
page_content();";
}
}

Now you can use the page as norrmal, but it will not show unless you have the correct password.
The passwor dis set in the settings of the page in the description field.


Have fun!
John
http://www.ictwacht.nl = Dutch ICT info
http://www.pcwacht.nl = My first
both still work in progress, since years.....

zeus-web

  • Guest
Re: Einfacher Passwortschutz für eine Seite
« Reply #6 on: March 13, 2010, 12:59:20 AM »
Hey John,

you are a genius!
A pretty interesting solution, thanks a lot! So I have a base on wich I can work on!

Unfortunately there are some issues in that, but I think they are fixable.

One problem I am facing, is that the line:
$password = page_description();
doesn't work as it should. It seems, that the function prints its output directly in the page instead of giving it to the variable :-( I am not yet fimilar enough with php to solve that, but I keep trying ;-)

Then I found two small mistakes in your script (just to completetion):
1. Line
    if ($secret==$secretpass) {
should be
   if ($password==$secretpass) {

2. The two blocks in the second if-evaluation are twistet :-)

But anyway, thanks again for your push in the correct direction!
zeus




zeus-web

  • Guest
Re: Einfacher Passwortschutz für eine Seite
« Reply #7 on: March 13, 2010, 01:10:35 AM »
Just a few seconds later I found the solution :-)
instead of using the function, the variable (or constant?) "PAGE_DESCRIPTION" must be used...

So here is the code, that works as expected, just for reference.

Code: [Select]
$secretpass = $_POST["secretpass"] ;
$password = PAGE_DESCRIPTION;

if ($secretpass=='') { 
echo '<form name="passneeded" action="'.$_SERVER['PHP_SELF'].'" method="post">
Please enter password: <input type="text" name="secretpass" value="" class="text" />
    &nbsp;<input type="submit" value="Unlock!" class="submit" />
    </form>';
} else {
    // password posted, is it the correct one?
if ($password==$secretpass) {
// correct pass, show content
page_content();
} else {
// not the correct password
echo "Not valid, sorry!";
};
};
   

Offline pcwacht

  • Posts: 2923
  • Gender: Male
    • Dutch ICT info
Re: Einfacher Passwortschutz für eine Seite
« Reply #8 on: March 13, 2010, 11:19:04 AM »
Sorry for the errors/mistakes

I mostly just type it away to get peops started, and it did.

Have fun!
John
http://www.ictwacht.nl = Dutch ICT info
http://www.pcwacht.nl = My first
both still work in progress, since years.....