Suchergebnisse für: http header

Ziel: Aus einem Batch Script E-Mails verschicken können ohne vorher Programme installieren oder konfigurieren zu müssen.
Extra: 1-Zeiler

Lösung:
Aus dem Script einen PHP Webmailer fernsteuern. Wenn die Ansprüche nicht zu hoch sind ist diese Lösung in 2, 3 Minuten einsatzbereit und absolut ausreichend.
Einzige Voraussetzung ist hierbei natürlich ein PHP fähiger Webserver. Auf den (Windows) Clients sind keine weiteren Anforderungen gegeben.

Voraussetzung: PHP fähiger Webserver für den Mailer und eine Internetverbindung am Client

Scriptbeispiel:

start "iexplore" "http://php.webserver.de/webmailer.php?submitcode4f3d2s1a&contactname=Testserver 110&subject=Backup fehlgeschlagen&email=edv@iqb.hu-berlin.de&message=Das NAS Backup ist fehlgeschlagen&mailto=hannes.schurig@online.de"

PHP Mailer Code:

Code anzeigenDen Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.

<?php
$sendMailFeedback = "";
 
if (isset($_GET['submitcode44gf902jd284'])) {
 
    if (trim($_GET['contactname']) == '') { 
			$sendMailFeedback = "no contact name"; 
		} else { 
			$name = trim($_GET['contactname']); 
		}
 
    if (trim($_GET['subject']) == '') { 
			$sendMailFeedback = "no subject";
		} else {
      $realsubject = trim($_GET['subject']);
      $subject = 'PHP Mailer: "'.$realsubject.'"'; 
    }
 
    if (trim($_GET['email']) == '')  { 
			$sendMailFeedback = "no email";
		} else if (!preg_match("/[a-z0-9._+-]*@[a-z0-9._+-]+/", trim($_GET['email']))) { 
			$sendMailFeedback = "no valid email"; 
		} else { 
			$email = trim($_GET['email']); 
		}
 
    if (trim($_GET['message']) == '') { 
			$sendMailFeedback = "no message"; 
		} else {
        if (function_exists('stripslashes')) { 
					$comments = stripslashes(trim($_GET['message'])); 
				} else { 
					$comments = trim($_GET['message']); 
				} 
		}
 
    if ($sendMailFeedback=="") {
        $emailTo = $_GET['mailto'];
        $datum = date("d.m.Y",$timestamp);
        $uhrzeit = date("H:i",$timestamp);
        $body = "\n###############\nPHP Mailer\n###############\n\nVersendet am $datum um $uhrzeit Uhr\nAn: $emailTo \nVon: $name \nEmail: $email \nBetreff: $realsubject \n\nText:\n$comments";
        $headers = 'From: PHP Mailer <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;
 
        mail($emailTo, $subject, $body, $headers);
        $sendMailFeedback = "success";
    }
} else {
	$sendMailFeedback = "submitcode missing or wrong";
}
echo $sendMailFeedback;
?>

Erläuterung:
Das Batch Script startet den Internet Explorer (bzw. den als Standard eingestellten Browser) mit einer URL als Parameter, die dann also aufgerufen wird.
Da der Prozess

iexplore

angesprochen wird sollte es ein Windows PC mit installiertem Internet Explorer sein. Computer ohne IE oder mit anderem OS müssen den Pfad zu einem Browser einsetzen, der URLs per Parameter annimmt und aufruft.

Die URL ruft das PHP Script auf, das ihr vorher auf einen Webserver geparkt habt.
Mein erster Parameter ist so etwas wie ein Passwort. Damit nicht jeder im Web diesen Webmailer einfach so gebrauchen kann wird im PHP Code ganz am Anfang mit

if(isset($_GET['submitcode4f3d2s1a'])) {

überprüft, ob ein bestimmter Parameter gesetzt ist, den am besten nur ihr wisst und auch anpassen solltet. Ohne diesen Key funktioniert der Webmailer nicht, gibt ihn also nur bedingt weiter.
Alle weiteren Parameter sind beliebig anpassbar, müssen natürlich den GET Abfragen der PHP entsprechen.

Diese Variante ist also recht flexibel. Ihr könnt den Mailer beliebig anpassen, abspecken, aufrüsten usw.

Beispielnutzung: automatisierte Server Backup Batch Lösung

Letzte Woche habe ich die Mehrsprachigkeit einer Webseite in PHP mit einigen zusätzlichen Extras und Debuginformationen veröffentlicht. Ich zeige jetzt nochmal eine gekürzte Produktivversion ohne Schnick-schnack und Kommentare.

Code

Code anzeigenDen Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.

<?php
/*
   ###################
    PHP Multilanguage (minified version)
   ###################
   Desc: This page detects your browserlanguage, cookie or chosen language with PHP and displays the right content.
   Author: Hannes Schurig
   Date: 20.06.2011
   Edited: 20.06.2011 (v1.5)
   based on 1.4 of the long version
   1.5: * Code minified
   1.6: + header(Location) URL correction, no more .php?lang=?? after choosing lang
   URL (min version): http://hannes-schurig.de/21/06/2011/php-mehrsprachigkeitssystem-minified/
   URL (long version): http://hannes-schurig.de/17/06/2011/php-mehrsprachigkeitssystem-mit-einigen-extras/
 */

$lang = detectlang();
function langanalyse($new_lang) {
	switch($new_lang) {
		case ("de"): case ("en"): 
			$lang = $new_lang; 
			setcookie("lang", $lang, time()+31536000); break;
		case ("delete"):
			setcookie("lang", $lang, time()-3600); break;
		default:
			$lang = "de"; 
			setcookie("lang", $lang, time()+31536000); break;
	}
	return $lang;
}
function detectlang() {
	//https Erkennung
	$s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
	if(isset($_GET["lang"])) { 
		$lang = langanalyse($_GET["lang"]);
		header('Location: http'.$s.'://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']); 
	}
	elseif(isset($_COOKIE["lang"])) { $lang = langanalyse($_COOKIE["lang"]); }
	elseif(isset($_POST["lang"])) { 
		$lang = langanalyse($_POST["lang"]);
		header('Location: http'.$s.'://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']);
	}
	else {
		$cutstring = explode("-", $_SERVER["HTTP_ACCEPT_LANGUAGE"]);
		$detectlang = $cutstring[0];
		$lang = langanalyse($detectlang);
	}
	return $lang;
}

echo('
<a href="'.$_SERVER['SCRIPT_NAME'].'?lang=de">De</a>  
<a href="'.$_SERVER['SCRIPT_NAME'].'?lang=en">En</a>  
<a href="'.$_SERVER['SCRIPT_NAME'].'?lang=delete">Del</a>
');

// PHP Array mit den eigentlichen Inhalten der erlaubten Sprachen
$content["de"]["text"]="Hallo, dies ist nur ein Test";
$content["en"]["text"]="Hello, this is just a test";
$content["de"]["menu"]="
<ul>
 <li>Autos</li>
 <li>Frauen</li>
 <li>Alkohol</li>
</ul>";
$content["en"]["menu"]="
<ul>
 <li>Sex</li>
 <li>Drugs</li>
 <li>Rock'n'Roll</li>
</ul>";
$content["de"]["info"]="Zu Ihrer Information:<br/>
News 1: bla<br/>
News 2: bla<br/>
Test";
$content["en"]["info"]="For Your Information:<br/>
News 1: Foo<br/>
News 2: Bar<br/>
foobar";

?>
<html>
 <head>
  <title>Mehrsprachigkeit mit PHP, Array und COOKIES</title>
  <style type="text/css">
  div {
    margin: 20px;
	padding: 15px;
	float: left; }
  #langdebug {
    border: 1px solid black;
    font-size: 0.8em; }
  </style>
 </head>
<body>
 
 <div id="menu">
  <? echo($content[$lang]["menu"]); ?>
 </div>
 <div id="text">
  <? echo($content[$lang]["text"]); ?>
 </div>
 <div id="info">
  <? echo($content[$lang]["info"]); ?>
 </div>

</body>
</html>

Der eigentliche Codeteil (ohne Kommentare, Array und Sprachwahllinks) ist also nur noch 20 Zeilen lang aber trotzdem noch gut lesbar.

Demo

Demo Link

Download

min [.zip]

long version: Link

Heute früh direkt bemerkt: Google hat eine kleine Designänderung auf der Mainpage:

Modern, einfach, Google 🙂

Auch an der Suchseite und den Suchergebnissen wurde gearbeitet:

Die linke Sidebar hat sich verändert: Abstände, Linien(farben) und Positionen der Elemente wurden überarbeitet. Die Icons links sind ebenfalls neu und farblos; darüber lässt sich streiten finde ich, Google ist bei mir grundsätzlich eher bunt. Der ganze Seitenheader ist ein wenig neu arrangiert und designed. Die Suchergebnisse haben jetzt angenehmere Abstände (wodurch aber weniger Ergebnisse ins Sichtfeld passen), das Grün der Links ist (meiner Meinung nach) angenehmer und die Links stehen jetzt direkt unter dem Seitentitel.

Das wären so die auffälligsten Änderungen. Momentan sehe ich das neue Google Design nur im Chrome, im Firefox ist das alte Design noch aktiv. Ich kann also noch sehr gut Vorher-Nachher-Bilder zeigen 🙂

Das Verteilen von Artikeln über soziale Netzwerke ist ein wichtiger Besucherfaktor für jeden Blogger. Ein „like“ bei Facebook, ein Retweet bei Twitter, Bookmarks bei Digg oder eine Mail an Freunde, nichts freut und Blogger mehr, richtig?
Das sollte dem Leser natürlich so einfach wie möglich gemacht werden.

ShareThis nennt sich das Framework, mit dem ihr euch sehr schnell und einfach Sharing Buttons in Blogartikel integrieren könnt.

Mit ShareThis ist diese Möglichkeit in 10-20 Minuten fertig eingebaut.

Schritt 1: Registrieren
Registriert euch bei ShareThis. Das ist nötig, tut aber auch nicht weiter weh. Loggt euch dann ein und weiter gehts.

Schritt 2: Buttons erstellen
Ihr könnt zwischen verschiedensten Buttontypen und -styles wählen und euch die Einrichtung bei WordPress.com, blogger.com oder Typepad Blogs erleichtern lassen. Klickt euch also durch den Konfigurator.
Ein Klick auf „Get the Code Already“ führt euch eine Seite mit den 2 nötigen Codeschnipseln.

Schritt 3: Code einbauen
Der 2. Codeschnipsel mit dem Javascript Gedöns kommt in euren Header, bei self hosted WordPress meist die header.php im Themeverzeichnis. Dort in den <head> Bereich kopieren.

Der erste Code muss dort eingebaut werden, wo die Buttons landen sollen. Bei self hosted WordPress werdet ihr den Code in die single.php (einzelner Artikel), die index.php (Blog Startseite) und ggf. die archive.php.

Als Beispiel zeige ich einfach mal den Code meiner eingebundenen Buttons.

Im Titel:
html4strict“>
[…]

< ?php the_title(); ?>




Das

schiebt die Buttons von ShareThis an die rechte Seite.

Unter dem Artikel:

html4strict“>

< ?php the_content("

Read the rest of this entry »“); ?>

[…]

[…]

Das wars schon. Zumindest in der Theorie.
In der Praxis muss man sich noch die gewünschten Buttons raussuchen und das Styling auf den eigenen Blog abstimmen. Deswegen…

Schritt 4: Buttons anpassen
Die verschiedenen Buttonsdesigns könnt ihr im Nachhinein noch variieren. Dazu reichen meist kleinste Änderungen am Code.
Was man für welche Änderungen tun muss wird auf dieser Seite gut beschrieben.
Interessant ist sicherlich, welche Dienste unterstützt werden und wir ihr sie hinzufügt, alles erklärt.

Erledigt! Happy Sharing 🙂

Okay ich gebe zu, hier war ich faul.
Eigentlich sollte ich selber etwas schreiben, um Tabellen beim Klick auf den Header sortieren zu lassen. Aber wenn es SO einfach ist wie mit diesem externen Plugin, da spar ich mir gern die Mühe.

Beispiel

javascript“ line=“1″>

$(document).ready(function() {
$(„#sortable“).tableSorter();
});

html4strict“ line=“1″>


Ich nutze hier das externe Tablesorter Plugin von Christian Bach. Mal abgesehen vom simplen Sortieren kann man die Tabelle mit wenigen Statements auch dynamisch gestalten, das Verhalten steuern und weitere Feinheiten. Ein paar Beispiele auf dieser Seite.

Nach Teil 1 (Installation & Konfiguration), Teil 2 (Erweiterungen) und Teil 2.1 (Erweiterungen) folgt nun – wer hätte es gedacht – Teil 3. Wie angekündigt geht es um „Hacks ’n‘ Tricks„.

Zuerst mal ein ziemlich großer Hack: Portable Google Chrome von Caschy.
Diese angepasste Version ist auf USB Sticks voll funktionsfähig und bietet damit die üblichen Vorteile portabler Software.
Saugt euch von dem FTP den passenden Installer für euer System und gebt als Ziel bei der Installation den Laufwerksbuchstaben eures Sticks an. Die Installation legt automatisch einen Unterordner namens „PortableGoogleChrome“ an und entpackt dort alles.
Mit dem ChromeLoader startet ihr den Browser und die Updater.exe bietet euch immer die aktuellste Version an und installiert diese vollautomatisch.
Da bei der Installation des Portable Chromes das Importieren der Daten aus anderen Browsern fehlt müsst ihr das über Einstellungen -> Optionen -> Privates -> „Daten aus einem anderen Browser importieren“ nachholen.


Nutzt Suchkürzel um schneller an Informationen zu kommen.
Ihr spart euch viele Klicks wenn ihr mit Kürzel in der Adressleiste arbeitet. Die voreingestellten Suchkürzel findet ihr in den Optionen unter Standardsuche -> [Verwalten]. Wichtig sind hier die Kürzel, die ihr anpassen solltet.
So könnt ihr in eure Adresszeile

a avatar blu-ray

eingeben und die Adresszeile wechsel automatisch in:


Ein Trick zur Adblock Erweiterung; ich meinte ja im 2. Teil, dass der Adblock im Chrome nicht 100%ig zuverlässig ist. So könnt ihr vorgehen, wenn auf einer Seite doch Werbung angezeigt wird und ihr diese gezielt entfernen wollt ohne in den Optionen codetechnisch aktiv zu werden:
Strg+Shift+K wenn die Seite fertig geladen ist, ein Adblock Popup sollte erscheinen. Es fordert euch auf, die Werbung anzuklicken, also klicki klicki aufs bunti.
Der Klick auf die Werbung sollte Adblock dazu veranlassen sie von der Seite zu entfernen. Das Popup zeigt jetzt Daten zu dem geblockten Element an.
Mit dem Schieberegler könnt ihr den Grad anpassen, wie stark die Werbung angegangen werden soll. Wenn die Werbung durch den Klick noch nicht ganz verschwunden ist zieht ihr den Regler einfach weiter nach rechts. Aber auch wenn die Werbung beim ersten Klick entfernt wurde lohnt es sich (eher für Geeks) die Reglerstufen zu checken.

In meinem Beispiel wird die aktuelle Werbung durch Blocken des

iframe

Tags gelöscht. Wenn ich den Regler aber weiter nach rechts ziehe bekomme ich auch die Möglichkeit das

div

mit der

id HeaderAds

für immer zu verbannen. Das ist natürlich sinnvoller. Wenn ich den Schieberegler noch weiter ziehe verschwindet irgendwann der Content, also nicht übermütig werden 😉


Mehr Vorschläge beim Tippen in der Omnibox (so nennt man die „intelligente“ Adressleiste) sind durchaus zu empfehlen und schnell gemacht. Öffnet die Eigeschaften eurer Chrome Verknüpfung und hängt an das Ziel folgendes an:

-omnibox-popup-count=XX

wobei XX einen numerischen Wert darstellt, die Anzahl der Vorschläge, die euch angezeigt werden sollen.
Ich empfehle einen Wert zwischen 15 und 25, mehr ist nicht sinnvoll.

Nicht nur diese Veränderung gibt es in der Verknüpfung von Chrome, „chrome.exe -incognito“ wäre ein weiterer Schalter, der Chrome automatisch im Inkognito Modus startet.
Folgende „-disable“ Anhänge in der Verknüpfung deaktivieren bestimmte Funktionen und können den Browser dadurch beschleunigen:

-disable-dev-tools
-disable-hang-monitor
-disable-images
-disable-java
-disable-javascript
-disable-logging
-disable-metrics
-disable-metrics-reporting
-disable-plugins
-disable-popup-blocking
-disable-prompt-on-repost

All diese Parameter funktionieren auch in Caschys Portable Chrome, dafür gibt es die parameter.txt im Root Verzeichnis. Schreibt dort einfach den gewünschten Schalter rein und packt noch ein zusätzlichen Strich davor wie in den 2 voreingestellten Parametern.


Noch ein paar Kleinigkeiten:

Habt ihr gewusst, dass man fertige Downloads aus der Downloadleiste per Drag’n’Drop in einen beliebigen Ordner kopieren kann?

Man kann übrigends auch ganz einfach per Drag’n’Drop Tabs auslagern, diese erscheinen dann in einem eigenen Chrome Fenster. Einfach Tab anpacken, aus der Leiste ziehen und loslassen.

Schonmal

about:crash

in die Adresszeile eingegeben?

Chrome hat einen eigenen Task Manager, den ihr mit Shift+Esc aufrüfen könnt. Geeks können hier noch weitere interessante Spalten z.B. mit der PID und weiteren Cachegrößen einblenden. Ein Klick auf „Statistiken für Computerfreaks“ enthüllt noch viel viel mehr spannend aussehenden aber doch unbrauchbaren Kram.

Ein paar ziemliche coole Sachen kann man auf ChromeExperiments.com machen. Auf jeden Fall einen Blick wert, was ohne Flash alles so möglich ist.

Für alle Webdesigner, denen dieser gelbe Rahmen bei Textfeldern in Chrome (und auch Safari) nicht leiden können, gibt es eine schnelle und einfache Lösung.
Folgenden CSS Code in die Seite oder die dazugehörige CSS Datei einbauen:
css“ line=“1″>
*:focus {
outline: none;
}

Ich könnte sicher noch einiges aufführen aber das sollte fürs erste reichen. Ergänzungen kommen in neue Posts.
Kritik, Anregungen, noch geilere Tricks, ⇓ comment below! ⇓

Der erste April ist leider schon vorbei aber klar ist: E-Mails mit falschen Absenderadressen (also Fake Mails) zu schicken ist ein weit verbreiteter Scherz. Eine ähnliche Technik wird verwendet um sogenannte Phishing Mails zu versenden und Empfänger in die Irre zu führen.
Kein Wunder wenn die Technik dahinter so einfach ist, zumindest wenn man keine hohen Ansprüche an die gefälschte Mail setzt. Mit etwas Know-How lassen sich solche Mails entlarven.
Wir wollen uns heute das Grundgerüst eines Fakemailers ansehen.

Ihr braucht dazu erstmal eine PHP-fähige Plattform. Das ist also ein Webserver oder eine lokale Webserverinstallation wie XAMPP.

Der Fakemailer selbst besteht aus 2 Dateien. Da ich Aussehen und PHP Code aus Übersichtsgründen trenne wird eine .html Datei das Design des Formulars bestimmen und eine .php Datei kümmert sich um das Verarbeiten und Versenden der Daten. Man könnte Formular und PHP Code auch in 1 Datei packen, zusammen mit integrierten CSS Styles, aber etwas Stil muss sein!

Hier der Inhalt meiner .html Datei:

<html>
<form action="phpfake.php" method="post">
<table border="0">
<tbody>
<tr>
<td>Empfänger (Mail) :</td>
<td><input name="to" type="text" size="90" /></td>
</tr>
<tr>
<td>Von (Mail) :</td>
<td><input name="from" type="text" size="90" /></td>
</tr>
<tr>
<td>Von (Name) :</td>
<td><input name="name" type="text" size="90" /></td>
</tr>
<tr>
<td>Betreff :</td>
<td><input name="subject" type="text" size="90" /></td>
</tr>
<tr>
<td>Nachricht :</td>
<td><textarea cols="70" rows="10" name="message"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Send" /></td>
</tr>
</tbody></table>
</form>
</html>

So sieht es aus:

Absolut keine Muster-.html aber es geht ja nur darum, dass ihr schnell zum Ziel kommt, anpassen und optimieren kann jeder für sich.

Die erste Zeile schickt die ausgefüllten Formulardaten an folgenden PHP Code:

<?php
$to=$_POST['to'];
$from=$_POST['from'];
$name=$_POST['name'];
$absender = $name.' <'.$from.'>';
$headers .= 'From:' . $absender . "\n";
$headers .= 'Reply-To:' . $from . "\n";
$subject=$_POST['subject'];
$message=$_POST['message'];

$ret=mail($to, stripslashes($subject), stripslashes($message), $headers);
if($ret==true) {
echo "<br /> Mail sent Successfully";
} else {
echo "<br /> Unable to Send mail";
}
?>

Die mail(); Funktion aus Zeile 11 erledigt den Mailversand.
stripslashes(); ermöglicht einfache Backslashes in eurem Mailbetreff und -text.

Die Dateien einfach auf den besagten Server laden, die .html aufrufen, ausfüllen und auf den Senden Button klicken.
Das Ergebnis ist beunruhigend überzeugend, der einfache Header gibt keine Hinweise auf einen gefälschten Absender preis.

Nur der erweiterte Header gibt Aufschluss von wem diese Mail wirklich kommt:

Received: from dd11438.kasserver.com (dd11438.kasserver.com [85.13.133.243])
by mx.kundenserver.de (node=mxeu3) with ESMTP (Nemesis)
id 0MV5j7-1O1Mvp1aSj-00YTu9 for hannes.schurig@online.de; Thu, 08 Apr 2010 21:26:04 +0200
Received: by dd11438.kasserver.com (Postfix, from userid 1086)
id 20A6B56E0C9; Thu, 8 Apr 2010 21:26:04 +0200 (CEST)

Aber clever eingesetzt ist ein Schrecken der Zielperson garantiert.
Einfach, huh!?

Do NOT follow this link or you will be banned from the site!