PHP

Wie kann ich beim Versenden von E-Mails mit PHP einen Absender angeben?

Das PHP-Mail-Kommando wird folgendermaßen aufgerufen:

mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])

Durch Angabe der zusätzlichen Header "From" und "Reply-To" kann der Absender mitgegeben werden. Sie dazu folgendes Beispiel:

mail("nobody@example.com", "Betreff", $message, "From: webmaster@meine-domain.de\r\nReply-To: webmaster@meine-domain.de");

Was ist ImageMagick und wie kann man es verwenden?

ImageMagick ist eine Sammlung von Programmen zur Bearbeitung von Bilder von der Kommandozeile aus. Eine genaue Beschreibung des Programmes findet sich auf der ImageMagick-Homepage (http://www.imagemagick.org/). Hauptsächlich kann man es für folgende Aufgaben nutzen:

  • Bildformatkonvertierung
  • Bildgröße ändern, Bilder schärfen, rotieren und andere Effekte anwenden
  • Vorschaubilder erzeugen
  • GIF-Animationen in Echtzeit erzeugen
  • Bildmontage
  • Bilder beschriften
  • Rahmen um Bilder legen

Die ImageMagick-Hilfprogramme sind auf unserem Webserver unter dem Pfad /usr/local/bin/ erreichbar. Es ist nicht möglich den Pfad mit normalen PHP-Dateioperationen zu bearbeiten (z.B. glob() funktioniert dort nicht). Die Befehle können aber allesamt unter Verwendung von kompletten Pfadangaben für ImageMagick-Programmdatei und Bildangaben mit Shellbefehlen gestartet werden (exec(), system() usw.). Bitte verwenden Sie für den Pfad zu Ihren Dateien keine absoluten Pfade sondern nutzen Sie stattdessen die PHP-Variable $DOCUMENT_ROOT.

Das folgende Beispiel demonstriert die Nutzung von GD und ImageMagick. Zuerst wird mit GD ein Bild erzeugt und mit einem Text und einem Rechteck versehen und gespeichert. Dann wird mit ImageMagick das Bild gedreht und unter einem anderen Namen gespeichert. Beide Bilder werden anschließend als Bild im Browser angezeigt.

//----------------------------------------------------------------------

$jpegtran = "/usr/local/bin/jpegtran";
$tmpdir = "$DOCUMENT_ROOT/tmp/";
$im = @ImageCreate (100, 100) or die ("Kann keinen neuen GD-Stream erzeugen");
$background_color = ImageColorAllocate ($im, 255, 255, 255);
$text_color = ImageColorAllocate ($im, 255, 0, 0);
imagerectangle ($im, 2, 2, 98, 98, $text_color);
ImageString ($im, 1, 5, 5, "Ein Test-String", $text_color);
$src = "$tmpdir/bild1.jpg";
$dst = "$tmpdir/bild2.jpg";
ImageJPEG($im, $src, 80);
echo "<p>";
echo "<p>$jpegtran -rotate 270 -trim -copy all $src > $dst";
system("$jpegtran -rotate 270 -trim -copy all $src > $dst", $ret);
echo "<p>Return-Code: $ret";
echo '<p>Originalbild: <img src="tmp/'.basename($src).'">';
echo '<p>Mit Imagemagick verändertes Bild: <img src="tmp/'.basename($dst).'">';

//----------------------------------------------------------------------

Bei der Programmierung meines PHP-Scriptes werden mir keine Warnungen ausgegeben, woran kann das liegen?

Auf Produktivservern sollten nur echte Fehler angezeigt werden, um Besucher der Webseiten nicht mit Warnungen zu verwirren. Aus diesem Grund werden bei envia TEL auch nur Fehler angezeigt (error_reporting = E_ERROR). Falls Sie bei der Programmierung alle Ausgaben des PHP-Interpreters sehen wollen, können Sie das selbst jederzeit mit folgendem PHP-Befehl erreichen:

error_reporting(E_ALL);

Bei mir funktionieren keine PHP-Uploads!

Das folgende Beispiel zeigt demonstrativ die Funktionsweise des Dateiuploads. Es benötigt im Verzeichnis des Scripts ein Unterverzeichnis tmp mit den Rechten 777 bzw. rwxrwxrwx (der Webserver muss Schreibrechte besitzen!). Der Pfad zum temporären Verzeichnis sollte immer relativ angegeben werden (sonst kann es zu open_basedir-Einschränkungen kommen!

<?php
error_reporting(E_ALL);
$tmpdir = "tmp/";

if (empty($_GET['do'])) {
  echo "<p><a href=\"?do=upload\">Dateiupload</a>\n";
}
  ?>
  <form enctype="multipart/form-data" action="<?echo $PHP_SELF?>?do=uploadnow" method="POST">
  <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
  Send this file: <input name="userfile" type="file">
  <input type="submit" value="Send File">
  </form>
  <?
}
elseif ($_GET['do'] == 'uploadnow') {
  $uploadfile = $tmpdir. $_FILES['userfile']['name'];

  print "<pre>";
  if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
      chmod($uploadfile, 0666);
      print "Die Datei wurde erfolgreich hochgeladen. ";
      print "Hier sind noch die Debuginformationen:\n";
  } else {
      print "Der Upload war nicht erfolgreich!  Hier sind Debuginformationen:\n";
  }
  print_r($_FILES);
  print "</pre>";
}

?>

Wie kann ich unter PHP auf meine Datenbank zugreifen?

Fügen Sie in Ihr Script folgende Zeilen ein:

//Datenbankverbindung herstellen
$db = mysql_pconnect("localhost","<Ihr Datenbank-Benutzername>","<Ihr Datenbank-Paßwort>") or die("Verbindung zur Datenbank fehlgeschlagen!");

//Eigene Datenbank selektieren
mysql_select_db("<Ihr Datenbank-Name>",$db);

//Alle Tabellen ausgeben
$res = mysql_query("SHOW TABLES");
while($row = mysql_fetch_row($res)) echo "$row[0]<br>";

Können mit PHP Bilder erzeugt werden?

Unsere Unix-Server verfügen über die Module gd und freetype. Mit der Hilfe von gd können Bilder in den Formaten GIF, JPG, PNG und Windows-BMP gelesen und in den Formaten JPG, PNG und Windows-BMP geschrieben werden. Das Modul freetype bietet die Möglichkeit zum Ausgeben von Texten innerhalb der Bilder. Folgendes Beispiel erzeugt ein JPG-Bild und gibt es direkt aus:

<?php
  header ("Content-type: image/jpeg");
  $im = @ImageCreate (100, 100) or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
  $background_color = ImageColorAllocate ($im, 255, 255, 255);
  $text_color = ImageColorAllocate ($im, 233, 14, 91);
  ImageString ($im, 1, 5, 5, "Ein Test-String", $text_color);
  ImageJPEG($im);
?>

Ein weiteres Beispiel demonstriert die Erzeugung eines PNG-Bildes unter Verwendung einer externen Schriftart (die True-Type-Schriftdatei arial.ttf wird im selben Pfad wie das Script erwartet):

<?php
  header ("Content-type: image/png");
  $im = @ImageCreate (200, 200) or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
  $background_color = ImageColorAllocate ($im, 255, 255, 255);
  $text_color = ImageColorAllocate ($im, 233, 14, 91);
  ImageString ($im, 1, 5, 5, "Ein Test-String", $text_color);
  ImageTTFText ($im, 10, 0, 5, 30, $text_color, "arial.ttf", "Freetype-Unterstützung:\n\rFont: Arial\n\rOmega: &#937;");
  ImagePNG($im);
?>

Welche Module werden in PHP unterstützt?

Der Befehl phpinfo() gibt eine umfangreiche Liste von Umgebungsvariablen, Einstellungen und unterstützten Modulen aus. Dort erfahren Sie leicht, ob das gewünschte Modul verfügbar ist.

Suche

Service

Hotline: 0800 0101600
Fax: 0800 3684283
Vorweg gehen