Archiv | PHP Snippets RSS für diesen Bereich

FinTS und HBCI mit PHP als Klasse oder Funktion

Mal eine kleine Info an alle Leser,

derzeit plane und entwickle ich eine FinTS und HBCI Schnittstelle als PHP-Klasse. Die Fortschritte sind schon sehr gut, folgende Möglichkeiten sind bereits implementiert und können auch genutzt werden:

  • LogIn in den Online Banking Zugang bei der Bank
  • Sessions Speicherung zum sicheren arbeiten nach dem LogIn
  • Auslesen der Kontoinformationen (Kontostände & Kreditlinie)
  • Auslesen der Kontoumsätze
  • erweitertes auslesen der Umsätze (bis zu 1 Jahr)

Bevor ich meine Arbeit veröffentliche hätte ich gern ein Feedback von euch, was weiter noch benötigt wird.

Ebenfalls suche ich auf diesem Weg einige BETA-Tester, welche die Klasse ausprobieren um ein besseres BUG-Tracking zu erreichen, da die Banken doch unterschiede innerhalb der Standarts aufweisen.

Also, daher nehmt bitte an der Umfrage teil und kontaktiert mich bei interesse als BETA-Tester oder für die mit Entwicklung.

Grüße

phpWebFox

 

– UPDATE 25.05.2014 –

Nach langer Zeit melde ich mich mal wieder zurück und bedanke mich schonmal für die zahlreichen Interessenten an dem Projekt. Der Stand ist wie folgt:

HBCI 2.1 – funktioniert Grundlegend
HBCI 3 / FINTS 3.0 – funktioniert noch nicht, jedoch entwickelt spacejumper schon fleißig.

Ich werde im laufe der nächsten Woche auf jeden einzelnen Interessenten nochmals zurück kommen um einen „Entwicklungsplan“ sowie
eine Aufgabenverteilung zu erstellen.

 

Grüße

phpWebFox

Bilder skalieren und Proportionen behalten mit PHP – image_resample()

Heute möchte ich euch eine kleine Funktion vorstellen, welche ich bereits seit Jahren nutze. Die Funktion taufte ich image_resample().

Mit image_resample seit Ihr in der Lage ein Bild von beliebigen Maßen ohne Porportionsverluste in neue Maße zu skalieren. Dies ist äußerst hilfreich wenn man z.B. Thumbnails von unterschiedlich großen Grafiken erstellen muss. Die Grfik wir immer im neuen Maß zentriert, egal ob image_resample die Grafk hoch oder runter skalieren muss.

Es folgt die Funktion:

<?

function image_resample($im, $nw, $nh, $bg_type = "color", $bg_value="FFFFFF") {

    // FUNCTION image_resample (C) phpwebfox.wordpress.com

    // Step 1 - Getting actual image size
    $ow = imagesx($im);
    $oh = imagesy($im);

    // Step 2 - Create ne Image with new Width and Height
    $nim = imagecreatetruecolor($nw,$nh);

    // Step 3 - Define the Background
    switch ($bg_type) {
        case "color":
            $bg = imagecolorallocate($nim,hexdec(substr($bg_value,0,2)),hexdec(substr($bg_value,2,2)),hexdec(substr($bg_value,4,2)));
            imagefill($nim,1,1,$bg);
            break;
        case "get":
            $bg = imagecolorat($im,0,0);
            imagefill($nim,1,1,$bg);
            break;
    }

    // Step 4 Check for Job Type (Scale UP or DOWN)
    if ($nw < $ow || $nh < $oh) {
        $scale = "DOWN";
    } else {
        $scale = "UP";
    }

    // Step 5 Calculate Scaling
    if ($scale == "UP") {
        $nx = $ow;
        $ny = $oh;
        while ($nx<$nw && $ny<$nh) {
            $nx = $nx + ($ow/100);
            $ny = $ny + ($oh/100);
        }
        $nx = $nx - ($ow/100);
        $ny = $ny - ($oh/100);    
        echo $nx." ".$ny;
    } else {
        $nx = $ow;
        $ny = $oh;
        while ($nx>$nw || $ny>$nh) {
            $nx = $nx - ($ow/100);
            $ny = $ny - ($oh/100);
        }
    }
    $nx = round($nx,0);
    $ny = round($ny,0);

    // Step 6 Calculate center
    $startx = ($nw-$nx)/2;
    $starty = ($nh-$ny)/2;

    // Step 7 Process Resampling
    imagecopyresampled($nim, $im, $startx, $starty, 0, 0, $nx, $ny, $ow, $oh);

    // Step 8 Clear Memory and return Image
    imagedestroy($im);
    return($nim);
}

?>

Wie Ihr seht, alles recht „schlank“ gehalten…

Die Funktion image_resample() erwartet mindestens 3 Parameter…

  • $im – Das bereits in den Memory geladene Bild
  • $nw – Die neue Breite
  • $nh – Die neue Höhe

Optional können folgende Parameter für die Gestaltung des Hintergrundes mit angegeben werden…

  • $bg_type – entweder „color“ oder „get“ Mit der Angabe color wird der kann auch der Parameter $bg_value mit angegeben werden. Dieser Parameter legt dann die Hintergrungfarbe fest. Mit der Angabe get wählt die Funktion automatisch die Hintergrundfarbe des Original Bildes

Es folgt ein Beispiel wie die Funktion aufgerufen werden kann:

<?php
include("image_resample.php");
$im = imagecreatefromjpeg("testbild.jpg");
$im = image_resample($im, 200, 200, "color", "000000");
imagejpeg($im);
?>

Dieser Aufruf würde aus folgendem Original Bild:

testbild

die folgende verkleinerte Version auf 200×200 Pixel erstellen:

image_resample

ICH WÜNSCHE EUCH VIEL SPASS MIT DIESER WICHTIGEN UND AUCH MÄCHTIGE PHP GD LIB FUNKTION!

PHP Funktion: number_format() – Zahlen in PHP formatieren

Ich denke mal, jeder kennt das Problem, man benutzt eine Datenbank zum speichern von Fließkomma Zahlen und möchten nun diese Zahlen vernünftig formatiert mit PHP ausgeben. Dafür schenkten uns die Entwickler die Funktion number_format()! Aber auch hier gibt es eine kleine Tücke, welche zu beachten ist…

Zuerst einmal der Syntax der Funktion:

string number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' )

Wie wir sehen ist die Funktion recht einfach gehalten.

  • Als ersten Parameter wird die Fließkommazahl (in unserem Beispiel $number) verlangt.
  • Der zweite Parameter ist ein Integer, welcher die Anzahl der Dezimalstellen darstellt (in unserem Beispiel $decimals).
  • Der dritte Parameter ist ein String, welcher als dezimales Trennzeichen genutzt werden soll (in unserem Beispiel $dec_point).
  • Der vierte Parameter ist ebenfalls ein String, welcher als 1000er Trennzeichen genutzt werden soll (in unserem Beispiel $thousands_sep)

Wie gesagt, recht einfach, ABER es verbürgt sich hier noch eine kleine Tücke…

Jeder gute Coder hält den Code so schlank wie möglich. Ich gehe jetzt mal davon aus, dass ich einen Preis vorliegen habe, welchen ich formatiert ausgeben möchte. Dazu brauche ich ja lediglich die Anzahl der Dezimalstellen (in den meisten Fällen somit 2) und dass Dezimaltrennzeichen (Kaufmännisch üblich das Komma „,“).

Also würde meine Funktion dann Beispielsweise so aus:

<?php
$number = 12.57;  // Der Preis 12,57 EUR
$decimals = 2;    // Anzahl der Nachkommastellen
$dec_point = ","; // Gewünschtes Dezimal-Trennzeichen (Komma)
// Ausgabe der formatierten Zahl als String
echo number_format($number, $decimals, $dec_point); 
?>

Und das Ergebniss des Skriptes sieht dann so aus:

ERROR: Wrong parameter count for number_format()

Wie wir sehen, sehen wir nichts 😦

Um die Funktion number_format() zu benutzen müssen immer alle Parameter angegeben werden, egal wie nervig das halt ist. Sprich auch wenn ich kein 1000er-Trennzeichen für meine formatierte Zahl benötige, muss ich dieses dennoch beim Aufruf der Funktion mit angeben.

Es folgt der Funkionsfähige Code für mein Beispiel:

<?php
$number = 12.57;     // Der Preis 12,57 EUR
$decimals = 2;       // Anzahl der Nachkommastellen
$dec_point = ",";    // Gewünschtes Dezimal-Trennzeichen (Komma)
$thousands_sep = ""; // Ich verzichte auf ein Tausender Trennzeichen
// Ausgabe der formatierten Zahl als String
echo number_format($number, $decimals, $dec_point, $thousands_sep); 
?>

Und das Ergebniss des Skriptes sieht dann so aus:

12,57

Wie wir sehen… es hat funktioniert, unsere Fließkommazahl wird nun mit 2 Dezimalstellen und einem Komma als Dezimal-Trennzeichen dargestellt.

Um den Code dennoch gering zu halten empfiehlt es sich eine kleine Funktion zur Darsetllung von Kommazahlen innerhalb des Projektes anzulegen, vorallem weil man dann Global die Einstellung ändern kann…

Hier ein Beispiel meiner Funktion für Preise, welche ich üblicherweise benutze:

<?php
// Funktion
function fprice($number, $decimals=2, $dec_point=",",$thousands_sep="") {
return number_format($number, $decimals, $dec_point, $thousands_sep);
}

// Aufruf der Funktion
$preis_formatiert = fprice(127.93);
?>

Ich wünsche euch viel Spass mit dieser mehr als brauchbaren Funktion in PHP und hoffe ich konnte zumindestens bei einigen ein wenig Licht in Dunkel zu dieser Funktion number_format().