:::: MENU ::::

WebDevExp

Meine Erfahrungen in der Webentwicklerwelt

Posts Categorized / php

  • Mrz 26 / 2014
  • 3
php, Webserver, Wordpress

WordPress sicherer – wp-admin und wp-login.php zusätzlich absichern – htaccess

Wie schon erwähnt betreibe ich diverse WordPress-Seiten in einer WP-Multisite-Installation.

Wichtigstes Plugin ist Wordfence-Security, welches nach veränderten Files sucht und Benutzer aussperrt (auf IP-Adressen-Ebene), falls es zuviele fehlgeschlagene Login-Versucht gibt. Da sich die „Aussperrungen“ in letzter Zeit häuften (Bruteforce-Attacken aus Fernost), wollte ich das ganze ein wenig „sicherer“ gestalten. Also entschied ich mich, die Zugriffe auf /wp-login.php und /wp-admin via Browser-Authentification (den meisten als „htaccess“ bekannt) zu sperren. Dies bietet sich in meinem Fall besonders an, da ich nur zwei aktive Nutzer der Backends habe. Wichtig: das ganze macht nur Sinn, wenn die htaccess-Zugangsdaten nicht denen des WordPress-Backends entsprechen. Continue Reading

  • Feb 01 / 2013
  • 0
Linux allgemein, php

Exception: Zend Extension ./filename.php does not exist

Was hat das zu bedeuten?

Wenn man sich auf der Konsole befindet, ruft man ein php-Skript entweder via „php ./filename.php“ auf oder fügt in der ersten Zeile eine Interpreterdefinition ein: „#!/usr/bin/php“, danach beginnt das Skript, wie gewohnt, mit Wenn man die Datei nun ausführbar macht (chmod +x filename.php) kann man sie direkt via ./filename.php aufrufen, genau das ist es, was ich mit normalerweise mit cron-jobs mache.
Continue Reading

  • Nov 21 / 2012
  • 0
php

Bildmanipulation: Seitenverhältnisse beibehalten

An sich eine einfache Aufgabe, aber da ich immer wieder damit kollidiere und mich jedes mal neu reindenken darf (ja ich weiß, es gibt Libs dafür, aber diese sind nicht in jedem Projekt verfügbar), dachte ich mir, den Code jetzt einfach mal hier festzuhalten.

In diesem speziellen Fall, geht es darum, dass ein hochgeladen wird und die Seitenverhältnisse einer „Box“ angepasst werden müssen.
Es gibt zwei Faktoren, die das ein wenig komplizieren.
1. Das Bild ist in Pixeln definiert, die Box in mm, die „einfache Variante“ (maxWidth und maxHeight als Input) geht also nicht
2. Die „Box“ darf weder breiter noch höher, nur schmaler oder flacher werden

$imageRatio = $imageWidth / $imageHeight; //pixel
$elementRatio = $element->getWidth() / $element->getHeight(); //mm
if ($imageRatio == $elementRatio) {
    continue;
} elseif (($imageRatio > 1 && $elementRatio > 1) || ($imageRatio < 1 && $elementRatio < 1)) {
    //landscape+landscape OR portrait+portrait
    if ($imageRatio > $elementRatio) {
        $newHeight = $element->getWidth() / $imageRatio;
    } else {
        $newWidth = $element->getHeight() * $imageRatio;
    }
} elseif ($imageRatio >= 1 && $elementRatio <= 1) {
    //landscape/square + portrait/square
    $newHeight = $element->getWidth() / $imageRatio;
} elseif ($imageRatio <= 1 && $elementRatio >= 1) {
    //portrait/square + landscape/square
    $newWidth = $element->getHeight() * $imageRatio;
}
$element->setWidth($newWidth);
$element->setHeight($newHeight);
  • Nov 03 / 2010
  • 1
php

Developers Shame Day 2010

PHP hates me Autor Nils nimmt am Developers-Shame-Day 2010 teil und ich dachte mir, ich suche auch mal in den Untiefen meines alten Codes nach einem Schmuckstück. Ursprünglich kam die Idee zum DevShameDay von „Cem, dem PHP-Hacker“. Leider ging in den Jahren einiges verloren, aber ich denke, dass hier ist schlecht genug, um sich dafür zu schämen. Ich Schätze das ist um 2004 entstanden und lieferte Termine bzw. Events von einem bestimmten Tag, das ganze für einen Webkalender ala Google-Calendar. Was ich noch erwähnen sollte…. die Funktion wurde für jeden sichtbaren Kalendertag aufgerufen!

function getevents($year, $month, $day)
    {
        global $SELF;
        $month = (strlen($month) < 2) ? '0' . $month : $month;
        $day = (strlen($day) < 2) ? '0' . $day : $day;
        $str = "$year-$month-$day";
        $strx = "$month-$day";
        $sql = "
           SELECT e.name as ename,
                e.description as edescr,
                e.id as eid,
                t.color as tcolor,
                e.time_start as time_start,
                e.time_end as time_end,
                e.remember as rem,
                e.date_start as date_start,
                e.date_end as date_end,
                t.description as tdescription,
                t.showtime as showtime
           FROM cal_entry e, cal_types t
           WHERE e.types_id = t.id
             AND (e.date_start <= '$str'
             AND ( e.date_end >= '$str' AND e.date_end IS NOT NULL OR e.date_start = '$str' AND e.date_end IS NULL )
             OR(t.id = 1 AND right(e.date_start,5) = '$strx'))
           ORDER BY e.time_start, t.prio
         ";
        $res = mysql_query($sql);
        $out = "$day.$month.";
        while ($row = mysql_fetch_array($res)) {
            $tmp = "";
            $tmp .= $row["ename"];
            $starta = explode("-", $row["date_start"]);
            $outstart = $starta[2] . "." . $starta[1] . "." . $starta[0];
            $enda = explode("-", $row["date_end"]);
            $outend = $enda[2] . "." . $enda[1] . "." . $enda[0];
            $divbody = "";
            if ($row["date_end"] != '' && $row["date_start"] != $row["date_end"]) {
                $divbody .= "";
            } else {
                $divbody .= "Am:$outstart";
            }
            if ($row["showtime"]) {
                if (($row["date_end"] == $row["date_start"] || $row["date_end"] == '') && $row["time_end"] != '') {
                    $divbody .= "";
                    $divbody .= "";
                } elseif ($row["date_start"] < $row["date_end"] && $row["date_start"] == $str && $row["time_start"] != '') {
                    $divbody .= "";
                } elseif ($row["date_start"] < $row["date_end"] && $row["date_end"] == $str && $row["time_end"] != '') {
                    $divbody .= "";
                } elseif (($row["date_end"] == $row["date_start"] || $row["date_end"] == '') && $row["time_end"] == '') {
                    $divbody .= "";
                }
            }
            $rem = ($row["rem"] == true) ? "EMail Erinnerung aktiv" : "EMail Erinnerung inaktiv";
            $divbody .= "
                Von:	$outstart
                Bis:	$outend
                Von:	" . $row["time_start"] . " Uhr
                Bis:	" . $row["time_end"] . " Uhr
                Ab:	" . $row["time_start"] . " Uhr
                Bis:	" . $row["time_end"] . " Uhr
                Ab:	" . $row["time_start"] . " Uhr
            "; 
            $div = ''; 
            $tmp .= "";
            $out .= $div.$tmp;
        }
        return $out;
    }
  • Aug 01 / 2010
  • 3
php

HTML zu PDF umwandeln, endlich „einfach“ (Plattformunabhängig)

Mal wieder auf der Suche nach einer sinnvollen HTML2PDF Lösung, bin ich auf wkhtmltopdf gestoßen.

Das Tool nutzt Webkit im internen Backend und kann sogar CSS3 rendern. Die Installation unter MaxOSX und Linux ist absolut simpel: runterladen, ablegen, fertig. Unter Windows wird hier noch ein Installationsprozess durchgeführt, über den ich aktuell leider nichts sagen kann (bisher nicht getestet).

Um das Tool auf einer Webseite zu nutzen, habe ich mir ne kleine Klasse geschrieben, die HTML-Code als Input akzeptiert und mir den Pfad der fertigen PDF-Datei zurückliefert.

Continue Reading

  • Jun 28 / 2010
  • 2
php

Iterator oder IteratorAggregated Interface nutzen?

PHP bietet das Iterator Interface an, um Objekte direkt via foreach zu iterieren.

class MyClass implements Interator {
  private $array;
}
 
$obj = new MyClass();
foreach($obj as $key =&gt; $val){
  ...
}

Continue Reading

Seiten:123