Sammlung eigener Klassen
Gehe zur Userverwaltung (aber auch als Basis für andere Listen: z.B. 'Musica')
Seite bearbeiten
Erste Schritte
Einführung in Klassen und Objekte Leerseite
Aktuelle PHP-Version: '7.4.33
Beispiel einer Klasse
Die Klassen-Variable wird mit public $klassenWert; angemeldet (evtl. mit einem Initialwert)
Innerhalb der Klasse wird die Klassen-Variable mit $this->klassenWert angesprochen. Ausserhalb $klasse->klassenWert.
<?php
// die Klasse 'rechnen' mit dem Argument (3) wird instanziert
$k = new rechnen(3);
// Die Klassen-Variable $klassenWert wird angezeigt ACHTUNG: Das ganze ist die Variable somit nur ein Dollar-Zeichen
echo "<b>... " . $k->klassenWert . " ...</b><br>";
// Die Funktion 'rechnen' mit dem Argument (3) wird aufgerufen
$k->rechnen(8);
// Die Klassen-Variable $klassenWert wird erneut angezeigt
echo "<b>... " . $k->klassenWert . " ...</b><br>";
// Klasse 'rechnen'
class rechnen
{
public $klassenWert = 55; // dieser wert 55 ist nur beim instanzieren gültig
// Die alte Form von Konstruktor (Funktionsname = Klassenname)
public function rechnen($m)
{
echo "<br>Ich bin der alte Konstruktor mein Start-Wert ist:" . $this->klassenWert . " argument: " . $m . "<br>";
$this->klassenWert *= $m;
}
// Die neue Form von Konstruktor (__construct) 'degradiert' einen evtl. alten Konstruktoe zu einfacher Funktion
public function __construct($m)
{
echo "<br>Ich bin der echte Konstruktor mein Start-Wert ist:" . $this->klassenWert . " argument: " .$m . "<br>";
$this->klassenWert *= $m;
}
}
?>
Ausgabe
Ich bin der echte Konstruktor mein Start-Wert ist:55 argument: 3
... 165 ...
Ich bin der alte Konstruktor mein Start-Wert ist:165 argument: 8
... 1320 ...
Userverwaltung
In dieser Klasse will ich alles vereinen um die Userverwaltung möglich zu machen.
- Hash-Code berrechnen: hashCode(Passwort-Klarschrift)
- Userliste durch Admin anlegen
- Login Maske
- Hash-Code/Passwort Vergleich für Login
- User durch den User selbst Anlegen
1. hashCode
Aufruf: hashCode(Passwort-Klarschrift)
Rückgabe: eine Zahl mit führenden 'H'
Test-Formular
Passwort
Codes für die Passworteingabe und Auswertung
<b>Passworteingabe: HTML</b>
<form action="klasse.php#Userverwaltung" method="post" >
<input type=password name="UserPsw" onfocus="value='';" />
<br>
<input type="Submit" value="Absenden" />
</form>
<form action="klasse.php#Userverwaltung" method="post" >
<input type=password name="UserPsw" onfocus="value='';" />
<input type="Submit" value="Absenden" />
</form>
Passwortbearbeitung: PHP
</php
// Passwort Übermittling
$psw = $_POST['UserPsw'] ;
// Klasse Instanzieren
$u = new user();
// hash-code erzeugen ...
echo $u->hashCode($psw);
// ... und auslesen
echo $u->hash;
?>
2. Userliste anlegen
Die Userliste muss manuell durch den Admin angelegt werden.
Ich versuche ein 'gefährliches' Format, damit einzelne Einträge gelöscht (bzw. inaktiviert) werden können und Änderungen eingetragen werden ohne das ganze File wiederholt abzuspeichern sondern mit Randomzugriff
Einträge mit fester Breite. Die Liste der Einträge pro User wird auf die gewählte Länge mit Platzhaltern aufgefüllt.
Erste Idee:
user;Status;hash;E-Mail;Recover-Mail;Name;Nachname;weitereInfos;§§§§§§Platzhalter§§§§§)°( (Trennzeichen der Datensätze braucht es eigentlich nicht. 300 Zeichen pro Datensatz müssten mehr als genügen)
Leitfaden fopen
<?php
$dsLang = 40;
$dn = "user.seo";
$dh = fopen($dn,"w+");
for($i=0;$i<=3;$i++)
{
$ds = "$i;";
fwrite($dh,str_pad($ds,$dsLang,"_"));
}
fseek($dh, 80);
fwrite($dh,str_pad("Seo;",$dsLang,"_"));
$dnLang = filesize($dn);
$dsZahl = $dnLang/$dsLang;
echo "<br>Die Datei $dn ist $dnLang Bytes lang, das sind $dsZahl Datensätze<br>";
for($i=0;$i<$dsZahl;$i++)
{
fseek($dh, $i * $dsLang);
$dsInhalt = fread($dh,$dsLang);
echo "<br>$dsInhalt";
$datensatz = explode(";",$dsInhalt);
echo "< Anzahl Elemente im Datensatz: " . count($datensatz);
if(strcmp($datensatz[0],"3") == 0) break;
}
$dsPos = $i * 40;
if($i < $dsZahl)
{
echo "<br>Der gesuchte Datensatz $dsInhalt liegt an Position: $dsPos";
}
else
{
echo "<br>Datensatz nicht gefunden";
}
fclose($dh);
?>
test PHP Ausgeblendet als Basis für die Klasse!
Der erste Test hat gut geklappt.
Nun müssen die Informationen definiert werden
UserAlias 15 ; hash-code 6 ; status 1 ; erstell-datum 8; datum status änderung 8 ; datum/zeit login 12; e-mail 30 ; recover e-mail 30 ; Name 20 ; Nachname 20 ; jahrgang 4 ; Erstelldatum ; Mutationsdatum ; LastloginDatumZeit = länge 180 dsLänge 200 genügt sicher....
Für den Admin muss ein GUI erstellt werden um die Informationen zu erfassen, lesen, bearbeiten und löschen
Eigentlich muss ich auch das E-Mail-Programm nutzen um die Adresse zu prüfen... das aber später.
Also Los:
Seite neu aufrufen
Klasse darstellen
$POST Daten: array(0) {
}
Alte Daten: array(11) {
[0]=>
string(0) ""
[1]=>
string(1) "A"
[2]=>
string(0) ""
[3]=>
string(0) ""
[4]=>
string(0) ""
[5]=>
string(0) ""
[6]=>
string(0) ""
[7]=>
string(0) ""
[8]=>
string(0) ""
[9]=>
string(0) ""
[10]=>
string(0) ""
}
trefferDarstellen Status
array alt[1]= A oder Globale Variable st=
Darstellung beendet
Seitenanfang