Dieses Beispiel verwendet die PHP UTF-8 Stringfunktionen. Für die im Formular
eingegebene Schülerliste, werden für jeden Schüler Datenbankeinträge vorgenommen.

UTF-8 ist eine Multibyte Zeichencode. Ein Zeichen kann also durch mehrere Byte
gespeichert werden. Dadurch lassen sich 1.112.064 Zeichen darstellen. UTF-8 ist heute Webstandard.

Die Tabelle wurde mit CHARACTER SET=utf8 COLLATE utf8_bin für UTF-8 passend erstellt.

Zum Layout wird hier bootstrap verwendet.



<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'/>
<title>Webadmin</title>

<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/tutorials/php/bootstrap/css/bootstrap.min.css">
    <script>
//Menü umschalten
function toggle(nummer)
{
   document.getElementById('m1').className='';
   document.getElementById('m2').className='';
   document.getElementById('m3').className='';
   document.getElementById('m4').className='';
   if(nummer==1)document.getElementById('m1').className='active';
   if(nummer==2)document.getElementById('m2').className='active';
   if(nummer==3)document.getElementById('m3').className='active';
   if(nummer==4)document.getElementById('m4').className='active'; 
}
</script>
   
 <style>
    ul{
        margin-bottom: 1em;
    }
   
 </style>  
</head><body>
<?php
 require_once('config.php');
 require_once('helper.php');
?>
<div id="container-fluid">
    <div class="row">
     <div class="col-md-1"></div>
    <div class="col-md-10"><h3><?php echo $Config['titel']; ?></h3>
 
 
<?php
 session_start();

//Objektinstanziierung
$webadm=new Webadminclass;
 
//Ablaufsteuerung
if(isset($_REQUEST['subject']))$sub=$_REQUEST['subject']; else $sub="";
switch($sub)
{
   case "":$webadm->login(); break;
   case "install":$webadm->install(); break;
   case "logcheck":$webadm->logcheck(); break;
   case "msq_newuser":$webadm->MySQLneuerUser(); break;
   
   
}
 
//Klassendeklaration
class Webadminclass
{
    private $userliste=array();
   
   public function Webadminclass()
   {
        if (isset($_SESSION['loggedin']) && $_SESSION['loggedin']==true) {$this->menue();}
   }
  
  
  

   // Klassenfunktionen

    public function UserEdit()
    {
        global $Config;

         echo "<script>toggle(4);</script>";
        $conn=$this->inidb();
       
    }
   
 
  
   public function menue()
   {  
     $s="\n<ul class='nav nav-tabs'>";
     if(file_exists("install.php"))
     $s.="<li id='m1' role='presentation'><a href='admin.php?subject=install'>Installation</a></li>";
     $s.="<li id='m2' role='presentation'><a href='admin.php?subject=liste'>Userliste</a></li>";
     $s.="<li id='m3' role='presentation'><a href='admin.php?subject=msq_newuser'>User anlegen</a></li>";
    # $s.="<li id='m4' role='presentation'><a href='admin.php?subject=delyear'>Jahrgang l&ouml;schen</a></li>";
     $s.="<li id='m4' role='presentation'><a href='admin.php?subject=edituser'>User editieren</a></li>";
     $s.="<li id='m4' role='presentation'><a href='admin.php?subject=logout'>Logout</a></li>";
     $s.="</ul><p></p>\n";
     echo $s;
   }
  
   public function check()
   {
        if( $_SESSION['loggedin'] == false)
        {
            exit("Error!");
        }
   }
  
   public function logcheck()
   {
        global $Config;
        if(isset($_REQUEST['username']))$un=$_REQUEST['username']; else $un="";
        if(isset($_REQUEST['pwd']))$pw=$_REQUEST['pwd']; else $pw="";
       
       
        if($un==$Config['mysqlAdmin'] && $pw==$Config['mysqlAdminPw'])
        {
            $_SESSION['loggedin'] = true;
            $_SESSION['admin'] = $_REQUEST['username'];
            $this->menue();
        }
        else
        {
            $_SESSION['loggedin'] = false;
            $s="<div class='panel panel-danger'><div class='panel-heading'>Warnung</div><div class='panel-body'>Falsche Benutzerdaten!</div></div>";
            $s.="<a href='admin.php' class='btn btn-primary' role='button'>Login</a>";
            echo $s;
        }
   }
  
   public function login()
   {
        $s="<form class='form-horizontal' method='POST' action='admin.php?subject=logcheck'>";
        $s.="<div class='form-group'><label class='control-label col-sm-2' for='username'>Benutzer:</label>";
        $s.="<div class='col-sm-4'><input type='text' class='form-control' name='username'>";
        $s.="</div></div> <div class='form-group'>";
        $s.="<label class='control-label col-sm-2' for='pwd'>Password:</label>";
        $s.="<div class='col-sm-4'><input type='password' class='form-control' name='pwd' placeholder='Enter password'>";
        $s.="</div></div>  <div class='form-group'>";
        $s.="<div class='col-sm-offset-2 col-sm-10'><button type='submit' class='btn btn-default'>Login</button>";
        $s.="</div></div></form>\n";
        echo $s;
   }

  
    //Umlaute umwandeln, wird für den FTP-Zugang benötigt.
    private function cv_input($str){
      $out = "";
      for ($i = 0; $i<strlen($str);$i++){
           $ch= ord($str{$i});
           switch($ch){
                case 195: $out .= "";break;    
                case 164: $out .= "ae"; break;
                case 188: $out .= "ue"; break;
                case 182: $out .= "oe"; break;
                case 132: $out .= "Ae"; break;
                case 156: $out .= "Ue"; break;
                case 150: $out .= "Oe"; break;
                case 159: $out .= "sz";break;//SZ
                default : $out .= chr($ch) ;
           }
      }
      return $out;
}

    //Neue User anlegen
    public function getUserList()
    {
        global $Config;
       
        $this->check();
        echo "<script>toggle(3);</script>";
        if($_REQUEST['liste']=="")exit("Fehlende Eingabe!");
        $zeilen=explode("\n",$_REQUEST['liste']);
       
        $jahr=$_REQUEST['jahr'];
        if($jahr=="")$jahr=date('Y');
       
        $h=array();
        foreach($zeilen as $z)
        {
            if($z!="" && $z!=$jahr)
            {
               
                $name=$z;               
                $z=$this->cv_input($z);
//Hier folgen die UTF-8 kompatiblen Stringfunktionen von PHP.               
                $z=mb_ereg_replace(" ","",$z);
                $z=mb_strtolower($z);
                $h=mb_split(",",$z);
                $login=$jahr.$h[0].mb_substr($h[1],0,1);
                #echo "L:<br>".$login;
                $pw=$this->makePasswort();
               
                array_push($this->userliste,new User($name,$login,$pw));
            }
        }
       
        $this->datenbankeintragen($this->userliste);
    }
   
  
    private function datenbankeintragen($liste)
    {
        ...
    }
   
   
    //Diese Funkion liefert ANSI-Code für den FTP-Zugang. 
    private function makePasswort()
    {
        $pool = "qwertzupasdfghkyxcvbnm";       
        $pool .= "23456789";       
        $pool .= "WERTZUPLKJHGFDSAYXCVBNM";
       
        srand ((double)microtime()*1000000);
        $pass_word="";
        for($index = 0; $index < 5; $index++)
        {       
            $pass_word .= substr($pool,(rand()%(strlen ($pool))), 1);       
        }
        return $pass_word;
    }
  
  
 
    public function MySQLneuerUser()
    {
        echo "<script>toggle(3);</script>";
       
        $s="\n<form method='POST' action='admin.php?subject=userliste'>";
        $s.="<div class='form-group'><label for='jahr'>Jahr</label>";
        $s.="<input type='text' class='form-control' name='jahr' value=".date('Y')."></div>";
        $s.="<div class='form-group'><label for='liste'>Benutzerliste: Nachname, Vorname</label>";
        $s.="<textarea class='form-control' rows='10' name='liste'></textarea>";
        $s.="</div><button type='submit' class='btn btn-default'>Speichern</button></form><p></p>\n";
        echo $s;       
    }
   
   
 


   
   // ************ MySQL-Funktionen *************
   private function inidb()
   {
        global $Config;
       
       $conn = mysqli_connect("localhost", $Config['mysqlAdmin'], $Config['mysqlAdminPw'], $Config['webadminDb']);
       if (!$conn) {
           die("Connection failed: " . mysqli_connect_error());
       }
       return $conn;
   }   
      
   public function install()
   {
        global $Config;
        echo "<script>toggle(1)</script>";

       //Verbindung zum MySQL-Server herstellen   
       $conn = mysqli_connect("localhost", $Config['mysqlAdmin'], $Config['mysqlAdminPw']);
       if (!$conn) {
           die("Connection failed: " . mysqli_connect_error());
       }
   
       //Datenbank erstellen
       if (mysqli_query($conn, "CREATE DATABASE ".$Config['webadminDb'])." CHARACTER SET=utf8 COLLATE utf8_bin")
       {
           echo "Database created successfully<br>";
       } else {
           echo "<br>Error creating database: " . mysqli_error($conn);
       }
       mysqli_close($conn);
   
       $conn = mysqli_connect("localhost",$Config['mysqlAdmin'], $Config['mysqlAdminPw'], $Config['webadminDb']);
       if (!$conn) {
           die("Connection failed: " . mysqli_connect_error());
       }
   
      
       //Tabelle erstellen
       $sql="CREATE TABLE user (nummer INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,";
       $sql.="name TEXT, datum TEXT, loginname TEXT, cms1 TEXT, cms2 TEXT, cms3 TEXT, cms4 TEXT,";
       $sql.="cms1show BOOLEAN,cms2show BOOLEAN,cms3show BOOLEAN,cms4show BOOLEAN, anzahldb INT, jahr INT, password TEXT, ftp BOOLEAN, email TEXT)  ENGINE = InnoDB CHARACTER SET=utf8 COLLATE utf8_bin";
   
       if (mysqli_query($conn, $sql)) {
       echo "Table user created successfully";
       } else {
           echo "<br>Error creating table: " . mysqli_error($conn);
       }
   
   
       echo "<p>MySQL-Installation beendet!</p>";
       echo "<div class='alert alert-warning' role='alert'><a href='admin.php?subject=delinstall'>Bitte install.php l&ouml;schen!</a></div>";
       mysqli_close($conn);
   }
  
   public function delinstall()
   {
        global $Config;
        echo "<script>toggle(1)</script>";
       
        rename("install.php","oldinstall.php");
        $s="<div class='panel panel-info'><div class='panel-heading'>Info</div><div class='panel-body'>Installation abgeschlossen!</div></div>";
        echo $s;
   }
  
} //Ende der Klasse



//Hilfsklasse für die dynamische Datenverwaltung
class User
{
    public $name,$login,$password;
   
    public function User($name,$login,$password)
    {
        $this->name=$name;
        $this->login=$login;
        $this->password=$password;
    }
}

?>
    </div>
    </div>
    <div class="col-md-1"></div>

</div>

    </body>
</html>