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.
  1. Hash-Code berrechnen: hashCode(Passwort-Klarschrift)
  2. Userliste durch Admin anlegen
  3. Login Maske
  4. Hash-Code/Passwort Vergleich für Login
  5. 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