UTF-8
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ö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ö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>