ePrivacy and GPDR Cookie Consent by Cookie Consent
Unterstütze unsere Tutorials mit einem WerbeClick!

Wähle eine Howto Kategorie

jQuery

logo jquery jQuery ist eine sehr umfangreiche Javascript Bibliothek mit der sich einfache DOM Manipulationen, effektvolle GUIs und nicht zuletzt recht einfach Ajax Lösungen realisieren lassen. die efi hat zahlreiche Webanwendungen und Content Management Systeme mit Hilfe von jQuery realisiert.

Weiterlesen

PHP Grundlagen

Write a comment

Inhalt

1. Variablen

2. Variablen verketten

3. Konstanten

4. Operatoren

5. Rechnen mit Eingabe

6. Ergebnis ausgeben

7. Einfache Verzweigung

8. Weitere If-Beispiele

9. Mehrfachverzweigung ( switch )

10. Zählerschleifen

11. Arrays

 

 

 

1. Variablen

Variablen beginnen in PHP mit einem $(Dollar) Zeichen!
<?php
    // Variablen mit Werten füllen
    $vorname  = "John";
    $nachname = "Doe";
    echo $vorname . " " . $nachname ;
?>

2. Variablen verketten (php html Mix)

Um Variablen zu verketten, wird ein Punkt verwendet!
<?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 />";
?>

3. Konstanten

Konstanten sollten groß geschrieben werden. Das ist nicht zwingend notwendig, aber allgemein üblich.
<?php
    // Konstanten anlegen
    define( "MWST", 19 ) ;
    define( "VERSION", "3.1 Beta" ) ;
    
    // Konstanten ausgeben
    echo MWST . "<br />";
    echo VERSION . "<br />";
    
?>

4. Operatoren

Wie auch in den Programmiersprachen C/C++, JAVA und JavaScript unterstützt PHP die verkürzte Schreibweise für das Inkrementieren. Das geht auch mit Zeichenketten!
<?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;
?>

5. Rechnen mit Eingabe

In diesem Beispiel werden die eingegebenen Werte an die Datei "ergebnis.php" weitergeleitet. Die Methode POST sorgt dafür, dass die Daten nicht über die URL sichtbar sind. Ändert man das Attribut "method" in " method='GET' ", so werden die Daten über die URL sichtbar.
<!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>

6. Ergebnis ausgeben

Es werden die Eingaben aus dem vorherigen Formular zusammengezählt und ausgegeben.
<!-- 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>

7. Einfache Verzweigung ( if )

Ein einfaches WENN-DANN-SONST Beispiel
<?php
    $zustand = 1;
    
    if ( $zustand == 5 ) {
        
        echo "Der Zustand ist 5";
        
    } else {
        
        echo "Der Zustand ist nicht 5";
        
    }
    
?>

8. Weitere if Beispiele

Die Zahl 0 repräsentiert den NEIN-Fall bei einer If-Anweisung. Mit der so genannten "ternary operation" kann man einzelnen If-Anweisungen angeben!
<?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>";
?>

9. Mehrfachauswahl ( switch )

Mit der Mehrfachauswahl kann eine Variable auf mehrere Zustände getestet werden. In diesem Beispiel wird ein Menü simuliert!
<?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";
        
    }
?>

10. Zählerschleifer ( for )

Einfaches Beispiel. Die Schleife läuft von 0 bis 9.
<?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>";
    }
}
?>

11. Arrays

In PHP gibt es Arrays mit Indizes und so genannte assoziative Arrays bzw. auch Array Hash-Maps genannt. Arrays können mit einer foreach Schleife durchlaufen werden!
<?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

PHP Grundlagen 2

Write a comment

Einfache Funktionen

Funktionen sind Bausteine die man beliebig oft verwenden kann. Durch die Verwendung von Funktionen kann Code-Duplizierung vermieden werden. 
 

TIPP!
Funktionen können auch als Datei ausgelagert werden und mit "require_once <dateiname>" eingebunden werden

 

Die Funktion im Einsatz:

// 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>";
     }
}

Funktionen mit Parameter und Rückgabewerten

Eine Funktion kann viele Parameter haben, kann aber nur eine Variable zurückliefern!
   // 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>

Klassen anlegen und verwenden

Klassen sind eine erweiterte Form von Strukturvariablen. Sie können Werte und Funktionen enthalten.
Will man eine Klasse verwenden so muss diese instanziert werden!

Klassendefinition

// 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;

Apache 2.4 mit FCGI und php 7.2

Write a comment

Vorwort

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!

Pakete installieren

apt install libapache2-mod-fcgid apache2-suexec-pristine php7.2-cgi

Apache Module einrichten

# a2dismod php7.2

# a2enmod fcgid
# a2enmod suexec

Max Upload Size

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)

SUEXEC konfigurieren

# /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

User für FCGI anlegen

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

Apache vHost einrichten

<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

Logfiles für Fehlersuche

/var/log/syslog
/var/log/apache2/suexec.log
/var/log/apache2/error.log

Unterstütze unsere Tutorials mit einem Werbeclick!

Über uns

Wir sind ein agiles Team von Softwareentwicklungen, UX-Designern und IT-Supporten und haben uns auf individuelle Softwarelösung für den Mittelstand spezialisiert. Unsere besondere Stärken sind  Web-Anwendungen mit dem Symfony Framework sowie individuelle Industrielösungen für Produktionslinien, Servicetechniker oder Inspekteure zu entwickeln. Eine weitere Stärke ist die Erweiterung von Content Management Systemen wie beispielsweise Wordpress, Typo3, Drupal und Joomla. Das entwickeln von Apps für Android, Windows und Apple OS Systemen ist selbstverständlich!