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.
Kategorie: PHP
PHP Probleme,Tipps und Tricks
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>
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();
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.
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)
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); }
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.
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();
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}
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();