Tag-Archive for » Funktion «

Coding: WordPress – Email bei Aktualisierung

Wer zusammen mit mehrere Ko-Autoren an einem Blog schreibt, möchte in der Regel gerne immer auf dem aktuellsten Stand der Beiträge sein.

Ein in PHP geschriebener Code-Schnipsel mit der Funktion post_updated_email() aus dem Netz kann bei diesem Problem gut weiter helfen:


function post_updated_email( $post_id ) {
global $current_user;
get_currentuserinfo();


// Ist es nur eine Revision, dann keine Email senden
if ( wp_is_post_revision( $post_id ) )
return;
$post_title = strip_tags(get_the_title( $post_id ));
$post_url = get_permalink( $post_id );
$subject = '[UPDATE] ' . $post_title ;
$message = __('Update by ', 'domain') . $current_user->display_name . ' ('.date('c', current_time( 'timestamp', 0 )).')' . "\n\n";
$message .= $post_title . ": " . $post_url;
$message .= "\n\n" . __('Update in Post.', 'domain');
$headers = 'From: '.get_bloginfo('name').' <' . get_bloginfo('admin_email') . '>' . "\r\n";


// Email an den Admin
wp_mail( get_bloginfo('admin_email'), $subject, $message, $headers );
}
add_action( 'save_post', 'post_updated_email' );

Der Code-Schnipsel sendet dem Admin eine Email, wenn einer der Beiträge aktualisiert wurde. Den Code kann man natürlich auch durch Modifikation an die eigenen Bedürfnisse anpassen. Die kurze Funktion kann man am besten in der Funktionssammlung functions.php eines Themes von WordPress unterbringen.
Man sollte dabei aber auch bedenken, dass die kleine Hilfsroutine bei zu vielen Änderungen in kurzer Zeit auch einen kleinen Stau im Postfach des Admin auslösen könnte…

PHP: Domain aus einer URL auslesen

phpmarginZu den häufigeren Aufgaben eines Programmierers gehört es, die Domain aus einer URL auszulesen.

Zum Beispiel sollte aus der URL „https://www.homepage-anleitung.de/2016/08/javascript-alternative-dart-bringt-version-1-19/“ die Domain „www.homepage-anleitung.de“ isoliert werden.

Diese Aufgabe kann man als eigene kleine Funktion auf Basis von ParseUrl() realisieren:

function getHost($url) {
$parseUrl = parse_url(trim($url)); return trim($parseUrl[host] ? $parseUrl[host] : array_shift(explode(‘/’, $parseUrl[path], 2))); }

Hier einige Aufrufe der Funktion getHost() und die Ergebnisse dazu:

getHost(“homepage-anleitung.de”); -> homepage-anleitung.de
getHost(“https://homepage-anleitung.de”); -> homepage-anleitung.de
getHost(“www.homepage-anleitung.de”); -> www.homepage-anleitung.de
getHost(“sub.homepage-anleitung.de”); -> sub.homepage-anleitung.de
getHost(“https://homepage-anleitung.de/datei.php”); -> homepage-anleitung.de

Category: Allgemein, PHP  Tags: , , , , , , , ,  Comments off

Chrome bekommt eine Cast-Funktion

Google bringt ein Update für die aktuelle Version 51 von Chrome, mit der die bisher nur als Erweiterung verfügbare Cast-Funktion direkt in den Browser integriert wird. So müssen Nutzer das Symbol für die Google-Cast-Symbolleiste nicht mehr extra installieren, um ihr Cast-Gerät in Chrome nutzen zu können. Wer die Cast-Erweiterung schon installiert hat, kann sie aber auch weiter nutzen.

Nach vollzogenem Update taucht im Chrome-Menü zwischen den Punkten „Drucken“ und „Suchen“ zusätzlich die Option „Streamen“ auf, über die man die Cast-Funktion startet. Alternativ kann man im Browser mit der rechten Maustaste auf einen Seiten-Tab klicken, um auf die Funktion zuzugreifen.

Google Cast kann die Übertragung eines Browser-Tabs an einen mit einem Fernseher oder Monitor verbundenen Chromecast realisieren. Bisher ließen sich bei der Spiegelung auf ein Google-Cast-Gerät Optionen für Auflösung, Bitrate oder Qualität manuell festlegen – das wird jetzt automatisch angepasst.

Die Finalversion von Chrome 51 hatte Google schon Ende Mai veröffentlicht. Sie brachte diverse Neuerungen, beispielsweise eine Programmierschnittstelle, die die Anmeldung bei Websites vereinfachen soll, und eine Funktion zur Reduzierung des Stromverbrauchs bei Mobilgeräten – und wie immer auch diverse Sicherheitspatches.

Mörderischer Treiber der Firma FTDI gestoppt

KillertreiberUSBDer neue Treiber für die weit verbreiteten USB-Schnittstellenbausteine FT232R des Unternehmens FTDI wird nach massiven Protesten nicht mehr über Windows Update verteilt, gab der Hersteller jetzt in einem Blogbeitrag bekannt.

Die meist als Killer-Treiber bezeichnete bisherige Version 2.12.0 der Treibersoftware war darauf programmiert, Fälschungen dieser Chips durch Änderung ihrer USB-ID (PID) unbrauchbar zu machen.

Natürlich darf man sich als Chiphersteller gegen Produktpiraterie wehren. Wenn eine Produktfälschung aussieht wie das Original, aber nicht ganz so gut oder gar nicht funktioniert, ist der Gewinn geschmälert, der Ruf ruiniert und letztendlich auch der Kunde der Betrogene.

Der USB-Spezialist FTDI ist aber wohl deutlich zu weit gegangen, als er nichtsahnenden Käufern von Geräten, die mit einem gefälschten Chip bestückt sind, einen Treiber unterjubelte, der die meist funktionierende Nachahmung eines USB-Seriell-Adapters kurzerhand per Software unbrauchbar machte.

Das ist in meinen Augen einfach nur  Computersabotage, und ein Unrecht rechtfertigt keine Reaktion, die ebenfalls Unrecht ist. Das scheint die Firma jetzt auch eingesehen zu haben, denn sie hat ihren Treiber-Kettenhund wieder an die Leine gelegt.

Ein Tipp für Betroffene: Bei Heise finden Sie eine Anleitung, wie Sie von dem Killer-Treiber stillgelegte USB-Adapter wieder in Funktion bekommen…

Email-Adressen mit PHP-Funktionen prüfen

phpmarginMit PHP kann man Emailadressen weitgehend auf formale Richtigkeit überprüfen.

Dazu wird in PHP-Programmen häufig die Funktion eregi() benutzt.

Hier ein Beispiel, bei dem die Eigenschaften der eingegebenen Email-Adresse auf

  1. nur alphanumerische Zeichen
  2. nur ein @-Zeichen
  3. mindestens ein Punkt
  4. eine TLD mit 2 bis 4 Zeichen

geprüft werden:

function MailAdrCheck($emailadress) {
if (eregi(“^[a-z0-9]+([-_.]?[a-z0-9])+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}”, $emailadress)) {
return TRUE;
} else {
return FALSE;
}
}

Im Unterschied zu ereg() unterscheidet eregi() nicht zwischen Groß- und Kleinschreibung, was bei Email-Adressen sinnvoll ist.

Allerdings ist die Funktion seit PHP 5.3.0 veraltet (deprecated), sie sollte also in neuen Projekten nicht mehr verwendet werden. Stattdessen bietet sich die Funktion preg_match() an. Dabei muss nur der Reguläre Ausdruck in RegExp-Delimiter eingefasst werden, ansonsten bleibt alles gleich.

Category: PHP  Tags: , , , , , , ,  Comments off

Die Weiterleitung mit PHP

phpmarginWenn eine Internetseite umbenannt wurde und trotzdem noch unter ihrer bisherigen URL zu erreichen sein soll, hilft eine Weiterleitung (Redirect).  Es gibt verschiedene Möglichkeiten dafür, beispielsweise eine .htaccess-Datei  oder ein HTML-Meta-Tag.

Es geht aber auch mit reinem PHP. Der HTTP-Header für eine Weiterleitung mit dem am häufigsten verwendeten Statuscode 301 (Moved Permanently) sieht so aus:

HTTP/1.1 301 Moved Permanently
Location: http://www.neueurl.de

 

Den Header kann man mit der PHP-Funktion header() manipulieren. Der nachstehende PHP-Code führt einen Redirect auf die URL http://www.neueurl.de aus:

<?php
header (“HTTP/1.1 301 Moved Permanently”);
header (“Location: http://www. neueurl.de /”);
exit();
?>

 

Die URL in Location muss absolut sein, also mit http// beginnen. Es funktioniert auch ohne das exit(), aber das macht deutlich,  dass es hier nicht mehr weiter geht.

Häufig gibt es eine Fehlermeldung bei PHP-Redirects mit der Funktion header(), weil schon vor der Funktion eine Ausgabe stattgefunden hat – ein einzelnes Leerzeichen reicht da schon aus. Nach einer Ausgabe kann man den Header aber nicht mehr modifizieren, so dass in diesem Fall die Weiterleitung nicht durchgeführt wird.

PHP: Alle Meta-Tags einer Internetseite anzeigen

Wer Internetseiten erstellt, muss häufiger alle Meta-Tags einer Seite auslesen. Das kann man natürlich über die Quellcode-Anzeige des Browsers machen, es kann aber relativ umständlich sein. Die PHP-Funktion get_meta_tags() macht es sehr einfach, alle Meta-Tags auf einmal auszulesen und anzuzeigen. Das sieht dann so aus:

// Meta-Tags auslesen
$seite = “www.homepage-anleitung.de”;
$mtarray = get_meta_tags($seite);

// Meta-Tags ausgeben
foreach ($mtarray as $key => $wert) {
echo $key.”: “.$wert.”<br />”;
}

Das Programm gibt alle Meta-Tags der Seite mit einem Tag pro Zeile aus. Wenn man das Script um ein Formular zur Eingabe einer Webseiten-Adresse erweitert, hat man ein Werkzeug, mit dem man schnell und einfach alle Meta-Tags beliebiger Internetseiten anzeigen kann.

Category: PHP  Tags: , , ,  Comments off

Der Trinitäts-Operator in PHP

Bei einem erfahrenen PHP-Programmierer bilden sich nach einiger Zeit bestimmte Vorgehensweisen aus, durch die er schneller zum Ziel (dem fertigen Programm) kommt. Das spielt sich häufig in Strukturen oder Funktionssammlungen ab, aber eine ganz besondere Art der Effizienzsteigerung solcher Programmierer lässt denjenigen, der den Code später dann pflegen soll, stutzen: Die Benutzung des Trinitäts-Operators (Ternary Operator). Vielleicht ist Ihnen dieses Konstrukt ja schon einmal begegnet:

$wochenende = ($tag > 5) ? ‘ja’ : ‘nein’;

Das sieht ziemlich anders aus als Standard-PHP-Code und kann im ersten Moment durchaus verwirren. Dabei handelt es sich um eine normale if / else – Abfrage, die man auch so schreiben kann:

if ($tag > 5) {
$wochenende=’ja’;
} else {
$wochenende=’nein’;
}

Der Trinitätsoperator funktioniert anders als die if / else – Abfrage nur, wenn ein Wert zurückgegeben wird. Etwas wie

$wochenende = ($tag > 5) ? echo ‘ja’ : echo ‘nein’;

funktioniert nicht. Benutzt man aber statt echo print für die Ausgabe, klappt es wieder, denn print ist eine echte PHP-Funktion und gibt TRUE oder FALSE zurück. Wegen dieser komplizierten Handhabung ist der Trinitäts-Operator wohl nicht Anfänger’s Liebling.

Category: PHP  Tags: , , , , ,  Comments off

Eine Email mit PHP versenden

Die Mailfunktion von PHP ist gut geeignet, einfache Text- oder HTML-Emails zu versenden. Zunächst sind die Variablen für die Parameter der Email vorzubelegen:

$absender=”absender@meinedomain.de”;
$empfaenger=”empfaenger@deinedomain.de”;
$header=” From: $absender”;
$betreff=”Testemail mit PHP”;
$body=” Hallo, eine Nachricht mit PHP abgeschickt!”;

Dann kann man schon die Mail-Funktion aufrufen und die Post rausschicken:

mail($empfaenger, $betreff, $body, $header);

Wenn es eine Email in HTML sein soll, muss der Header um einige Parameter erweitert werden:

$header =”MIME-Version: 1.0\r\n”;
$header.=”Content-Type: text/html; charset=iso-8859-1\r\n”;
$header.=”From: $absender”;

Natürlich muss auch der Inhalt der Email jetzt in HTML gehalten sein:

$body=”<html>

<head>    <title>HTML-E-Mail mit PHP erstellen</title></head>

<body><h1>HTML-E-Mail mit PHP erstellen</h1>

<p>Diese E-Mail wurde mit PHP und HTML erstellt</p></body>”;

Wenn die Funktionalität nicht ausreicht, zum Beispiel für Dateianhänge, kann man eine externe PHP-Klasse wie PHPMailer verwenden.

Category: Allgemein  Tags: , , ,  Comments off