jQuery

9. Mehrfachverzweigung ( switch )
<?php // Variablen mit Werten füllen $vorname = "John"; $nachname = "Doe"; echo $vorname . " " . $nachname ; ?>
<?php $zahl1 = 1000; $zahl2 = 2000; echo "Die Zahl1 = " . $zahl1 . "<br />"; echo "Die Zahl2 = " . $zahl2 . "<br />"; ?> <div>HTML Anweisungen zwischendurch sind kein Problem!</div> <?php $zahl1 = 5000; echo "Die Zahl1 wurde verändert <br />"; echo "Die Zahl1 = " . $zahl1 . "<br />"; ?>
<?php // Konstanten anlegen define( "MWST", 19 ) ; define( "VERSION", "3.1 Beta" ) ; // Konstanten ausgeben echo MWST . "<br />"; echo VERSION . "<br />"; ?>
<?php // Beispiel addition $zahl1 = 50.5; $zahl2 = 25.3; $summe = $zahl1 + $zahl2; echo $summe; // Beispiel Inkrement $zahl = 50; $zahl += 1; echo $zahl; // Beispiel Verkettung $feld = "John"; $feld .= " Doe "; echo $feld; ?>
<!Doctype html> <html> <head> <title>Zusammenrechnen von 2 Zahlen</title> </head> <body> <h2>Kleines Rechnenprogramm</h2> <hr /> <div>Gib 2 Zahlen ein:</div> <form action="ergebnis.php" method="POST"> <table> <tr> <td>Zahl1:</td> <td> <input type="text" name="zahl1"> </td> </tr> <tr> <td>Zahl2:</td> <td> <input type="text" name="zahl2"> </td> </tr> <tr> <td></td> <td> <input type="submit" value="rechne"> </td> </tr> </table> </form> </body> </html>
<!-- Datei: ergebnis.php --> <!Doctype html> <html> <head> <title>Zusammenrechnen von 2 Zahlen</title> </head> <body> <h2>Ergebnis</h2> <table> <tr> <td>Zahl1</td> <td align="right"> <?php echo $_REQUEST["zahl1"] ?> </td> </tr> <tr> <td>Zahl2</td> <td align="right"> <?php echo $_REQUEST["zahl2"] ?> </td> </tr> <tr> <td align="right">Summe</td> <td> <?php echo $_REQUEST["zahl1"] + $_REQUEST["zahl2"] ?> </td> </tr> </table> </body> </html>
<?php $zustand = 1; if ( $zustand == 5 ) { echo "Der Zustand ist 5"; } else { echo "Der Zustand ist nicht 5"; } ?>
<?php // Beispiel mit Zahlen if ( 0 ) { echo "JA"; } else { echo "NEIN"; } // Kurzschreibweise (ternary operation) $zustand = 7; $antwort = ( $zustand == 7 ) ? "j" : "n"; echo "<div>" . $antwort . "</div>"; ?>
<?php $menu = 12; switch ( $menu ) { case 1: echo "Menu 1 gewählt <br />"; break; case 2: echo "Menu 2 gewählt <br />"; break; case 3: echo "Menu 3 gewählt <br />"; break; case 4: echo "Menu 4 gewählt <br />"; break; default: echo "Dieses Menü gibt es nicht"; } ?>
<?php for ( $i = 0; $i < 10; $i++ ) { echo $i . "<br />"; } ?>Ein witziges Anwendungsbeispiel mit Zählerschleife und Modulo Operator.
<?php for ($i = 1; $i <= 100; $i++) { // Zufallszahlen von 16 bis 255 generieren $rot = rand(16, 255); $blau = rand(16, 255); $gruen = rand(16, 255); // CSS Background erzeugen $background = "#" . dechex($rot) . dechex($blau) . dechex($gruen); // Teile durch zwei und ermittele Rest mit dem Modulo Operator if ($i % 2) { echo "<div style='float:left; width:50px; background: " . $background . "; border:1px solid #333; margin:4px; padding:10px;'> ".$background." </div>"; } else { echo "<div style='float:left; width:50px; border:1px solid #333; margin:4px; padding: 10px;'> weiß </div>"; } // nach jedem 10. Div die Zeile umbrechen if ($i % 10) { } else { echo "<div style='clear: both;'></div>"; } } ?>
<?php // Index organisierte Arrays $zahl[0] = 100; $zahl[1] = 200; // Assoziative Arrays $adresse["vorname"] = "John"; $adresse["nachname"] = "Doe"; $adresse["plz"] = "70123"; $adresse["ort"] = "Stuttgart"; ?>Ausgabe der Arrays über den Index
echo $zahl[0];Assoziative Ausgabe
echo $adresse['plz'] . " " . $adresse['ort'];Ausgabe mit foreach
foreach( $adresse as $key => $wert ) { echo $key . " : " . $wert . "<br />" ; }PHP Grundlagen 2
// file: myfunctions.php // Beispiel Funktion zeichnet 100 Divs function zeichen100divs() { for ( $i= 0; $i < 100; $i++ ) { echo "<div style='border:1px solid #aaa; width:20px; padding:2px; margin:2px;'>" . $i . "</div>"; } }
// file: myfunctions.php function initialien( $para_vorname, $para_nachname ) { $initialeVN = substr( $para_vorname, 0, 1); $initialeNN = substr( $para_nachname, 0, 1); return $initialeVN . "." . $initialeNN . "."; }Und so wird die Funktion verwendet
<?php $vorname = "Hans"; $nachname = "Meiser"; $in = initialien( $vorname, $nachname ); ?> <p> Die Initialien von <?php echo $vorname; ?> und <?php echo $nachname ?> lauten: <?php echo $in ?> </p>
// file: record.class.php class Record { public function retrieveData() { $data = "test Datenausgabe"; return $data; } }Verwendung
// file: use_class.php require_once "record.class.php"; // klasse laden $record = new Record(); // methode aufrufen $result = $record->retrieveData(); echo $result;
Unter Debian basierenden Systemen läuft der Apache Dienst mit dem User www-data.
Will man das ändern, zum Beispiel weil sich mehrere User mit unterschiedlichen VHOSTS verbinden und Dateien per SFTP austauschen wollen,
dann empfiehlt es sich auf FCGID umzustellen.
Wichtig
Ein Parallelbetrieb mit php modul und fcgi ist nicht möglich!
apt install libapache2-mod-fcgid apache2-suexec-pristine php7.2-cgi
# a2dismod php7.2 # a2enmod fcgid # a2enmod suexec
Die Größe der upload_max_filesize in der php.ini Datei muss mit dieser Einstellung übereinstimmen!
# /etc/apache2/mods-available/fcgid.conf ... MaxRequestLen 131072 ...
(Angaben in Byte)
# /usr/lib/apache2/suexec -V -D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=100 -D AP_HTTPD_USER="www-data" -D AP_LOG_EXEC="/var/log/apache2/suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=100 -D AP_USERDIR_SUFFIX="public_html"
Suexec erwartet die Scripte im DOC_ROOT
# mkdir -p /var/www/php-fcgid
Das FCGIWrapper Script sollte so ausehen:
# /var/www/php-fcgid/fcgid-starter #!/bin/sh PHPRC=/etc/php/7.2/cgi export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/lib/cgi-bin/php
Die Variable PCHPRC gibt an welche php.ini Datei verwendet werden soll.
Hier ein paar empfohlene Einstellungen:
/etc/php/7.2/cgi/php.ini ... post_max_size = 64M upload_max_filesize = 64M cgi.fix_pathinfo = 1
In unserem Beispiel soll der User web1 verwendet werden.
adduser web1 --home /your/docroot
Rechte für das FCGI Wrapper Script einrichten
# chown -R web1:web1 /var/www/php-fcgid # chmod -R u+x /var/www/php-fcgid/fcgid-starter
<VirtualHost *:80> ServerName your-page.localhost DocumentRoot "/your/docroot/" DirectoryIndex index.php SuexecUserGroup "web1" "web1" <Directory "/your/docroot/"> Options Indexes FollowSymLinks ExecCGI AddHandler fcgid-script .php FCGIWrapper /var/www/php-fcgid/fcgid-starter .php AllowOverride All Allow from All Require all granted </Directory> </VirtualHost>
Die Rechte für /your/docroot sollten entsprechend gesetzt sein!
# chown -R web1:web1 /your/docroot/
Jetzt den Apache2 Dienst neu starten und testen!
service apache2 restart
/var/log/syslog /var/log/apache2/suexec.log /var/log/apache2/error.log
service sql teil an windows efi men zeitenspiegel datenbanken partner anzeigen industriel tesat microsoft metabo tabelle individuelle bundle route thinkingobjects backup regelmann grundlagen server tutorial mysql datenbank linux te php ihk login nordschwarzwald suchen sungen software gmbh punkte seiten axians debootstrap installieren default anlegen layout projekt dgm statische symfony crud