source: t29-www/lib/simplepassword.php @ 1098

Last change on this file since 1098 was 1098, checked in by sven, 7 years ago

Passwortfeld exemplarisch einzeilig gemacht.

File size: 2.3 KB
Line 
1<?php
2/**
3 * Simpler Passwortschutz im Sinne einer "Barriere", die inmitten einer
4 * t29-Seite stehen kann.
5 * Prinzipiell ist dieser Passwortschut wirkungsvoll, sofern HTTPS
6 * verwendet wird. Die primitive Übermittlung per GET (oder POST)
7 * sorgt aber dafür, dass die Benutzererfahrung schwach ist (das
8 * Passwort wird etwa plain-text in der URL angezeigt oder ein einfaches
9 * Neuladen einer ansonsten statischen Seite führt stets zu den POST-
10 * Warnungen).
11 *
12 * In der Praxis auf t29 ist dieser Passwortschutz allerdings schon alleine
13 * deswegen völlig wirkungslos, weil die Files alle öffentlich per
14 * SVN einsehbar sind. Aber Heribert wollte es ja so. Ist nur ein
15 * Demonstrator.
16 *
17 * Beispiel einer verwenden Seite gibt es weiter unten.
18 *
19 **/
20
21class t29PasswordBarrier {
22        public $password;
23        public $paramkey = 't29-pwd-barrier';
24
25        function __construct($password=Null) {
26                $this->password = $password;
27        }
28
29        function isAuthenticated() {
30                return (isset($_GET[$this->paramkey]) &&
31                        $_GET[$this->paramkey] == $this->password);
32        }
33
34        function failedToAuthenticate() {
35                return (isset($_GET[$this->paramkey]) &&
36                        $_GET[$this->paramkey] != $this->password);
37        }
38
39        function printAuthForm() {
40                $failed = $this->failedToAuthenticate();
41
42                ?>
43                <div class="alert">
44                        Passwort benötigt, um diesen Teil der Seite zu sehen:
45                        <form method="get" class="inline">
46                                <input type="password" name="<?= $this->paramkey; ?>">
47                                <input type="submit" value="Anmelden">
48                        </form>
49                </div>
50                <?php
51        }
52
53        function printSuccessForm() {
54                ?>
55                <div class="alert alert-success">
56                        <h4>Erfolgreich eingeloggt</h4>
57                        Sie sind berechtigt, den folgenden Text zu lesen.
58                        <form method="get" class="inline">
59                                <input type="submit" value="Abmelden">
60                        </form>
61                </div>
62                <?php
63        }
64}
65
66/* Demo-Seite:
67
68<?php
69        $seiten_id = 'passwort-demo';
70        $titel = 'Passwort-Demo';
71
72        $dynamischer_inhalt = true;
73        require "../lib/simplepassword.php";
74        $barriere = new t29PasswordBarrier();
75        $barriere->password = "huhn";
76        // $barriere->startCheck();
77
78        require "../lib/technikum29.php";
79?>
80
81<h2>Schüleraufgaben</h2>
82
83<p>Den Text hier kann jeder lesen</p>
84
85<?php
86        if(! $barriere->isAuthenticated()) {
87                $barriere->printAuthForm();
88                return;
89        } else {
90                $barriere->printSuccessForm();
91        }
92?>
93
94Den hier kann man nur lesen, wenn man an der Barriere vorbei ist.
95
96*/
Note: See TracBrowser for help on using the repository browser.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License