PHP Codeschnipsel

PHP Codeschnipsel| Datum: 28.10.2009 - 22:10 | Author: PCFreund

Hallo ... Ich stelle hier ein paar codeschnipsel rein ...
Es können auch von euch ein paar codeschnipsel verlinkt oder hier reingestellt werden ...

[size=200:1x58ygo0][highlight=#000000:1x58ygo0][color=#FF0000:1x58ygo0]ACHTUNG !!![/color:1x58ygo0][/highlight:1x58ygo0][/size:1x58ygo0]
Diese Codeschnipsel sind 1:1 Kopien von http://www.tutorials.de/forum/php-codeschnipsel/
[size=200:1x58ygo0][highlight=#000000:1x58ygo0][color=#FF0000:1x58ygo0]ACHTUNG !!![/color:1x58ygo0][/highlight:1x58ygo0][/size:1x58ygo0]
[hr:1x58ygo0]

[hr:1x58ygo0]
Daten aus der phpinfo() in Array laden

Code


<?php
class PHPInfo {

/* Verarbeitet die Informationen aus phpinfo()
*/
static private function getData() {
// PHP-Info in Variable speichern
ob_start();
phpinfo();
$phpinfo = ob_get_clean();

// Tabellenzeilen und Ueberschriften laden
preg_match_all('/<tr(.*)>(.*)<\/tr>|<h2>(.*)<\/h2>/isU', $phpinfo, $array);

// Ueberschriften uebernehmen
foreach($array[2] as $key => $value) {
// Bei einem leeren Element die entsprechende Ueberschrift einfuegen
if(empty($value)) {
// Loescht uebrige HTML-Tags und formatiert die Zeichen
$array[2][$key] = utf8_encode(html_entity_decode(preg_replace('/<(.*)>|<\/(.*)>/isU', '', $array[3][$key])));
}
else {
unset($array[2][$key]);
// Extrahiert die Tabellenzeilen und formatiert die Zeichen
$value = utf8_encode(preg_replace('/&#([0-9a-f]+);/ei', 'chr(hexdec("\\1")-18);', html_entity_decode($value)));
preg_match_all('/<td(.*)>(.*)<\/td>/isU', $value, $temp);

// Alles, was keine vollstaendige Tabellenzeile ist, entfernen
$i = count($temp[2]);
if($i == 2) {
// Loescht uebrige HTML-Tags
$array[2][$key][0] = preg_replace('/<(.*)>|<\/(.*)>/isU', '', $temp[2][0]);
$array[2][$key][1] = preg_replace('/<(.*)>|<\/(.*)>/isU', '', $temp[2][1]);
}
elseif($i == 3) {
// Loescht uebrige HTML-Tags
$array[2][$key][0] = preg_replace('/<(.*)>|<\/(.*)>/isU', '', $temp[2][0]);
$local = preg_replace('/<(.*)>|<\/(.*)>/isU', '', $temp[2][1]);
$master = preg_replace('/<(.*)>|<\/(.*)>/isU', '', $temp[2][2]);

$array[2][$key][1] = array('local' => $local, 'master' => $master);
}
}
}

// Sortiert das Array nach den Schluesseln
ksort($array[2]);

// Schluessel neu vergeben
$array = array_values($array[2]);

$last = 'basic';

// Unterkonfigurationsliste => Schluessel => Wert
foreach($array as $key => $value) {

if(count($value) == 2) {
// Werte einordnen
$value[0] = str_replace(' ', '_', trim(strtolower($value[0])));
$global['conf'][$last][$value[0]] = $value[1];
}
else {
// Neue Unterkonfigurationsliste auswaehlen
$last = str_replace(' ', '_', trim(strtolower($value)));
}
}

// Laedt die Unterkonfigurationslisten
$global['sub'] = array_keys($global['conf']);

// Kennzeichnet $_PHPINFO als global verfuegbar
global $_PHPINFO;
$_PHPINFO = $global;
}

/* Gibt alle Unterkonfigurationslisten aus oder
* Gibt die Informationen aus einer Unterkonfigurationsliste aus:
* @param (string) $conf: Name der Unterkonfigurationsliste
*/
static public function getConf($conf = NULL) {
// Wenn noch keine Informationen der PHPInfo vorhanden sind => erstellen
if(!isset($GLOBALS['_PHPINFO'])) {
self::getData();
}

// Eine Unterkonfigurationsliste
if(!empty($conf) && is_string($conf)) {
// Ausgabe der Informationen aus dieser Unterkonfigurationsliste
return isset($GLOBALS['_PHPINFO']['conf'][$conf]) ? $GLOBALS['_PHPINFO']['conf'][$conf] : FALSE;
}
// Alle Unterkonfigurationslisten
else {
// Ausgabe der Unterkonfigurationslisten
return isset($GLOBALS['_PHPINFO']) ? $GLOBALS['_PHPINFO']['sub'] : NULL;
}
}

/* Gibt alle Informationen aus allen Unterkonfigurationslisten aus
*/
static public function getAll() {
// Wenn noch keine Informationen der PHPInfo vorhanden sind => erstellen
if(!isset($GLOBALS['_PHPINFO'])) {
self::getData();
}

// Ausgabe der Unterkonfigurationslisten
return isset($GLOBALS['_PHPINFO']) ? $GLOBALS['_PHPINFO'] : NULL;
}
}
?>



[hr:1x58ygo0]
Gültigkeit des Personalausweises prüfen

Das folgende Skript ist eine Klasse und besteht aus mehreren privaten Methoden der Klasse (damit es übersichtlicher und verständlicher ist). Um den Personalausweis nun zu prüfen muss man bloß die Methode check() aufrufen.

Code


<?php
class IdentyCard
{
// Prüft die Eingabewerte des Ausweises
public static function check($part1, $part2, $part3, $part4, &$data = NULL)
{
$c1 = self::checkPart1($part1, $p1);
$c2 = self::checkPart2($part2, $p2);
$c3 = self::checkPart3($part3, $p3);
$c4 = self::checkPart4($part4, $p1['sum'], $p2['sum'], $p3['sum'], $p4);

$bkz = $p1['bkz'];
$birthday = $p2['birthday'];
$expirydate = $p3['expirydate'];

// Gültigkeit der einzelnen Werte ausgeben
$data['validity']['part1'] = $c1 ? 1 : 0; // Erster Teil gültig?
$data['validity']['part2'] = $c2 ? 1 : 0; // Zweiter Teil gültig?
$data['validity']['part3'] = $c3 ? 1 : 0; // Dritter Teil gültig?
$data['validity']['icard'] = $c4 ? 1 : 0; // Gesamter Ausweis gültig (syntaktisch)?

// Werte der einzelnen Bereiche ausgeben
$data['values']['part1'] = $p1['value']; // Eingabewert des ersten Teils
$data['values']['part2'] = $p2['value']; // Eingabewert des ersten Teils
$data['values']['part3'] = $p3['value']; // Eingabewert des ersten Teils
$data['values']['part4'] = $p4['value']; // Eingabewert des ersten Teils

// Wenn der Ausweis syntaktisch gültig ist => erweiterte Informationen ausgeben
if($c4)
{
$data['validity']['still'] = self::checkExpiryDate($expirydate) ? 1 : 0; // Ausweis noch gültig?
$data['values']['birthday'] = $birthday; // Geburtsdatum ausgeben
$data['values']['expirydate'] = $expirydate; // Ablaufdatum ausgeben
$data['values']['age'] = self::getAge($birthday); // Alter ausgeben

// Ausweisprüfung war erfolgreich
return TRUE;
}
else
{
// Ausweisprüfung ist fehlgeschlagen
return FALSE;
}
}

// Prüft den ersten Teil des Ausweises
private function checkPart1($value, &$data = NULL)
{
$value = trim($value);
while(TRUE)
{
// Enthält der String genau 11 Zeichen?
if(strlen($value) != 11)
{
return FALSE;
break;
}

// String in Array umwandeln (Zeichen für Zeichen)
$temp = str_split($value, 1);

// Behördenkennzahl, Ausweisnummer + zugehörige Prüfnummer prüfen (Ist Zahlenwert?)
for($i = 0; $i < 10; $i++)
{
if(!is_numeric($temp[$i]))
{
return FALSE;
break;
}
}

// Nationalität (Ist kein Zahlenwert und ist Zeichenkette?)
if(is_numeric($temp[10]) || !is_string($temp[10]))
{
return FALSE;
break;
}

// Prüfziffer berechnen (eigene)
$check = ($temp[0] * 7);
$check += ($temp[1] * 3);
$check += ($temp[2] * 1);
$check += ($temp[3] * 7);
$check += ($temp[4] * 3);
$check += ($temp[5] * 1);
$check += ($temp[6] * 7);
$check += ($temp[7] * 3);
$check += ($temp[8] * 1);

// Prüfziffer korrekt?
if(($check % 10) != $temp[9])
{
return FALSE;
break;
}

// Behördenkennzahl abspeichern
$data['bkz'] = $temp[0].$temp[1].$temp[2].$temp[3];

// Prüfziffer berechnen (gesamt)
$sum = ($temp[0] * 7);
$sum += ($temp[1] * 3);
$sum += ($temp[2] * 1);
$sum += ($temp[3] * 7);
$sum += ($temp[4] * 3);
$sum += ($temp[5] * 1);
$sum += ($temp[6] * 7);
$sum += ($temp[7] * 3);
$sum += ($temp[8] * 1);
$sum += (($check % 10) * 7);

break;
}

$data['value'] = $value;
$data['sum'] = $sum;
return TRUE;
}

// Prüft den zweiten Teil des Ausweises
private function checkPart2($value, &$data = NULL)
{
$value = trim($value);
while(TRUE)
{
// Enthält der String genau 7 Zeichen?
if(strlen($value) != 7)
{
return FALSE;
break;
}

// String in Array umwandeln (Zeichen für Zeichen)
$temp = str_split($value, 1);

// Geburtsdatum + zugehörige Prüfnummer prüfen (Ist Zahlenwert?)
for($i = 0; $i < 7; $i++)
{
if(!is_numeric($temp[$i]))
{
return FALSE;
break;
}
}

// Datum prüfen
// Jahr
$y = $temp[0].$temp[1];

// Monat
$m = $temp[2].$temp[3];
if($m > 12 || $m < 1)
{
return FALSE;
break;
}

// Tag
$d = $temp[4].$temp[5];
if($d > 31 || $d < 1)
{
return FALSE;
break;
}

// Zeitstempel für das angegebene Datum erstellen
$timestamp = strtotime($d.".".$m.".".$y);

// Wenn der angegeben Monat mehr Tage als gültig hat
if(date("t", $timestamp) < $d)
{
return FALSE;
break;
}

$data['birthday'] = $d.".".$m.".".$y;

// Prüfziffer berechnen (eigene)
$check = ($temp[0] * 7);
$check += ($temp[1] * 3);
$check += ($temp[2] * 1);
$check += ($temp[3] * 7);
$check += ($temp[4] * 3);
$check += ($temp[5] * 1);

// Prüfziffer korrekt?
if(($check % 10) != $temp[6])
{
return FALSE;
break;
}

// Prüfziffer berechnen (gesamt)
$sum = ($temp[0] * 3);
$sum += ($temp[1] * 1);
$sum += ($temp[2] * 7);
$sum += ($temp[3] * 3);
$sum += ($temp[4] * 1);
$sum += ($temp[5] * 7);
$sum += (($check % 10) * 3);

break;
}

$data['value'] = $value;
$data['sum'] = $sum;
return TRUE;
}

// Prüft den dritten Teil des Ausweises
private function checkPart3($value, &$data = NULL)
{
$value = trim($value);
while(TRUE)
{
// Enthält der String genau 7 Zeichen?
if(strlen($value) != 7)
{
return FALSE;
break;
}

// String in ein Array umwandeln (Zeichen für Zeichen)
$temp = str_split($value, 1);

// Ablaufdatum + zugehörige Prüfnummer prüfen (Ist Zahlenwert?)
for($i = 0; $i < 7; $i++)
{
if(!is_numeric($temp[$i]))
{
return FALSE;
break;
}
}

// Datum prüfen
// Jahr
$y = $temp[0].$temp[1];

// Monat
$m = $temp[2].$temp[3];
if($m > 12 || $m < 1)
{
return FALSE;
break;
}

// Tag
$d = $temp[4].$temp[5];
if($d > 31 || $d < 1)
{
return FALSE;
break;
}

// Zeitstempel für das angegebene Datum erstellen
$timestamp = strtotime($d.".".$m.".".$y);

// Wenn der angegeben Monat mehr Tage als gültig hat
if(date("t", $timestamp) < $d)
{
return FALSE;
break;
}

$data['expirydate'] = $d.".".$m.".".$y;

// Prüfziffer berechnen (eigene)
$check = ($temp[0] * 7);
$check += ($temp[1] * 3);
$check += ($temp[2] * 1);
$check += ($temp[3] * 7);
$check += ($temp[4] * 3);
$check += ($temp[5] * 1);

// Prüfziffer korrekt?
if(($check % 10) != $temp[6])
{
return FALSE;
break;
}

// Prüfziffer berechnen (gesamt)
$sum = ($temp[0] * 1);
$sum += ($temp[1] * 7);
$sum += ($temp[2] * 3);
$sum += ($temp[3] * 1);
$sum += ($temp[4] * 7);
$sum += ($temp[5] * 3);
$sum += (($check % 10) * 1);

break;
}

$data['value'] = $value;
$data['sum'] = $sum;
return TRUE;
}

// Prüft den vierten Teil des Ausweises
private function checkPart4($value, $p1, $p2, $p3, &$data = NULL)
{
$value = trim($value);
while(TRUE)
{
// Enthält der String genau 1 Zeichen?
if(strlen($value) != 1)
{
return FALSE;
break;
}

// Prüfnummer prüfen
if(!is_numeric($value))
{
return FALSE;
break;
}

// Erste Zwischensumme nicht vorhanden
if(!isset($p1))
{
return FALSE;
break;
}

// Zweite Zwischensumme nicht vorhanden
if(!isset($p2))
{
return FALSE;
break;
}

// Dritte Zwischensumme nicht vorhanden
if(!isset($p3))
{
return FALSE;
break;
}

// Zwischensummen addieren
$check = $p1 + $p2 + $p3;

// Prüfziffer korrekt?
if(($check % 10) != $value)
{
return FALSE;
break;
}

break;
}

$data['value'] = $value;
return TRUE;
}

// Prüfen, ob der Ausweis noch gültig ist
private function checkExpiryDate($data)
{
// Ist der Ausweis noch gültig?
if(time() >= strtotime($data))
{
// Ausweis ist nicht mehr gültig
return FALSE;
}
else
{
// Ausweis ist noch gültig
return TRUE;
}
}

// aktuelles Alter ausgeben
private function getAge($data)
{
// Person hatte dieses Jahr noch nicht Geburtstag
if(date("z", time()) < date("z", strtotime($data)))
{
$age = (date("Y", time()) - date("Y", strtotime($data)) - 1);
}
// Person hatte dieses Jahr schon Geburtstag (oder hat heute Geburtstag)
else
{
$age = (date("Y", time()) - date("Y", strtotime($data)));
}

// Alter ausgeben
return $age;
}
}
?>



So sieht der maschinenlesbare Bereich aus..

..den ihr hier eingeben müsst:

Code


<?php
IdentyCard::check('1234567890D', '1234567', '1234567', '1', $data);
print_r($data); // In $data sind die Informationen aus dem Ausweis enthalten
?>



[hr:1x58ygo0]


[size=200:1x58ygo0][highlight=#000000:1x58ygo0][color=#FF0000:1x58ygo0]ACHTUNG !!![/color:1x58ygo0][/highlight:1x58ygo0][/size:1x58ygo0]
Diese Codeschnipsel sind 1:1 Kopien von http://www.tutorials.de/forum/php-codeschnipsel/
[size=200:1x58ygo0][highlight=#000000:1x58ygo0][color=#FF0000:1x58ygo0]ACHTUNG !!![/color:1x58ygo0][/highlight:1x58ygo0][/size:1x58ygo0]

Re: Gute PHP Tutorials !| Datum: 29.10.2009 - 13:10 | Author: SirZimt

Mieses tut. das ist ja nicht mal eins!

Re: Gute PHP Tutorials !| Datum: 29.10.2009 - 17:10 | Author: Fazitas

Sollte wohl eher umbenannt werden in "PHP-Codeschnipsel",
weil ein Tutorial ist das wirklich nicht ^^

Re: PHP Codeschnipsel| Datum: 30.10.2009 - 13:10 | Author: Haruspex

Wenn man das jetzt noch ausm Tutorialbereich entsorgen würde...

Re: PHP Codeschnipsel| Datum: 30.10.2009 - 13:10 | Author: Der_Admin

ich finde auch, dass man eher nur selbstgemachtes als Tutorial machen sollte und deshalb sperre ich hier erstmal.
so ich SCHIEB mal rüber und entsperre.