Wikibooks:Abstellraum: Strukturwissenschaften: PHP

Aus Wikibooks

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] PHP

Autoren: Benutzer:Rdb, Benutzer:HIjacker, Benutzer:GCn, Benutzer:Progman, anonyme Autoren.

Um mit PHP programmieren zu können, braucht man einen Webhoster, der PHP zur Verfügung stellt, oder man muss sich einen Server installieren.

[Bearbeiten] Virtueller Server

Ein Beispiel für einen virtuellen Server ist XAMPP. XAMPP ist Freeware und gibt es unter apachefriends.org für Windows, Linux und Solaris zum Download:

  • hier gibt es die Windows-Version
  • hier ist die Linux-Version
  • hier gibt es die Solaris-Version (Achtung: Die Solaris-Version ist noch in der Alphaphase und die Benutzung erfolgt noch auf eigene Gefahr)
  • hier ist MacOS X-Version, lauffähig ab MacOS X 10.3

[Bearbeiten] PHP

Um einen virtuellen Server benutzen zu können muss auch PHP installiert sein. Die neueste Version gibt es unter php.net zum Runterladen. In den XAMPP-Versionen von apachefriends.org sind derzeit die beiden aktuellen PHP-Versionen 4 und 5 bereits integriert.

[Bearbeiten] Vergleichsoperatoren

Bisher haben Sie nur gelernt, wie man rechnet. Jetzt lernen Sie, wie man Vergleiche in PHP macht. Vergleichsoperatoren können true oder false zurückliefern. Es gibt verschiedene Vergleichsoperatoren:

  1. Der Ist-Gleich- und Ungleich-Operator

Bei einer Abfrage wird die Gleichheit zweier Werte mit einem doppeltem Ist-Gleich gekennzeichnet, die Ungleichheit mit einem !=. Mit diesen Vergleichsoperatoren kann man Zahlen und Texte vergleichen.

 $var1 == $var2
 $var1 == 'Hello World!';
 'Hello World!' == 'Hello World'
 'Hello World!' != $var1
 $var1 == 10
 100 == 10
  1. Der Größer- und Kleiner-Operator

Es wird damit abgefragt, ob ein Wert größer oder kleiner ist als der andere. Man kann damit nur Zahlen und keine Texte vergleichen.

 $var1 > $var2
 $var1 < 10
 100 > 10
 10 < 100
 200 < 100
  1. Der Größer-Gleich- und Kleiner-Gleich-Operator

Diese beiden Operatoren sind mit dem Größer- und Kleiner-Operator nahe verwandt. Sie fragen ab, ob ein Wert größer/kleiner oder gleich ist.

 $var1 >= $var2
 $var1 <= 10
 100 >= 10
 10 <= 100
 200 <= 100

Die Vergleichsoperatoren allein machen aber noch keinen Sinn, deswegen kommen jetzt If-Abfragen

[Bearbeiten] Or, And und Xor

Als zusätzliche Erweiterung für If, kann man mehrere Bedingungen stellen. Auch bei Or, And oder Xor kann man mit Else oder Elseif arbeiten.

[Bearbeiten] Or

Mit Or kann man eine Anweisung ausführen, wenn mindestens eine von zwei oder mehr Bedingungen erfüllt ist:

 <?php
 if ($benutzername == 'Hans' OR $benutzername == 'Anton') {
     echo "Du bist Hans oder Anton";
 }
 ?>

Hier wird wenn der Benutzername gleich Hans oder Anton ist, Du bist Hans oder Anton ausgegeben.

[Bearbeiten] And

And führt die Anweisung nur aus, wenn alle Bedingungen erfüllt sind:

 <?php
 if ($benutzername == 'Hans' AND $passwort == 'Hallo') {
     echo "Zugriff erlaubt.";
 }
 ?>

[Bearbeiten] Xor

Xor oder auch exklusives Or genannt, führt die Anweisung nur aus, wenn maximal eine der Bedingungen erfüllt ist:

 <?php
 if ($variable1 == 1 XOR $variable2 == 2) {
     echo "Hello World!";
 }
 ?>

[Bearbeiten] Datum und Zeit

Das Datum und die Zeit kann man über getdate() bekommen:

$heute = getdate();
$sekunden = $heute['seconds'];
$stunden = $heute['hours'];
$minuten = $heute['minutes'];
$datum = $heute['mday'];
$monat = $heute['mon'];
$jahr = $heute['year'];
$zeit = 'Es ist heute der '.$datum.'.'.$monat.'.'.$jahr.' um '. $stunden.'Uhr '.$minuten.' und '.$sekunden.' Sekunden';
echo $zeit;

Die vollständige Liste der Eigenschaften, die man verwenden kann, gibt es hier.

[Bearbeiten] Includes

Mit Includes kann man häufig benutze Script-Stücke oder auch Menüs auslagern, damit man sie nicht jedesmal neu schreiben muss oder sie nur einmal verändern muss. Das sieht dann z.B. so aus:

 <?php
 include('test.php');
 ?>

Natürlich können auch andere Dateien außer PHP-Dateien ausgelagert werden.

[Bearbeiten] E-Mails mit PHP

Mit PHP ist es auch möglich E-Mails zu versenden. Allerdings funktioniert das nicht auf einem virtuellem Server, weil dieser keinen eigenen Mailserver hat, jedoch funktioniert es auch dort, wenn man einen externen Mailserver benutzt.

[Bearbeiten] Normale Mails

Die Grundstruktur der E-Mail-Funktion ist so aufgebaut:

 <?php
 mail(Empfängeremail, Betreff, Nachricht, 'From: Absender <Absenderemail>');
 ?>

Ein Beispiel ist dann

 <?php
 $empfaenger = 'emailadresse@irgendwas.blabla";
 $empfaengername = 'Fritz Müller';
 $sender = 'Anonymus';
 $sendermail = 'anonymus@anonymus.anonym';
 $betreff = 'Wikibooks';
 $text = "Hallo $empfaengername!
 ich habe heute die Wikibooks (http://de.wikibooks.org) entdeckt. Dort gibt es viele Anleitungen und Tutorials zu verschiedenen  
 Themen. Das Ganze ist auf dem System der Wikipedia (de.wikipedia.org) aufgebaut, d.h. jeder (man muss sich nicht mal anmelden) kann 
 alles bearbeiten und erweitern.

 $sender";
 mail($empfaenger, $betreff, $text, "From: $sender <$sendermail>");
 ?>

[Bearbeiten] HTML-Mails

Um HTML-Emails zu versenden, muss die Variable extra noch dazu:

 <?php
 $empfaenger = 'emailadresse@irgendwas.blabla';
 $empfaengername = 'Fritz Müller';
 $sender = 'Anonymus';
 $sendermail = 'anonymus@anonymus.anonym';
 $extra = "From: $sender <$sendermail>\n";
 $extra .= "Content-Type: text/html\n Content-Transfer-Encoding: 8bit\n";
 $betreff = 'Wikibooks';
 $text = "Hallo $empfaengername!<br><br>
 ich habe heute die Wikibooks (http://de.wikibooks.org) entdeckt. Dort gibt es viele Anleitungen und Tutorials zu verschiedenen                                                  
 Themen. Das Ganze ist auf dem System der Wikipedia (de.wikipedia.org) aufgebaut, d.h. jeder (man muss sich nicht mal anmelden) kann 
 alles bearbeiten und erweitern.<br /><br />
 $sender";
 mail($empfaenger, $betreff, $text, $extra);
  ?>

[Bearbeiten] SMTP-Mail

Hierbei wird via manuellem Connect zu einem Mailserver eine Mail gesendet. Der Code wurde der Datei "smtp.php" aus dem Paket "phpBB2" entnommen. Datei-Identifikation: "$Id: smtp.php,v 1.16.2.9 2003/07/18 16:34:01 acydburn Exp $"

	// Ok we have error checked as much as we can to this point let's get on
	// it already.
	if( !$socket = fsockopen($board_config['smtp_host'], 25, $errno, $errstr, 20) )
	{
		message_die(GENERAL_ERROR, "Could not connect to smtp host : $errno : $errstr", "", __LINE__, __FILE__);
	}

	// Wait for reply
	server_parse($socket, "220", __LINE__);

	// Do we want to use AUTH?, send RFC2554 EHLO, else send RFC821 HELO
	// This improved as provided by SirSir to accomodate
	if( !empty($board_config['smtp_username']) && !empty($board_config['smtp_password']) )
	{ 
		fputs($socket, "EHLO " . $board_config['smtp_host'] . "\r\n");
		server_parse($socket, "250", __LINE__);

		fputs($socket, "AUTH LOGIN\r\n");
		server_parse($socket, "334", __LINE__);

		fputs($socket, base64_encode($board_config['smtp_username']) . "\r\n");
		server_parse($socket, "334", __LINE__);

		fputs($socket, base64_encode($board_config['smtp_password']) . "\r\n");
		server_parse($socket, "235", __LINE__);
	}
	else
	{
		fputs($socket, "HELO " . $board_config['smtp_host'] . "\r\n");
		server_parse($socket, "250", __LINE__);
	}

	// From this point onward most server response codes should be 250
	// Specify who the mail is from....
	fputs($socket, "MAIL FROM: <" . $board_config['board_email'] . ">\r\n");
	server_parse($socket, "250", __LINE__);

	// Specify each user to send to and build to header.
        fputs($socket, "RCPT TO: <$mail_to>\r\n");

	// Ok now we tell the server we are ready to start sending data
	fputs($socket, "DATA\r\n");

	// This is the last response code we look for until the end of the message.
	server_parse($socket, "354", __LINE__);

	// Send the Subject Line...
	fputs($socket, "Subject: $subject\r\n");

	// Now the To Header.
	fputs($socket, "To: $mail_to\r\n");

	// Now any custom headers....
	fputs($socket, "$headers\r\n\r\n");

	// Ok now we are ready for the message...
	fputs($socket, "$message\r\n");

	// Ok the all the ingredients are mixed in let's cook this puppy...
	fputs($socket, ".\r\n");
	server_parse($socket, "250", __LINE__);

	// Now tell the server we are done and close the socket...
	fputs($socket, "QUIT\r\n");
	fclose($socket);

[Bearbeiten] Zufall

Mit PHP Zufallszahlen zu erstellen geht ganz einfach:

 <?php
 $zufallszahl = rand(1, 999);
 ?>

Die Erste Zahl in der Klammer gibt die minimale Zahl an, die zweite die maximale. Hier ist die Zufallszahl also eine Zahl zwischen 1 und 999.

Für alle PHP-Versionen bis 4.2.0 sollte man vor rand() einen Startwert festlegen, damit man nicht immer die gleichen Zahlen bekommt. Dies kann man mit

 <?php
 srand ((double)microtime()*1000000);
 ?>

machen.

Persönliche Werkzeuge