Kategorien
WordPress

WordPress Text fliesst nicht um Bilder herum

Bei vielen Themes ist das der Fall, wenn man die vergessen hat in die styles.css seines Themes, den entsprechenden Code von der WordPress Seite einzufügen.

Kategorien
CSS jQuery WordPress

Entfernen von leeren HTML paragraph Tags

Der Editor von WordPress generiert leere <p> Tags, die nicht sehr hilfreich sind beim Gestalten.

Eine Lösung via CSS (CSS3 – Kampatibilität :empty):

p:empty
{
    display:none;
}

oder mit besserer Browser Kompatibilität und jQuery:

 <script>
    $("p:empty").hide();
</script>
Kategorien
PHP

PHP XML toArray Funktion SimpleXMLElement

Die einfache Methode

Zum Parsen von XML kann man die folgende Funktion verwenden, die erstaunlich gut funktioniert 🙂 Der Trick ist, die Daten erst nach Json und dann zurück in ein Array zu wandeln

class xmlArray extends SimpleXMLElement {

      public final function toArray ()
     {
         $json = json_encode($this);
         return  json_decode( $json,TRUE );
    }
}
$xml = new SimpleXMLElement ("<?xml ......>");
$array = $xml->toArray();
Kategorien
PHP

PHPUnit Tests Web Interface für Kunden mit VisualPHPUnit

Wenn man seinen Kunden eine einfache Weboberfläche zum Ausführen von PHPUnit Tests bereit stellen will, kann man auf das sehr gute und einfach zu installierende VisualPHPUnit zurückgreifen.

Kategorien
Apache Webserver WordPress

WordPress Sicherheit: sicheres Login

Die sicherste Methode seinen Block zu schützen vor unerlaubten Login ist die Verwendung einer .htpasswd Authentifizierung.

Die Standard Login Seite von WordPress ist nicht sicher, weil Hacker Programme besitzen, die wahrlos Passwörter ausprobieren. Wenn dann noch der Login Namen bekannt ist, weil bei WordPress der Namen des Authors unter den meisten Blog Posts steht, sollte man Wert auf Sicherheit legen.

Auf jeden Fall sollten die automatischen Fehlermeldungen abgeschaltet werden bei falschen Passwort oder falschem Login, welche gefährliche Hinweise geben. Dafür muss nur in die functions.php folgender Code eingegeben werden:

add_filter( 'login_errors', create_function('$a', "return null;"));

Ich empfehle einen .htpasswd Schutz für das /wp-admin/ – Verzeichnis anzulegen.

Die .htaccess Datei gehört auch in das Root – Verzeichnis, bspw:

<Files "wp-login.php">
AuthName "backend"
AuthType Basic
AuthUserFile Root-Pfadwordpress/.htpasswd
require valid-user
</Files>

Der notwendige Root-Pfad kann folgender Maßen bestimmt werden:

echo getcwd(); 

In die .passwd kommen Login und passwort in gehachter Form. Am besten den htpasswd Generator dafür benutzen und die Daten vorher notieren.

Die Leserechte sollten auf 0444 gesetzt werden für diese beiden Dateien, damit Sie nicht überschrieben oder gelöscht werden können.

Sinnvoll ist auch die Leserechte für kritische Dateien und alle php-Dateien einzuschränken in der „Haupt“ .htaccess:

<FilesMatch "(\.htaccess|\.htpasswd|wp-config\.php|liesmich\.html|readme\.html)">
  order deny,allow
  deny from all
</FilesMatch>

Dies ist besonders wichtig, um Hacker-Bots abzuwähren, die folgender Maßen vorgehen:

Sie suchen im Netz auf Seiten nach bestimmten WordPress-Seiten und verwendeten unsicheren Plugins, z.B. habe ich solche Anfragen protokoliert, was auf Sicherheitslücken der Plugins hindeutet:

"wp-content/themes/clockstone/readme.txt" 
"wp-content/plugins/complete-gallery-manager/readme.txt"

(Diese Themes bzw. Plugins werden bei nicht benutzt)

Kategorien
PHP

PHP einfacher Textvergleich

Man kann mittels PHP einfach einen Prozentsatz berechnen, wie gleich 2 Texte bzw. Dateien sind. Dabei wird ein Wert von 0 bis 1 berechnet, mit 1 = Texte sind gleich und 0 für keine Ähnlichkeiten.  Ab PHP4 verfügbar.

$stringOk = file_get_contents("file1.dat");
$stringNotOk = file_get_contents("file2.dat");
if(strlen($stringOk))
{
echo  similar_text($stringOk, $stringNotOk)/  strlen($stringOk);
}
Kategorien
Amazon MWS

Amazon Product Advertising API nach AWS Products API Migration

Die nächste Änderung der Amazon Product Advertising API steht an, nachdem der wdsl Dienst abgeschaltete werden wird, wird im Ende August 2012 auch die Amazon Product Advertising API für Seller abgeschafft und durch den neuen Dienst ersetzt:  AWS Products API. Für Advertiser ist der Dienst weiterhin verfügbar.

Diese ist im Paket der neuen AWS Dienste entahlten, die Bibliothek kann hier bezogen werden. Ein Migrationsguide gibt es hier, auch wichtig die API Dokumentation.

Man kann grob sagen, dass die neue API stärker untergliedert ist und man mehr Requests über einen Artikel absetzen muss als mit der alten API, um dieselben Informationen zu bekommen.

 

Kategorien
PHP

Internal Server Error 500 und die Ursachen

Die Fehler mit dem HTTP-Statuscode 500 sind sehr schwierig zu behebende Fehler, da der 500er Fehler viele mögliche Fehler zusammenfasst.

Der häufigste Grund ist eine fehlerhafte .htaccess Datei. Diese Dateien kann man am besten mit einem Logfile debuggen.

Ein anderer Grund kann ein PHP-Fehler sein. Es gibt bestimmte reservierte Bezeichner, die nicht als Variablennamen benutzt werden dürfen z.B: list. Dabei wird auch ein 500 Internal Server Error geworfen.

Bsp:

$list($a, $b) =functionA();
//richtig ist:
list($a, $b) =functionA();
Kategorien
Amazon MWS

Cloudfront String could not be parsed as XML

If you are using the Cloudfront library for Amazon Advertising API and you get the following error message, contact me I can help you with this issue. I got this error when I tried to retrieve amazon.fr (france) data.

exception 'Exception' with message 'String could not be parsed as XML' in cloudfusion\sdk.class.php:1209
Stack trace:
#0 \sdk.class.php(1209): SimpleXMLElement->__construct('parse_callback('pas_authenticate('ItemLookup', Array)
#3 amazonProductAdvertisingApi.php(233): AmazonPAS->item_lookup('B000091xxx', Array)
#4 amazonProductAdvertisingApi.php(90): amazonProductAdvertisingApi->getAsinData()
#5 amazonProductAdvertisingApi.php(65): amazonProductAdvertisingApi->getResult('FR')
#6 \index.php(248): amazonProductAdvertisingApi->getResults()
#7 {main}EOL#0 cloudfusion\sdk.class.php(1209): SimpleXMLElement->__construct('parse_callback('pas_authenticate('ItemLookup', Array)
#3 amazonProductAdvertisingApi.php(233): AmazonPAS->item_lookup('B000091xxx', Array)
#4 amazonProductAdvertisingApi.php(90): amazonProductAdvertisingApi->getAsinData()
#5 amazonProductAdvertisingApi.php(65): amazonProductAdvertisingApi->getResult('FR')
#6 eansuche\index.php(248): amazonProductAdvertisingApi->getResults()
#7 {main}
Kategorien
Amazon MWS

MarketplaceWebService Error

Wer bei Benutzung der MarketplaceWebService Bibliothek für PHP den folgenden Fehler bekommt bei Benutzung von MarketplaceWebService_Model_GetReportListByNextTokenRequest:

Fatal error: Call to undefined method MarketplaceWebService_Model_GetReportListByNextTokenResult::getReportInfo() in xxx

Der ist auf einen Fehler in den Beispiel Projekten von Amazon reingefallen.

Richtig ist:

$reportInfoList = $getReportListByNextTokenResult->getReportInfoList();

Falsch und seit Jahren von Amazon publiziert:

$reportInfoList = $getReportListByNextTokenResult->getReportInfo();