InternInhaltsverzeichnisGlossarBausteineLinklisteTutorialsKommentare

Thema: MySQL-Webseitenschutz Artikel anzeigen

Werner schrieb am Dienstag, den 16 Januar 2018 #11
Upps, da habe ich was falsches erzählt 🤭

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// Überprüfen ob Anzahl Datensatz bei 0
$stmt $db->query("SELECT `id_test` FROM `wm_test`");

// Datensatz weniger als 1, dann Eintragen
if ($stmt->fetch() < 1) {
 echo 
'0';
}
// Anonst Datensatz Updaten
else {
 echo 
'1';
}
?>

In deinem Script fehlt noch: $insert->execute();
Peter schrieb am Dienstag, den 16 Januar 2018 #12
Danke Werner, jetzt funktioniert tadellos.

Ich habe jetzt auch lange herumgedoktert, bis mir auffiel, dass ich das echo bei Update-Sequenz vergessen hab.

Danke nochmals und beste Grüße,
Peter
Peter schrieb am Mittwoch, den 17 Januar 2018 #13
Thema:
Wenn Tabelle leer, dann Datensatz eintragen - ansonsten den Datensatz überschreiben.

So, bevor ich mich jetzt noch zig mal verschreibe, so wie in den letzten Beiträgen, gebe ich gleich ein ganzes Beispiel hier herein.

Es ist ganz simpel gehalten - nur mit Familien- und Vornamen.

Diesen Beitrag vollständig anzeigen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154

<!DOCTYPE html>
<html lang="de-at">
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<style>
* {margin:0;padding:0;}
p {margin:35px 0;}
html, body, div, h1, ul {border:0;outline:0;vertical-align:baseline;}
section {display:block;}
body {background:#fff;font:108% Arial, Helvetica, sans-serif;color:#000;text-align:left;font-weight:normal;}
#k-main {width:90%;max-width:1200px;margin:80px auto 45px auto;padding:0;line-height:1.2em;}
#k-main h1 {font-size:1.8em;font-weight:600;color:#600;text-align:center;padding:0;line-height:1.2em;}
.k-blatt {font-size:90%;color:#666;text-align:center;margin:25px 0;}
.k-cont {background:#f9f9f9;margin:25px 0;padding:5px 35px;border:#ccc 1px solid;}
.k-cont ul {list-style-type:none;margin:15px 0;line-height:1.2em;}
.k-continner {width:46%;float:left;padding:2%;}
.lab1 {width:95%;padding:10px;margin:10px 0;border:#ccc 1px solid;}
.lab2 {width:40px;text-align:center;padding:10px;margin:10px 0;border:#ccc 1px solid;}
.lab3 {background:#426300;color:#fff;font-size:90%;padding:15px 25px;margin-top:25px;border:none;}
.lab3:hover {background:#666;cursor:pointer;}
span.pflichtfeld {font-size:80%;color:#800;}
span.hilfetext {font-size:80%;color:#360;}
.k-ok {background:#360;color:#fff;padding:15px;}
.k-ko {background:#800;color:#fff;padding:15px;}
.clearfix:before,.clearfix:after {content: " ";display:table;}
.clearfix:after {clear:both;}
</style>
<body>
<section id="k-main">
<?php
if(!isset($_SESSION['user_id'])) {
 die(
'<div class="k-blatt">Bitte zuerst <a title="Einloggen in den Admin- und Verwaltungsbereich" href="./">Einloggen</a></div>');
}
?>
<h1>Wenn Tabelle leer, dann Datensatz eintragen - ansonsten den Datensatz überschreiben.</h1>
<div class="k-blatt"><p>Bitte alle mit einem Stern markierten Felder ausfüllen.</p></div>
<?php
// Formular Eingaben
$p_nachname = isset($_POST["p_nachname"]) ? trim($_POST["p_nachname"]) : ""// Nachname
$p_vorname = isset($_POST["p_vorname"]) ? trim($_POST["p_vorname"]) : ""// Vorname

// Benutzereingaben überprüfen
$error = ["p_nachname"=>"""p_vorname"=>"""sicherheit"=>""];
if (isset(
$_POST["submit"])) {
 
$error["p_nachname"] = strlen($_POST["p_nachname"]) < " Bitte füllen Sie dieses Feld aus (min. 3 Zeichen)!" "";
 
$error["p_vorname"] = strlen($_POST["p_vorname"]) < " Bitte füllen Sie dieses Feld aus (min. 3 Zeichen)!" "";

 
$error["sicherheit"] = (md5($_POST["zip"]) != $_POST["zip2"]) ? "Die Rechenaufgabe ist leider falsch!" "";
}

// Sicherheitsabfrage
$array = [1=>"eins""zwei""drei""vier""fünf""sechs""sieben""acht""neun""zehn""elf""zwölf""dreizehn""vierzehn""fünfzehn""sechzehn""siebzen""achtzehn"];
$Z1 mt_rand(19);
$Z2 mt_rand(19);
$spam " + " $Z2 " = " $array[($Z1 $Z2)];
$schutz md5($Z1);
?>
<div class="k-cont clearfix">
<form action="test.php" autocomplete="off" method="post">
<div class="k-continner">
<br>
<ul>
<li><label>Nachname:
<span class='pflichtfeld'>* <?=$error['p_nachname']?></span><br>
  <input type="text" name="p_nachname" value="<?=$p_nachname?>" class="lab1" required="required">
 </label></li>
<li><label>Vorname:
<span class='pflichtfeld'>* <?=$error['p_vorname']?></span><br>
  <input type="text" name="p_vorname" value="<?=$p_vorname?>" class="lab1" required="required">
 </label></li>
</div>
<div class="k-continner">
<br>
<ul>
<li><label><span class="hilfetext">Sicherheitsabfrage: Bitte lösen Sie die Rechenaufgabe.</span>
 <span class="pflichtfeld">*  <?=$error["sicherheit"]?></span><br>
 <input type="text" name="zip" class="lab2" required="required" autocomplete="off"><em><?=$spam?></em>
</label>
<input type="hidden" name="zip2" value="<?=$schutz?>"></li>
<li><input type="submit" name="submit" class="lab3" value="Daten eintragen"></li>
</ul>
</div>
</form>
</div>
<?php
// Verbindung Datenbank
require_once "incl/connect.php";

// Formular abgesendet
if (isset($_POST["submit"])) {

    
//Überprüfen Fehler
    
if (implode(""$error) == "") {

        
// Überprüfen ob Anzahl Datensatz bei 0
        
$stmt $db->query("SELECT `id_test` FROM `wm_test`");

            
// Datensatz weniger als 1, dann Eintragen
            
if ($stmt->fetch() < 1) {
            
            
$insert $db->prepare("INSERT INTO `wm_test`
                                    SET
                                    `p_nachname` = :p_nachname, 
                                    `p_vorname` = :p_vorname
                                    ");
  
            
$insert->bindValue(":p_nachname"$p_nachname);
            
$insert->bindValue(":p_vorname"$p_vorname);
            }

            else {

            
$insert $db->prepare("UPDATE `wm_test`
                                    SET
                                    `p_nachname` = :p_nachname, 
                                    `p_vorname` = :p_vorname    
                                    "); 

            
$insert->bindValue(':p_nachname'$_POST["p_nachname"]);              
            
$insert->bindValue(':p_vorname'$_POST["p_vorname"]); 
            }

            
//Führt die Einträge aus
            
if ($insert->execute()) {
            echo 
"<p class='k-ok'>Die Daten wurden eingetragen.</p>";
            }
            else {
            echo 
"<p class='k-ko'>Fehler beim Eintragen der Daten!";
            }
    }
}

// Ausgabe Datensatz
$select $db->query("SELECT `p_nachname`, `p_vorname`
                    FROM `wm_test`"); 

$rows $select->fetchAll(PDO::FETCH_OBJ);

foreach (
$rows as $ausgabe) { 
echo 
'<div class="k-cont">';
echo 
'<ul>';
echo 
'<li><b>Familienname:</b> ' $ausgabe->p_nachname '</li>';
echo 
'<li><b>Vorname:</b> ' $ausgabe->p_vorname '</li>';
echo 
'</ul>';
echo 
'</div>';

?>
</section>
</body>
</html>

Vielleicht kann es der eine oder andere brauchen.

Beste Grüße aus dem tief verschneiten Schladming,
Peter
schokocrossie schrieb am Montag, den 19 Februar 2018 #14
Hallo, Werner Zenk.
Ich habe mir dieses aktualisierte mysql_webseitenschutz angeschaut und prompt kommen Fragen auf.
die .zip enthält ein Verzeichnis PHPMailer-master/
In den Kommentaren zu PHP Mailer wird aber ausdrücklich darauf hingewiesen, nur PHPMailer-5.2-stable zu verwenden.
Frage 1: was mache ich nun?
Frage 2: ist PHPMailer-master nur zum testen dabei und hat es mit PHPMailer-5.2-stable garnix zu tun?
Frage 3: wie bekomme ich das ganze aktiviert (ich verwende Xampp 5.6.31) ?
Frage 5: ich finde im Verzeichnis benutzer/ eine datei = mike.php ?? ömmm .. hab ich einen neuen verehrer und weiss noch nix davon? 😀

Danke schon mal in Vorraus😘
Werner schrieb am Dienstag, den 20 Februar 2018 #15
Lade dir die aktuelle Version auf Github herunter, hier findest du den Link und Infos dazu » werner-zenk.de/tipps/phpmailer.php wie der PHPMailer eingebunden wird.
Normalerweise brauchst du nur das Verzeichnis von "PHPMailer-5.2-stable" in "PHPMailer-master" umzubenennen.

Zu Frage 3: Ich habe selbst kein XAMPP mehr, In den Kommentaren auf dieser Seite (Kommentar: #9) steht aber wie es gemacht wird.

Zu Frage 5: "mike.php" ist nur eine Demo-Datei, diese demonstriert wie eine Seite nur für diesen Benutzer nach Anmeldung angezeigt wird.
Ezi schrieb am Mittwoch, den 22 August 2018 #16
Hallo Werner,
eine tolle Sache deinem „MySQL-Webseitenschutz”
Ich habe dazu eine (blöde?) Frage:
Ist es möglich, dass sich die Benutzer auch mit einem PUNKT oder mit dem MINUSZEICHEN anmelden können wie z. B. Müller-Maier oder G.
Danke schon mal!
Grüß Ezi
Werner schrieb am Sonntag, den 26 August 2018 #17
Hallo,
ändere in der Datei register.php folgenden PHP-Code (ganze Zeile!):

1$fehler["benutzername"] = $benutzername != preg_replace("/[^a-zäöüß 0-9]/i", "", trim($benutzername)) ? "<br>Der Benutzername darf nur Buchstaben und Ziffern enthalten!" : $fehler["benutzername"];

In:
1$fehler["benutzername"] = $benutzername != preg_replace("/[^a-zäö.\-üß 0-9]/i", "", trim($benutzername)) ? "<br>Der Benutzername darf nur Buchstaben und Ziffern enthalten!" : $fehler["benutzername"];
Kurt schrieb am Mittwoch, den 8 Mai 2019 #18
Hallo Werner,
vielleicht kannst du mir ja helfen.

Ich benötige dringend eine Mobirise-Website mit sicherem Seitenzugang.
Leider hat dein Script zu wenig Formularfelder im Registrierungsbereich.
Könntest du mir bitte helfen die Feldanzahl zu erhöhen und derart zu gestalten, dass diese in PHP übernommen werden?
Diese sollten ca. so aussehen: haendler.premiumstone.eu/h[…]eldung.php

Bei NOF hat immer alles super geklappt - ich bin jetzt aber auf Mobirise umgestiegen und möchte eine entsprechenden gleichartigen Zugang erstellen.

Zur Probe habe ich dein Script bereits in Mobirise installiert - funktioniert wunderbar - Danke - nur benötige ich eben die oben genannten Felder.
🙂
Danke für deine Rückmeldung!

Liebe Grüße aus Graz/Steiermark

Kurt
Werner schrieb am Sonntag, den 12 Mai 2019 #19
Hallo Kurt,
in meiner E-Mail sende ich dir den „Webseitenschutz“ (Anlage) mit weiteren Formularfeldern zu.

Es muss eine neue Datenbanktabelle erstellt werden außerdem müssen sämtliche Scripte ersetzt werden.

Ich habe die Funktionen nur Lokal auf meinem PC getestet; Voraussetzung ist eine aktuelle PHP-Version 7.3 oder höher.
Joke ✶✶✶✶✶ schrieb am Samstag, den 15 Juni 2019 #20
Hallo Werner!
Ich habe schon einige Scripts von dir auf meiner HP am laufen! Nun möchte ich gerne auch den PHP-Webseitenschutz einbauen, aber leider muss ich wegen der anderen Scripts auf PHP 5.6
Für den Webseitenschutz brauche ich ja 7.3. Ich kann es zwar auch auf 7.3 stellen, aber dann laufen die anderen Scripts nicht mehr!
Gibt es eine Lösung das ich alle deine Scripts am laufen halte?