MySQL-Webseitenschutz noch Fragen

PHP, CSS und JavaScript lernen. Anwendungen für Webseiten
Boomer
Mitglied (Level 7)
Mitglied (Level 7)
Beiträge: 68
Registriert: Mo 10. Jan 2022, 09:59

MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Boomer »

Hallo,

habe mich durch Tommys Tutorial gearbeitet aber immer noch Probleme. Die Erzeugung der Datenbank mit der installation.php hat geklappt, die Tabelle steht mit allen Feldern.
Die php Teile habe ich an die angewiesenen Stellen kopiert, das mit den html Teilen habe ich offenbar falsch gemacht:

Die Seite https://sonoboomer.com/anmeldung.php kann ich aufrufen
Die anderen Seiten aber nicht, kommen nur Fehler im Browser, daher habe ich Screenshots aus mobirise engehängt:
Screenshot_hauptseitephp.jpg
Screenshot_passwort_aendernphp.jpg
Screenshot_passwort_vergessen.jpg
Screenshot_register.jpg
Kann jemand helfen ? Danke Thomas
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Tommy Herrmann »

Moin,

für andere die auch helfen oder mitlesen wollen.

Es geht um die Anwendung "MySQL-Webseitenschutz" von Werner-Zenk.de:

https://werner-zenk.de/archiv/mysql_webseitenschutz.php

Hier ist mein Tutorial zu finden:

https://www.mobirise-tutorials.com/Seit ... orial.html

Mit Deinen Screenshots kann man nun so gut wie nichts anfangen. Du müsstest Seite für Seite ganz genau beschreiben und zeigen, was Du wo eingebaut hast. Am besten auch den Code-Teil immer hier posten (Deine Passwörter musst Du natürlich ändern), , denn PHP-Code kann man ja (zum Glück) nicht online im Quelltext der Seite sehen.

Natürlich muss jede der Seiten, auf der ein PHP-Skript eingebaut wurde, auch die Datei-Erweiterung .php in den Seiteneinstellungen ("Page Settings") erhalten (anstelle von .html), damit die PHP Skriptsprache überhaupt am Server verarbeitet werden kann.

Schon Deine erste Seite funktioniert ja nicht, sondern zeigt lediglich das Formular an.

Insgesamt muss man zum Einbau solcher Skripte schon ein wenig Erfahrung haben, so ganz ohne Wissen um HTML und PHP geht es nur sehr schwierig.


Dann müsste man Stück für Stück sehen, was Du zum einen in den Seiteneinstellungen einer jeden Seite "vor dem DOCTYPE" an PHP-Code eingefügt hast (Achtung, dort darf kein Leerzeichen oder Leerzeile am Beginn des Codes stehen bleiben):


Before Doctype.JPG



... und was Du zum anderen genau im "Code Editor" des Mobirise-Blocks einer jeden Seite eingefügt hast:



Code-Editor.JPG
Boomer
Mitglied (Level 7)
Mitglied (Level 7)
Beiträge: 68
Registriert: Mo 10. Jan 2022, 09:59

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Boomer »

Danke für Anleitung und Screenshots. Das mit der Umbenennung in php habe ich gemacht.
So sieht es bei mir aus, jeweils php-Teil der page settings und html-Teil aus dem Code Editor, an den unteren Enden fehlen Teile, die ich auf den Screenshot nicht draufbekommen habe:

Anmeldung:
page-settings_anmeldungphp.jpg
anmeldung_html.jpg
Hauptseite:
page-settings_hauptseitephp.jpg
hauptseite_html.jpg
Passwort ändern:
passwort_ändernphp.jpg
passwort-ändern_html.jpg
Passwort vergessen:
passwort_vergessenphp.jpg
passwort-vergessen_html.jpg
registerphp.jpg
register_html.jpg
Hoffe, Du kannst was damit anfangen.

Gruß und Danke, Thomas

PS: Gibt´s auch eine Kaffeekasse im Forum ?
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Tommy Herrmann »

... ja - also - so ist das wohl zu schwer zu erkennen.

Ich beschreibe hier wahrscheinlich eine etwas ältere Version vom 03.05.2021 - der Einbau sollte aber ungefähr gleich geblieben sein. Es können sich allerdings Dateinamen oder Verzeichnisnamen bei Werners Skripten geändert haben, Du musst also von den Skripten ausgehen, die Du verwendest und meine Anleitung nur als Beispiel behandeln.

Ich bin sicher, dass Werner-Zenk.de hier auch ein wenig aufpasst, dass ich keinen Mist schreibe :D

Hattest Du denn zunächst mal alles vom Werner in ein Testverzeichnis kopiert und erst einmal, ohne es in Mobirise einzubauen, ausprobiert? Das solltest Du tun.

So mache ich das immer, wenn ich mit Skripten nicht so zu 100% sicher bin. Falls nicht - solltest Du das tun. Das ist schon ein etwas kompliziertes Skript und nicht so super einfach einzubauen.

Erst wenn alles perfekt läuft, machst Du Dich an den Einbau in Mobirise.

Du kannst natürlich nur einen Benutzer anmelden, der bereits in der Datenbank registriert wurde. Deswegen solltest Du das auch eben alles schon mal vor dem Einbau in Mobirise erledigt haben.

Alles auf einmal ist mir zu unübersichtlich - deswegen machen wir das "Seite für Seite":

Fangen wir mal nochmals mit der Seite zum Anmelden an:

anmeldung.php

Meine Mobirise-Seiten habe ich alle exakt so genannt, wie jene aus dem Download von Werner - also diese dann eben "anmeldung.php". Die Datei "anmeldung.php" liegt in meiner Version noch in der "Root" (Wurzel) - also im Stamm- oder Wurzelverzeichnis dieses Projektes.

Natürlich müssen alle anderen Seiten auch bei Dir am Server genau in den vom Werner angelegten Verzeichnissen liegen, wie hier z.B. die inkludierte Seite mit den Einstellungen im Verzeichnis:

"admin"

... der Root (Hauptverzeichnis des Projektes).

include "./admin/einstellungen.php";

Dieser Code steht in den Seiteneinstellungen im Bereich:

"Before <!DOCTYPE>, <html> and <head> tags:"

Code: Alles auswählen

<?php
/*
 * Webseitenschutz - anmeldung.php (utf-8)
 * - https://werner-zenk.de
 */

session_start();
include "./admin/einstellungen.php";
$fehler = false;

// Benutzer bereits angemeldet - Weiterleitung zur geschützten Seite
if (isset($_SESSION["login"]) &&
    !isset($_GET["abmeldung"])) {
 header("Location: ./hauptseite.php");
 exit;
}

// Anmeldung
if ($_SERVER["REQUEST_METHOD"] == "POST" &&
    $_POST["benutzername"] != "") {

 // CSRF-Token überprüfen
 if ($_SESSION["token"] != $_POST["token"]) die;

 // Anmeldeversuche
 if (!isset($_SESSION["versuche"])) {
  $_SESSION["versuche"] = 1;
 }
 else {
  $_SESSION["versuche"]++;
 }

 // Leerzeichen entfernen
 $_POST["benutzername"] = trim($_POST["benutzername"]);
 $_POST["passwort"] = trim($_POST["passwort"]);

 // Benutzername und Passwort auslesen
 $select = $db->prepare("SELECT `benutzername`, `passwort`, `sperre`, `letzterbesuch`, `besuche`
                                       FROM `" . $TBL_NAME . "`
                                       WHERE `benutzername` = :benutzername");
 $select->execute([':benutzername' => $_POST["benutzername"]]);
 $reg = $select->fetch();
 if ($select->rowCount() == 1) {

  // Name, Passwort und Anmeldeversuche überprüfen
  if ($reg["benutzername"] == $_POST["benutzername"] &&
      password_verify($_POST["passwort"], $reg["passwort"]) &&
      $reg["sperre"] == "1" &&
      $_SESSION["versuche"] <= $ANMELDEVERSUCHE) {

   // Session setzen
   unset($_SESSION["versuche"]);
   session_regenerate_id();
   $_SESSION["login"] = true;
   $_SESSION["benutzer"] = $reg["benutzername"];
   $_SESSION["Admin"] = $reg["benutzername"] == $ADMIN_NAME ? true : false;
   
   // Letzter Besuch und Anzahl der Besuche
   $_SESSION["letzterbesuch"] = $reg["letzterbesuch"];
   $_SESSION["besuche"] = $reg["besuche"];   

   // Besuch eintragen
   $db->query("UPDATE `" . $TBL_NAME . "`
                        SET `letzterbesuch` = NOW(),
                               `besuche` = `besuche` + 1
                        WHERE `benutzername` = '" . $_SESSION["benutzer"] . "'");

   // Weiterleitung zur geschützten Seite
   header("Location: ./hauptseite.php");
   exit;
  }
  else {
   $fehler = true;
  }
 }
}

// Abmeldung
if (isset($_SESSION["login"], $_GET["abmeldung"])) {

 // Session und Cookies löschen
 unset($_SESSION["benutzer"]);
 $_SESSION = [];
 if (ini_get("session.use_cookies")) {
  $params = session_get_cookie_params();
  setcookie(session_name(), '', time() - 42000, $params["path"],
   $params["domain"], $params["secure"], $params["httponly"]);
 }
 session_destroy();

 // Weiterleitung zur Anmeldung
 header("Location: anmeldung.php?abmeldung_ok");
 exit;
}

// CSRF-Token erzeugen
$min = 1000;
$max = getrandmax();
$_SESSION["token"] = rand($min, $max);
?>
Wie du auch oben im PHP-Code erkennen kannst, wird bei erfolgreicher Anmeldung auf die Seite "hauptseite.php" weitergelietet. Die Seite "hauptseite.php" liegt beim Werner nicht in der Root, das habe ich für Mobirise extra geändert, da ja Mobirise immer nur in die Root publizieren kann und nicht in Unterverzeihnisse. Da müssen wir später noch genauer darauf eingehen.

header("Location: ./hauptseite.php");

Diesen Punkt und Slash vor dem Dateinamen nennt man "relative" Pfadanabe:

./ = bleibe im gleichen Verzeichnis - oder auch nur / oder auch gar nichts vor dem Dateinamen
../ = gehe ein verzeihcnis höher
../../ = gehe zwei Verzeichnisse höher


... dann habe ich mir einen einfachen Textblock aus der Kategorie "Article" auf der Seite aufgezogen um dort das Formular einzubauen und dort quasi den Beispielrext von Mobirise mit dem Formular-Code erstezt - also der markierte Teil im Screenshot (unten):

Code: Alles auswählen

                 <!-- Beginn Anmeldung Seitenschutz -->

                <form action="anmeldung.php" method="post" accept-charset="UTF-8">
                <p>
                 <label for="benutzername"><u>B</u>enutzername:</label> <span class="pflichtfeld">✲</span> <br>
                 <input type="text" name="benutzername" id="benutzername" size="25" maxlength="25" <?= isset($_GET["abmeldung_ok"]) ? '' : '';?> required="required" accesskey="b"><br>
                 <span class="hilfetext">Geben Sie hier Ihren Benutzernamen ein.</span>
                </p>

                <p>
                 <label for="passwort"><u>P</u>asswort:</label> <span class="pflichtfeld">✲</span> <br>
                 <input type="password" name="passwort" id="passwort" size="25" required="required" accesskey="p"> 
                 <a class="text-primary" href="passwort_vergessen.php"><small>Passwort vergessen</small></a><br>
                 <span class="hilfetext">Geben Sie hier Ihr Passwort ein.</span>
                </p>

                 <p>
                  <input type="hidden" name="token" value="<?=$_SESSION["token"];?>">
                  <input type="submit" class="btn btn-primary" value="Anmelden">
                 </p>
                </form>

                <?php
                if (isset($_GET["abmeldung_ok"])) {
                 echo '<p class="ok">&#10004; Sie wurden erfolgreich abgemeldet.</p>';
                }
                if (isset($fehler, $_SESSION["versuche"]) &&
                    $_SESSION["versuche"] < $ANMELDEVERSUCHE) {
                 echo '<p class="ko">&#10008; Der Benutzername oder das Passwort ist falsch!<br>
                         Anmeldeversuch ' . $_SESSION["versuche"] . ' von ' . $ANMELDEVERSUCHE . '.</p>';
                }
                if (isset($_SESSION["versuche"])) {
                 if ($_SESSION["versuche"] >= $ANMELDEVERSUCHE) {
                  echo '<p class="ko">&#10008; Es stehen Ihnen keine weiteren Anmeldeversuche zur Verfügung!</p>';
                 }
                }
                ?>
                <!-- Ende Anmeldung Seitenschutz -->
Ganz oben im Formular findest Du eben die Formular-Aktion mit Aufruf dieser gleichen Seite "anmeldung.php" um den PHP-Code aus den Seiteneinstellungen nach der Eingabe der Formulardaten abzuarbeiten:

<form action="anmeldung.php" method="post" accept-charset="UTF-8">


Formular Anmeldung.JPG


Im rechten Bereich vom "Code Editor" > dem "CSS Editor" > stehen dann auch noch einige CSS-Anweisungen für das Design vom Werner.

Damit wäre dann die Seite "anmeldung.php" fertiggestellt.
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Werner-Zenk.de »

Da müssen die Pfadangaben beachtet werden, wo befindet sich deine Datei anmeldung.php nun,
A., direkt im Hauptverzeichnis https://sonoboomer.com/anmeldung.php
B., oder im Unterverzeichnis /register
fehhler_anmeldung.png


Im Hauptverzeichnis gibt es da die direkten Unterverzeichnisse: /admin und /benutzer ?

fehhler_anmeldung2.png
Boomer
Mitglied (Level 7)
Mitglied (Level 7)
Beiträge: 68
Registriert: Mo 10. Jan 2022, 09:59

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Boomer »

Danke Euch beiden wieder mal !!
Auf dem Server ist etliches gar nicht vorhanden oder am falschen Platz. Werde mich durch die Verweise pflügen und alles korrigieren. Melde mich dann auf jeden Fall nochmal.
Tut mir leid :verlegen:

Thomas
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Tommy Herrmann »

Da Du (höchstwahrscheinlich) keinen lokalen Host installiert hast - wie z.B. "XAMPP" - musst und kannst Du PHP Skripte immer nur am Server testen. Am Computer hast Du sonst kein PHP und kannst das überhaupt nicht ausführen lassen.
Benutzeravatar
Volker
Moderator
Moderator
Beiträge: 828
Registriert: Sa 12. Dez 2020, 22:35
Wohnort: Wildberg
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Volker »

Huhu Werner :D

Ich hab mir jetzt auch mal die aktuelle Version gezogen und installiert.
Das mit der zeitlichen Beschränkung finde ich interessant. Nur suche ich jetzt eine Lösung, die mir die verbleibenden Tage anzeigt, wenn der User sich angemeldet hat.

Also wenn User X sich anmeldet und von den 30 vor eingestellten Tage schon 10 rum sind sollte da stehen "Noch 20 Tage Login möglich" oder so ;)
Gruß Volker
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Werner-Zenk.de »

Moin Volker,

das ist kein Problem, du verwendest dieses Skript: https://werner-zenk.de/scripte/berechnu ... 2.php#tage

Der Wert aus der DB-Spalte "begrenzung" ist zb.: 2022-03-02

Das Script änderst du nun wie folgt um:

Code: Alles auswählen

<?php
// Differenz zwischen Tagen berechnen

// Start- und Enddatum festlegen
$start = date_create('now');
$ende = date_create('2022-03-02'); // Wert aus der DB-Spalte

// Umrechnen in Tage
$interval = date_diff($start, $ende);
$differenz = $interval->format('%a');

// Anzahl Tage ausgeben
echo 'Noch ' . $differenz . ' Tage Login möglich!';
?>
Ausgabe: "Noch 32 Tage Login möglich!"
Benutzeravatar
Volker
Moderator
Moderator
Beiträge: 828
Registriert: Sa 12. Dez 2020, 22:35
Wohnort: Wildberg
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Volker »

Super Werner,

so meinte ich :D
Gruß Volker
Benutzeravatar
Werner-Zenk.de
Mitglied (Level 10)
Mitglied (Level 10)
Beiträge: 755
Registriert: Di 8. Dez 2020, 19:42
Wohnort: Bamberg
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Werner-Zenk.de »

In der Datei: anmeldung.php fügst du bei: // Session setzen folgendes hinzu:
$_SESSION["begrenzung"] = $reg["begrenzung"];

In der Datei: hauptseite.php
muss oben noch die Datei: einstellungen.php inkludiert werden:
include "../admin/einstellungen.php";

Und weiter unten in der Datei:

Code: Alles auswählen

 <?php
    // Letzter Besuch und Anzahl der Besuche

    sscanf($_SESSION["letzterbesuch"], "%4s-%2s-%2s %5s", $jahr, $monat, $tag, $uhr);
    echo '<p>Letzter Besuch am: ' . $tag . '.' . $monat . '.' . $jahr . ' um ' . $uhr . ' Uhr<br>' .
      'Anzahl der Besuche: ' . ($_SESSION["besuche"] + 1) . '</p>';

    // Anzeigen der verbleibendenden Tage bei der zeitlichen Zugangsberechtigung
    if ($ZEITLICHE_ZUGANGSBERECHTIGUNG == "ja" &&
        !$_SESSION["Admin"]) {

      $start = date_create('now');
      $ende = date_create($_SESSION["begrenzung"]);
      $interval = date_diff($start, $ende);
      $differenz = $interval->format('%a');
      echo '<p>Es verbleiben Ihnen ' . $differenz . ' Tage!</p>';
    }
    ?>
Boomer
Mitglied (Level 7)
Mitglied (Level 7)
Beiträge: 68
Registriert: Mo 10. Jan 2022, 09:59

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Boomer »

Jetzt komme ich auch nochmal mit deutlich dümmeren Fragen.
Wie schon von Tommy und Werner festgestellt, habe ich das meiste falsch verlinkt bzw. die entsprechenden Dateien waren auf dem Server z.T. nicht vorhanden und im falschen Verzeichnis. XAMPP habe ich jetzt erstmal nicht verwendet und alles auf dem Server ausprobiert.

Es sieht jetzt so aus:
1.) https://sonoboomer.com/register.php Registrierung ist durchgelaufen, Nachricht: "Sie werden nach einer Überprüfung durch den Administrator freigeschaltet."
In meiner Mailbox kommt die Nachricht, dass sich jemand angemeldet hat. Wie schalte ich ihn dann frei ?
2.) Wo kann ich das Design der Formulare ändern ? Würde z.B. gerne, dass alles linksbündig angezeigt wird und die Absätze sinnvoller strukturiert sind ?

Dank und Gruß, Thomas
Benutzeravatar
Volker
Moderator
Moderator
Beiträge: 828
Registriert: Sa 12. Dez 2020, 22:35
Wohnort: Wildberg
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Volker »

Freischalten in der bernutzerverwaltung.php


benutzer1.png
Den Header und Footer kannst Du raus nehmen

Code: Alles auswählen

<?php include "../header.php"; ?>

Code: Alles auswählen

<?php include "../footer.php"; ?>
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Tommy Herrmann »

Moin,

also in der Datei "einstellungen.php" (meine Version ist aus dem Jahr 2020) kannst Du doch auch entscheiden, ob eben der Administrator jeden freischalten soll oder ob der Benutzer das selbst über die Registrierungs-Mail tun kann:

Code: Alles auswählen

// Den neuen Benutzer vom Administrator freischalten lassen (ja/nein)
// Bei "nein" bekommt der Benutzer automatisch eine E-Mail um sich freischalten zu lassen.
$ADMINCHECK = "nein"; // nein

Die CSS (Stil) kannst Du beliebig anpassen oder auch ganz weglassen. Die Datei "style.css" vom Werner habe ich gar nicht eingebunden, sondern nur bestimmte Bereiche dieser Style-Anweisungen in meinen Block in den Bereich "CSS Editor" kopiert.

Die Tags (im Code unten) wie wie html, body, header, nav solltest Du so nicht übernehmen, denn die werden ja alle bereits von Mobirise definiert. Z.B. wird dort der Text im Selektor "header" zentriert:

CSS vom Werner hat geschrieben:text-align: Center;

Code: Alles auswählen

html {
 background-color: #F5F5F5;
 scroll-behavior: smooth;
 cursor: Default;
}

body {
 font-family: Verdana, Arial, Sans-Serif;
 font-size: 1rem;
 color: #000000;
 background-color: #FFFFFF;
 padding: 1rem;
 margin: Auto;
 max-width: 45rem;
 scroll-behavior: smooth;
}

header {
 background-color: #ECECEC;
 text-align: Center;
 padding: 0.5rem;
 font-size: 1.4rem;
}

nav {
 background-color: #F5F5F5;
 text-align: Center;
 padding: 0.5rem;
 word-spacing: 8px;
}

Ich habe z.B. auf meiner Seite "anmeldung.php" diese Anweisungen (im Code unten) aus der Datei "style.css" vom Werner in den Bereich "CSS Editor" vom "Code Editor" kopiert und übernommen (vielleicht auch angepasst - weiß ich jetzt nicht mehr):

Code: Alles auswählen

form {
  background-color: #F5F5F5;
}
select {
  font-family: Verdana, Arial, Sans-Serif;
  font-size: 1rem;
}
input[type="text"], input[type="password"], input[type="number"], input[type="email"], input[type="button"], input[type="reset"], input[type="submit"], button[type="submit"] {
  border: Solid 1px #9A9A9A;
  font-family: Verdana, Arial, Sans-Serif;
  font-size: 1rem;
  padding: 3px 5px 3px 5px;
}
input[type="text"]:focus, input[type="password"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="checkbox"]:focus {
  border: Solid 1px #4169E1 !important;
  outline: 0;
  box-shadow: 0px 0px 3px 0px #4169E1 !important;
}
input[type="submit"], input[type="button"], button[type="button"], button[type="submit"] {
  background-color: #E0E0E0;
}
input[type="submit"]:hover, input[type="button"]:hover, button[type="button"]:hover, button[type="submit"]:hover {
  border: Solid 1px #0078D7;
  background-color: #E5F1FB;
}
input[type="checkbox"]:checked + label {
  color: #4169E1;
}
.ok {
  color: #FFFFFF;
  background-color: #0094D2;
  padding: 15px;
}
.ko {
  color: #FFFFFF;
  background-color: #EE0000;
  padding: 15px;
}
.pflichtfeld {
  color: #FF0000;
}
.hilfetext {
  font-family: Arial, Tahoma, Verdana, Sans-Serif;
  font-size: 0.80rem;
  font-style: Oblique;
  color: #009B00;
}


CSS-Seitenschutz.JPG


Bitte lese mein Tutorial aufmerksam - da steht es doch ganz genau. Du hast vollkommen falsche Bereiche eingebunden - dadurch entsteht auch das Zentrieren bei Dir auf der Seite.

https://www.mobirise-tutorials.com/Seit ... orial.html

Das ist der Code der Seite "anmeldung.php", den Du z.B. in einen einfachen Textblock aus der Rubrik "Article" einbindest. Natürlich darfst Du auch den Inhalt von diesem Mobirise-Textblock nicht zuvor auf "zentrieren" gestellt haben, sondern auf linksbündig. Das kannst Du auch oben im Scrennshot im linken Bereich "HTML Editor" erkennen.

Um fremde und selbsteingebaute Codes auch später noch besser zu erkennen, Kommentiere ich solche Bereiche meist auch:

<!-- Beginn Anmeldung Seitenschutz -->

Code: Alles auswählen

<!-- Beginn Anmeldung Seitenschutz --> 
<form action="anmeldung.php" method="post" accept-charset="UTF-8"> 

<p> 
 <label for="benutzername"><u>B</u>enutzername:</label> <span class="pflichtfeld">✲</span> <br> 
 <input type="text" name="benutzername" id="benutzername" size="25" maxlength="25" <?= isset($_GET["abmeldung_ok"]) ? '' : '';?> required="required" accesskey="b"><br> 
 <span class="hilfetext">Geben Sie hier Ihren Benutzernamen ein.</span> 
</p> 
<p> 
 <label for="passwort"><u>P</u>asswort:</label> <span class="pflichtfeld">✲</span> <br> 
 <input type="password" name="passwort" id="passwort" size="25" required="required" accesskey="p">  
 <a href="passwort_vergessen.php"><small>Passwort vergessen</small></a><br> 
 <span class="hilfetext">Geben Sie hier Ihr Passwort ein.</span> 
</p> 
<p> 
 <input type="hidden" name="token" value="<?=$_SESSION["token"];?>"> 
 <input type="submit" class="btn btn-primary" value="Anmelden"> 
</p> 
</form>
<?php 
if (isset($_GET["abmeldung_ok"])) { 
 echo '<p class="ok">&#10004; Sie wurden erfolgreich abgemeldet.</p>'; 
} 
if (isset($fehler, $_SESSION["versuche"]) && 
  $_SESSION["versuche"] < $ANMELDEVERSUCHE) { 
 echo '<p class="ko">&#10008; Der Benutzername oder das Passwort ist falsch!<br> 
     Anmeldeversuch ' . $_SESSION["versuche"] . ' von ' . $ANMELDEVERSUCHE . '.</p>'; 
} 
if (isset($_SESSION["versuche"])) { 
 if ($_SESSION["versuche"] >= $ANMELDEVERSUCHE) { 
 echo '<p class="ko">&#10008; Es stehen Ihnen keine weiteren Anmeldeversuche zur Verfügung!</p>'; 
 } 
} 
?> 
<!-- Ende Anmeldung Seitenschutz -->

Dann ist Deine Schrift auch viel zu groß - Du musst im Mobirise Block den Text-Bereich wählen mit der normalen Textgröße. Dieses (oder ähnliches) DIV von Mobirise muss also erhalten bleiben, denn dort wird die Größe der Schrift definiert:

mbr-theme-style="display-7"

Code: Alles auswählen

<div class="mbr-text col-12 mbr-fonts-style" mbr-theme-style="display-7" data-app-selector=".mbr-text" data-multiline mbr-article mbr-class="{'col-md-6': widthContent == 1, 'col-md-8': widthContent == 2, 'col-md-10': widthContent == 3, 'col-md-12': widthContent == 4}">

         hier wird Dein Formular vom Werner eingetragen

</div>

Ansicht-Linksbündig.JPG



... und das alles (unten im Code) hat im Block mit dem Code vom Werner gar nichts zu suchen - das ist falsch (bzw. schon von Mobirise im Head-Bereich definiert) - JavaScripts gehören nicht in den Block, sondern in die Seiteneinstellungen - am besten Du löscht den gesamten Block und fängst nochmals von vorne an:

Code: Alles auswählen

  <meta charset="utf-8">
  <title>Registrierung</title>
  <meta name="robots" content="noindex">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" type="text/css" media="screen" href="../style.css">

  <script>
    // Passwort im Klartext anzeigen
    function zeigePasswort() {
      if (document.getElementById("checkpw").checked == true) {
        document.getElementById("passwortA").type = "text";
        document.getElementById("passwortB").type = "text";
      } else {
        document.getElementById("passwortA").type = "password";
        document.getElementById("passwortB").type = "password";
      }
    }

    // Passwort generieren
    var xhr = new XMLHttpRequest();

    function erzeugePasswort() {
      xhr.open("GET", "register.php?generate", true);
      xhr.send();
      xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
          document.getElementById("pw").innerText = xhr.responseText;
        }
      }
    }
  </script>

  <style>
    /* Passwort Funktion */
    span.pwfunktion {
      font-family: Arial, Tahoma, Verdana, Sans-Serif;
      color: Royalblue;
      cursor: Pointer;
    }

    /* Passwort Ausgabe */
    span#pw {
      font-family: Monospace;
      font-weight: Bold;
      font-size: 1.1rem;
      letter-spacing: 4px;
      background-color: #FFFFE1;
      cursor: Text;
    }
  </style>





  <header>
example.com
</header>
  <nav>
    <a href="./index.php">Startseite</a>
    <a href="anmeldung.php">Anmelden</a>
    Registrierung
  </nav>

  <article>
Boomer
Mitglied (Level 7)
Mitglied (Level 7)
Beiträge: 68
Registriert: Mo 10. Jan 2022, 09:59

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Boomer »

Ich glaube ich hab´s, zumindest so 95%.
... und das alles (unten im Code) hat im Block mit dem Code vom Werner gar nichts zu suchen - das ist falsch (bzw. schon von Mobirise im Head-Bereich definiert) - JavaScripts gehören nicht in den Block, sondern in die Seiteneinstellungen - am besten Du löscht den gesamten Block und fängst nochmals von vorne an:
Musste mich unglaublich reinknien, was html Teile und was php Teile sind. Habe gestern alles nochmal gemacht. Danke für Eure Geduld und Hilfe. Habe noch ein paar wahrscheinlich einfache Fragen:

1.)
Freischalten in der benutzerverwaltung.php
Wie mache ich das ? Im Browser die Seite sonoboomer/admin/benutzerverwaltung.php aufrufen ? Das funktioniert leider nicht, Verzeichnis auf dem Server ist aber korrekt.
2.) https://sonoboomer.com/register.php, welchen mobirise Block könnte ich noch verwenden, damit ich ein attraktives Hintergrungbild mit Parallax-Effekt einbinden kann ?
3.) Unter dem linken Video möchte ich gern den weißen Balken beseitigen, mobirise zeigt an dieser Stelle: [JS_CODE_0] ich finde da aber keinen Code im Editor, der dem entspricht. Habt Ihr eine Idee ?
Screenshot_Video.jpg
Grüße und ganz vielen Dank, Thomas
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Tommy Herrmann »

Moin,

Wo sind denn die beiden Videos - bitte Link (URL) zur Seite.
Benutzeravatar
Volker
Moderator
Moderator
Beiträge: 828
Registriert: Sa 12. Dez 2020, 22:35
Wohnort: Wildberg
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Volker »

Hallo Thomas,

wenn Du die Benutzerverwaltung aufrufen möchtest, musst Du natürlich vorher eingeloggt sein ;)
Der direkte Aufruf von dem Link führt natürlich erst zur Anmeldung.

Also logge dich als Admin ein und rufe dann https://deineseite.de/admin/benutzerverwaltung.php im Browser auf.
Du kannst Dir auch einen Link in MB einbauen und den direkt dann mit der benutzerverwaltung.php verlinken. Der kann solange direkt aufgerufen werden, wie Du als Admin eingeloggt bist. Nach ausloggen wird dieser Link dich wieder zur Anmeldung führen ;)

Wenn Du das original Script vom Werner nutzt, hast Du nach einloggen als Admin ebenfalls diesen Link zur Benutzerverwaltung und auch zur zeitlichen Begrenzung.
webseitenschutz3.png

Bei der Anmeldung ist ein Fehler, kann dort keinen Benutzer eingeben ;)

https://sonoboomer.com/anmeldung.php

Das muss korrigiert werden !
Gruß Volker
Boomer
Mitglied (Level 7)
Mitglied (Level 7)
Beiträge: 68
Registriert: Mo 10. Jan 2022, 09:59

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Boomer »

Tommy Herrmann hat geschrieben: So 30. Jan 2022, 11:28 Wo sind denn die beiden Videos - bitte Link (URL) zur Seite.
Die beiden Videos sind hier: https://sonoboomer.com/ im 2. Block.
Beide aus Vimeo embedded. Unter dem linken Video steht ein weißer Balken, in Mobirise mit [JS_CODE_0].
Im Code Editor sieht der Bereich mit den beiden eingebetteten Videos so aus:
Weisser_Balken_html.jpg
Hast Du eine Idee ?
Volker hat geschrieben: So 30. Jan 2022, 11:42
Bei der Anmeldung ist ein Fehler, kann dort keinen Benutzer eingeben ;)

https://sonoboomer.com/anmeldung.php

Das muss korrigiert werden !
Das funktioniert bei mir jetzt. Und den Benutzer konnte ich auch freischalten.

Wieder mal herzlichen Dank für Eure Hilfe, Thomas
Benutzeravatar
Wolfgang Z
Moderator
Moderator
Beiträge: 241
Registriert: Di 8. Dez 2020, 18:13
Wohnort: 83334 Inzell

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Wolfgang Z »

Hallo Thomas,

ergänzend:
bei den Logos würde ich noch die Verlinkung zur Startseite einbauen; sonst könnte es sein, dass wenn man die Anmeldseite vorzeitig verlassen möchte, man irgendwie nicht zurück kommt.
Screenshot 2022-01-30.png

Sonstiges:
Weiterhin solltest du auf deiner Startseite im Footer dein Impressum gleich sichtbar machen - und nicht erst,
wenn man drauf klickt. Ebenso beim Datenschutz.
Gruß
Wolfgang Z
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 5743
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: MySQL-Webseitenschutz noch Fragen

Ungelesener Beitrag von Tommy Herrmann »

Moin Thomas,

Du das mit den 3 gleich hohen Kacheln (Cards) ist ein vielfacher Wunsch von Mobirise-Benutzern. Nicht alle Card-Blöcke haben das - man könnte also auch einfach einen anderen suchen. Mit anderen Worten die beiden anderen Kacheln haben weniger Inhalt und sind niedriger als die mittlere Kachel und zeigen daher unten die weiße Hintergrundfarbe.

Du könntest wahrscheinlich dem linken Video oben etwas mehr Text geben oder ein paar Leerzeilen rein machen, dann sollte das Video runter rutschen und somit der weiße Hintergrund der Card unter dem Video verschwinden.

Oder du entfernst aus der class="item-wrapper", diese sollte im "Code Editor" im rechten Bereich "CSS Editor" zu finden sein die Höhe von 100%

height: 100%;

... das würde dann so wie im Screenshot unten aussehen:



item-wrapper.JPG
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste