php
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| php [2023-09-14 10:49:55] – [PHP-Script um auf eine MS-SQL-Datenbank zuzugreifen] manfred | php [2024-10-14 11:38:17] (aktuell) – [Lösung] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== PHP ====== | ||
| + | |||
| + | automatisch die aktuellste Version runterladen: | ||
| + | > for i in $(links -dump http:// | ||
| + | |||
| + | |||
| + | ===== Bücher ===== | ||
| + | |||
| + | * ISBN-13: '' | ||
| + | |||
| + | |||
| + | ===== Links ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ===== Syntax ===== | ||
| + | |||
| + | |||
| + | ==== allgemeines zur Ausgabe ==== | ||
| + | |||
| + | zeigt alle für die CLI aktivierten Module an | ||
| + | > php -m | ||
| + | |||
| + | zeigt alle für FPM (nginx) aktivierten Module an | ||
| + | > php-fpm8.1 -m | ||
| + | |||
| + | zeigt alle aktiven nginx-Module an | ||
| + | > ls -lha / | ||
| + | |||
| + | |||
| + | === Array anzeigen === | ||
| + | |||
| + | > echo var_export($result); | ||
| + | mysqli_stmt:: | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | )) | ||
| + | |||
| + | > print var_export($result); | ||
| + | mysqli_stmt:: | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | )) | ||
| + | |||
| + | > print_r($result); | ||
| + | mysqli_stmt Object | ||
| + | ( | ||
| + | [affected_rows] => 4 | ||
| + | [insert_id] => 0 | ||
| + | [num_rows] => 4 | ||
| + | [param_count] => 0 | ||
| + | [field_count] => 1 | ||
| + | [errno] => 0 | ||
| + | [error] => | ||
| + | [error_list] => Array | ||
| + | ( | ||
| + | ) | ||
| + | | ||
| + | [sqlstate] => 00000 | ||
| + | [id] => 1 | ||
| + | ) | ||
| + | |||
| + | |||
| + | ==== PHP-Fehler anzeigen ==== | ||
| + | |||
| + | diese zwei Zeilen an den Anfang des fehlerhaften Skriptes setzen: | ||
| + | <?php | ||
| + | ini_set( ' | ||
| + | error_reporting( E_ALL | E_STRICT ); | ||
| + | ... | ||
| + | |||
| + | |||
| + | ==== PHP-Info ==== | ||
| + | |||
| + | <?php | ||
| + | phpinfo(); | ||
| + | ?> | ||
| + | |||
| + | |||
| + | ==== OS-Info ==== | ||
| + | |||
| + | <?php | ||
| + | echo PHP_OS(); | ||
| + | ?> | ||
| + | |||
| + | |||
| + | ==== uname -a ==== | ||
| + | |||
| + | <?php | ||
| + | echo php_uname(a); | ||
| + | ?> | ||
| + | |||
| + | ==== if not ==== | ||
| + | |||
| + | <?php | ||
| + | if($var != ' | ||
| + | ?> | ||
| + | |||
| + | |||
| + | ==== alle variablen ausgeben ==== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | <?php | ||
| + | print_r($_POST); | ||
| + | print_r($GLOBALS, | ||
| + | print_r(get_defined_vars()); | ||
| + | print_r(get_declared_classes()); | ||
| + | print_r(get_defined_functions()); | ||
| + | ?> | ||
| + | |||
| + | <?php | ||
| + | print ' | ||
| + | ?> | ||
| + | |||
| + | |||
| + | ==== Array in Variable speichern ==== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | <file php save_array> | ||
| + | <?php | ||
| + | // Wenn du die Kommata' | ||
| + | $string = implode(",", | ||
| + | | ||
| + | // oder so: | ||
| + | $string = implode(",", | ||
| + | | ||
| + | // Wenn doch: | ||
| + | foreach($array as $value) | ||
| + | { | ||
| + | $string .= $value; | ||
| + | } | ||
| + | | ||
| + | // oder so: | ||
| + | foreach($array as $key => $value) | ||
| + | { | ||
| + | $string .= $key . " = " . $value . " | ||
| + | } | ||
| + | | ||
| + | // hier werden aus dem Array nur die Werte von " | ||
| + | foreach ($_REQUEST as $key => $value) { | ||
| + | if (strncmp($key, | ||
| + | $string .= $value; | ||
| + | } | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | ==== Arrays ausgeben ==== | ||
| + | |||
| + | <file php show_array_1> | ||
| + | foreach($allResults as $key=> | ||
| + | print ($val[" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <file php show_array_2> | ||
| + | foreach($allResults as $value) | ||
| + | { | ||
| + | $string = $value[" | ||
| + | print ($string . " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <file php show_array_3> | ||
| + | foreach($allResults as $value) | ||
| + | { | ||
| + | print ($value[" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <file php show_array_4> | ||
| + | foreach($allResults as $key => $value) | ||
| + | { | ||
| + | print ($key . " | ||
| + | print ($value[" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <file php show_array_5> | ||
| + | foreach($allResults as $key => $value) | ||
| + | { | ||
| + | $string = $key . " | ||
| + | print ($string . " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Das global Schlüsselwort ==== | ||
| + | |||
| + | Um die Variablen innerhalb und außerhalb der Funktion zugänglich zu machen, bietet PHP das Schlüsselwort global. Dieses Schlüsselwort ermöglicht es, außerhalb einer Funktion liegende Variablen "in die Funktion hinein" | ||
| + | |||
| + | Beachten Sie, dass eine Änderung der Variable, die Sie mittels global für die Funktion sichtbar gemacht haben, nicht nur für die Verwendung innerhalb der Funktion gilt, sondern auch außerhalb. | ||
| + | |||
| + | ?> | ||
| + | | ||
| + | <?php | ||
| + | $a = 1; | ||
| + | $b = 2; | ||
| + | | ||
| + | function Summe() | ||
| + | { | ||
| + | global $a; | ||
| + | global $b; | ||
| + | $a = $a + $b; | ||
| + | } | ||
| + | | ||
| + | Summe(); | ||
| + | echo $a; | ||
| + | ?> | ||
| + | |||
| + | |||
| + | ==== Die Verwendung von GLOBALS ==== | ||
| + | |||
| + | <?php | ||
| + | echo print_r($GLOBALS , 1); | ||
| + | ?> | ||
| + | |||
| + | <?php | ||
| + | $name = Fritz; | ||
| + | echo $GLOBALS[" | ||
| + | ?> | ||
| + | |||
| + | <?php | ||
| + | $a = 1; | ||
| + | $b = 2; | ||
| + | | ||
| + | function Summe() | ||
| + | { | ||
| + | $GLOBALS[" | ||
| + | } | ||
| + | | ||
| + | Summe(); | ||
| + | echo $a; | ||
| + | ?> | ||
| + | |||
| + | |||
| + | ==== statische Variablen ==== | ||
| + | |||
| + | Normalerweise würde diese Funktion sinnlos sein, da die Variable " | ||
| + | und nach der Ausgabe erst um " | ||
| + | |||
| + | Da die Variable " | ||
| + | und die Funktion gibt bei jedem Aufruf einen neuen Wert aus, der um " | ||
| + | vorhergehende Wert. | ||
| + | |||
| + | <?php | ||
| + | function Test() | ||
| + | { | ||
| + | static $a = 0; | ||
| + | echo $a; | ||
| + | $a++; | ||
| + | } | ||
| + | ?> | ||
| + | |||
| + | Static-Variablen ermöglichen auch einen Weg zum Umgang mit rekursiven Funktionen. Das sind Funktionen, die sich selbst aufrufen. Hierbei besteht die Gefahr, so genannte Endlos- Schleifen zu programmieren. Sie müssen also einen Weg vorsehen, diese Rekursion zu beenden. Die folgende einfache Funktion zählt rekursiv bis 10. Die statische Variable " | ||
| + | |||
| + | <?php | ||
| + | function Test() | ||
| + | { | ||
| + | static $zaehler = 0; | ||
| + | | ||
| + | $zaehler++; | ||
| + | echo $zaehler; | ||
| + | if ($zaehler < 10) { | ||
| + | Test (); | ||
| + | } | ||
| + | $zaehler--; | ||
| + | } | ||
| + | ?> | ||
| + | |||
| + | Statische Variablen werden wie in oben stehenden Beispielen deklariert. | ||
| + | Das Zuweisen eines Wertes, welcher das Ergebnis eines Ausdrucks ist, wird mit einem //parse error quittiert// | ||
| + | |||
| + | |||
| + | ==== Dateioperationen ==== | ||
| + | |||
| + | siehe [[http:// | ||
| + | |||
| + | ^ mode ^ Beschreibung | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | | ' | ||
| + | |||
| + | |||
| + | ==== Variablen und Dateien ==== | ||
| + | |||
| + | <file php> | ||
| + | <?php | ||
| + | |||
| + | // | ||
| + | // Inhalt der Variable anzeigen | ||
| + | // | ||
| + | echo $test; | ||
| + | |||
| + | // | ||
| + | // GET-Daten in Variablen schreiben | ||
| + | // | ||
| + | $var1 = $_GET[" | ||
| + | $var2 = $_GET[" | ||
| + | $var3 = $_GET[" | ||
| + | $var4 = $_GET[" | ||
| + | |||
| + | // | ||
| + | // Variablen-Inhalt einem SHELL-Script übergeben | ||
| + | // | ||
| + | $KOMMANDO1 = "/ | ||
| + | |||
| + | // | ||
| + | // SHELL-Kommando ausführen | ||
| + | // | ||
| + | echo shell_exec(" | ||
| + | |||
| + | // | ||
| + | // Variablen-Inhalt durch eine Pipe schicken | ||
| + | // | ||
| + | $KOMMANDO2 = " | ||
| + | |||
| + | // | ||
| + | // SHELL-Kommando ausführen | ||
| + | // | ||
| + | echo shell_exec(" | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Variable-Inhalt in eine Datei schreiben ==== | ||
| + | |||
| + | Inhalt der Variablen " | ||
| + | <?php | ||
| + | $dateiname = "/ | ||
| + | $handler = fOpen($dateiname , " | ||
| + | fWrite($handler , $test); | ||
| + | fWrite($handler , " | ||
| + | fClose($handler); | ||
| + | ?> | ||
| + | |||
| + | hiermit kann man nachsehen, welche Daten z.Z. in den Variablen stehen, | ||
| + | alle Variableninhalte werden in die Datei "/ | ||
| + | <?php | ||
| + | $dateiname = "/ | ||
| + | $handler = fOpen($dateiname , " | ||
| + | fWrite($handler , print_r($GLOBALS, | ||
| + | fClose($handler); | ||
| + | ?> | ||
| + | |||
| + | alle Inhalte des HTTP_REFERER in die Datei "/ | ||
| + | <?php | ||
| + | $dateiname = "/ | ||
| + | $handler = fOpen($dateiname , " | ||
| + | fWrite($handler , $_SERVER[" | ||
| + | fClose($handler); | ||
| + | ?> | ||
| + | |||
| + | aus dem HTTP_REFERER soll nur die Info über die Variable " | ||
| + | <?php | ||
| + | $dateiname = "/ | ||
| + | $handler = fOpen($dateiname , " | ||
| + | $_ref = $_SERVER[' | ||
| + | $_ref .= '&'; | ||
| + | preg_match('/& | ||
| + | $RELEASE=$INHALT[1]; | ||
| + | fWrite($handler , $RELEASE); | ||
| + | fClose($handler); | ||
| + | ?> | ||
| + | |||
| + | |||
| + | ==== Inhalt aus einer Datei auslesen ==== | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | <?php | ||
| + | | ||
| + | $datei_name=(" | ||
| + | // | ||
| + | $datei_inhalt=file_get_contents($datei_name); | ||
| + | echo $datei_inhalt; | ||
| + | ?> | ||
| + | |||
| + | |||
| + | ==== Wert aus einer Datei auslesen ==== | ||
| + | |||
| + | Beispiel-Configurationsdatei vorbereiten: | ||
| + | # echo ' | ||
| + | |||
| + | <?php | ||
| + | | ||
| + | $cfgverzeichnis=("/ | ||
| + | $cfgdatei=(" | ||
| + | $cfgdatei_inhalt=file($cfgverzeichnis."/" | ||
| + | foreach ($cfgdatei_inhalt as $index => $zeile) { | ||
| + | if(strncmp($zeile," | ||
| + | $release_wert=substr($line, | ||
| + | } | ||
| + | } | ||
| + | echo $release_wert; | ||
| + | | ||
| + | ?> | ||
| + | |||
| + | - " | ||
| + | - die " | ||
| + | - " | ||
| + | - es sollen " | ||
| + | - auf " | ||
| + | - damit ist die ZEILENLÄNGE minus 11 genau die Zeichenanzahl, | ||
| + | |||
| + | |||
| + | ==== warten bis eine Datei da ist ==== | ||
| + | |||
| + | Hier ist diese nützliche Funktion: | ||
| + | function auf_datei_warten($wartedatei) { | ||
| + | $loop_max=100; | ||
| + | $loop_zahl=0; | ||
| + | while (!file_exists($wartedatei)) { | ||
| + | sleep(1); | ||
| + | $loop_zahl++; | ||
| + | flush(); | ||
| + | if ($loop_zahl > $loop_max) | ||
| + | return false; | ||
| + | } | ||
| + | } | ||
| + | return true; | ||
| + | } | ||
| + | |||
| + | und so setzt man sie beispielsweise ein: | ||
| + | if (auf_datei_warten($dateiname)) { | ||
| + | // Datei ist da, kann los gehen... | ||
| + | // wir geben der Datei noch eine Sekunde extra | ||
| + | sleep(1); | ||
| + | } else { | ||
| + | // Datei ist in der vorgegebenen Zeitspanne nicht eingetroffen. ABBRUCH! | ||
| + | exit(1); | ||
| + | } | ||
| + | |||
| + | |||
| + | ==== Datenbankzugriff ==== | ||
| + | |||
| + | mit Ubuntu werden die im folgenden benötigten Pakete so installiert: | ||
| + | > apt install php5 php5-mysql php5-sybase | ||
| + | |||
| + | |||
| + | === mysql_connect (veraltet) === | ||
| + | |||
| + | <file php> | ||
| + | <?php | ||
| + | // | ||
| + | // Diese Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wurde in PHP 7.0.0 entfernt. | ||
| + | // Verwenden Sie stattdessen die Erweiterungen MySQLi oder PDO_MySQL. | ||
| + | // | ||
| + | |||
| + | $servername = " | ||
| + | $username = " | ||
| + | $password = " | ||
| + | $datenbank = ""; | ||
| + | $dbport = " | ||
| + | |||
| + | // Create connection | ||
| + | $link = mysql_connect($servername . ':' | ||
| + | |||
| + | // Check connection | ||
| + | if (!$link) { | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | exit; | ||
| + | } | ||
| + | |||
| + | echo " | ||
| + | echo " | ||
| + | |||
| + | mysql_close($link); | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | <file php> | ||
| + | <?php | ||
| + | // | ||
| + | // Diese Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wurde in PHP 7.0.0 entfernt. | ||
| + | // Verwenden Sie stattdessen die Erweiterungen MySQLi oder PDO_MySQL. | ||
| + | // | ||
| + | |||
| + | $servername = " | ||
| + | $username = " | ||
| + | $password = " | ||
| + | $datenbank = ""; | ||
| + | $dbport = " | ||
| + | |||
| + | // Create connection | ||
| + | if (!mysql_connect($servername . ':' | ||
| + | echo ' | ||
| + | exit; | ||
| + | } | ||
| + | |||
| + | $sql = "SHOW DATABASES;"; | ||
| + | //$sql = "SHOW TABLES FROM $datenbank"; | ||
| + | $result = mysql_query($sql); | ||
| + | |||
| + | if (!$result) { | ||
| + | echo "DB Fehler, konnte Tabellen nicht auflisten\n"; | ||
| + | echo 'MySQL Fehler: ' . mysql_error(); | ||
| + | exit; | ||
| + | } | ||
| + | |||
| + | $ausgabe = ""; | ||
| + | while ($row = mysql_fetch_row($result)) { | ||
| + | $ausgabe .= " | ||
| + | } | ||
| + | echo $ausgabe; | ||
| + | |||
| + | mysql_free_result($result); | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | |||
| + | === mysqli_connect (alt) === | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | <file php> | ||
| + | <?php | ||
| + | |||
| + | // http:// | ||
| + | // https:// | ||
| + | |||
| + | $servername = $argv[' | ||
| + | $dbport = $argv[' | ||
| + | $username = $argv[' | ||
| + | $password = $argv[' | ||
| + | // | ||
| + | |||
| + | // Create connection | ||
| + | //$link = new mysqli($servername, | ||
| + | $link = new mysqli($servername, | ||
| + | $link -> set_charset(' | ||
| + | |||
| + | if ($link -> connect_errno) { | ||
| + | printf(" | ||
| + | exit(); | ||
| + | } | ||
| + | |||
| + | $sql = "SHOW DATABASES;"; | ||
| + | //$sql = "SHOW TABLES FROM $datenbank"; | ||
| + | // | ||
| + | |||
| + | $result = $link -> prepare($sql); | ||
| + | $result -> execute(); | ||
| + | $result -> store_result(); | ||
| + | $result = mysqli_query($link, | ||
| + | |||
| + | //echo var_export($result); | ||
| + | //print var_export($result); | ||
| + | // | ||
| + | |||
| + | $ausgabe = ""; | ||
| + | while ($row=mysqli_fetch_row($result)) { | ||
| + | $ausgabe .= " | ||
| + | } | ||
| + | |||
| + | echo $ausgabe; | ||
| + | $result -> close(); | ||
| + | $link -> close(); | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | |||
| + | === PDO === | ||
| + | |||
| + | Die Option '' | ||
| + | Ihr ist es scheißegal ob sie auf " | ||
| + | |||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[:: | ||
| + | |||
| + | Ubuntu | ||
| + | > apt install php-cli php-mysql | ||
| + | |||
| + | <file php show_users.php> | ||
| + | # | ||
| + | |||
| + | <?php | ||
| + | // Abfrage definieren | ||
| + | $sql = " | ||
| + | |||
| + | // Verbindung zur Datenbank aufbauen | ||
| + | $dbh = new pdo(' | ||
| + | |||
| + | // Verbindung nutzen | ||
| + | foreach ($dbh-> | ||
| + | echo $row[' | ||
| + | } | ||
| + | |||
| + | // und nach der Nutzung, die Verbindung beenden | ||
| + | $dbh = null; | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | zeigt alle hinterlegten Benutzer an: | ||
| + | > php show_users.php | ||
| + | |||
| + | <file php show_tables.php> | ||
| + | <?php | ||
| + | $sql = "SHOW TABLES"; | ||
| + | $dbh = new pdo(' | ||
| + | foreach ($dbh-> | ||
| + | echo $row[' | ||
| + | } | ||
| + | $dbh = null; | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | zeigt alle Tabellen, aus der Datenbank " | ||
| + | > php show_tables.php | ||
| + | |||
| + | zeigt alle hinterlegten Benutzer an: | ||
| + | > php show_users.php | ||
| + | |||
| + | <file php / | ||
| + | # | ||
| + | |||
| + | <?php | ||
| + | // Argumente | ||
| + | $dbuser = $argv[' | ||
| + | $dbpass = $argv[' | ||
| + | $dbhost = $argv[' | ||
| + | $dbport = $argv[' | ||
| + | |||
| + | // Abfrage definieren | ||
| + | $sql = "SHOW DATABASES;"; | ||
| + | |||
| + | // Verbindung zur Datenbank aufbauen | ||
| + | //$dbh = new pdo(' | ||
| + | $dbh = new pdo(' | ||
| + | |||
| + | // Verbindung nutzen | ||
| + | foreach ($dbh-> | ||
| + | echo $row[' | ||
| + | } | ||
| + | |||
| + | // und nach der Nutzung, die Verbindung beenden | ||
| + | $dbh = null; | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | > / | ||
| + | > / | ||
| + | |||
| + | <file bash / | ||
| + | # | ||
| + | |||
| + | <?php | ||
| + | // Argumente | ||
| + | $dbuser = $argv[' | ||
| + | $dbpass = $argv[' | ||
| + | $dbhost = $argv[' | ||
| + | $dbport = $argv[' | ||
| + | $db_key = $argv[' | ||
| + | $db_crt = $argv[' | ||
| + | $db_ca = $argv[' | ||
| + | |||
| + | // wo sind die PEM-Dateien zu finden? | ||
| + | // | ||
| + | // PDO:: | ||
| + | // PDO:: | ||
| + | // PDO:: | ||
| + | //); | ||
| + | |||
| + | $ssl_optionen=array( | ||
| + | PDO:: | ||
| + | PDO:: | ||
| + | PDO:: | ||
| + | PDO:: | ||
| + | ); | ||
| + | |||
| + | |||
| + | // Abfrage definieren | ||
| + | $sql = "SHOW DATABASES"; | ||
| + | |||
| + | // Verbindung zur Datenbank aufbauen | ||
| + | //$dbh = new pdo(' | ||
| + | try { | ||
| + | $dbh = new PDO( | ||
| + | // ' | ||
| + | ' | ||
| + | ); | ||
| + | } catch (PDOException $e) { | ||
| + | print " | ||
| + | die(); | ||
| + | } | ||
| + | |||
| + | // Verbindung nutzen | ||
| + | // Verbindung nutzen | ||
| + | foreach ($dbh-> | ||
| + | echo $row[' | ||
| + | } | ||
| + | |||
| + | // und nach der Nutzung, die Verbindung beenden | ||
| + | $dbh = null; | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | <file php datenbankzugriff_arg1.php> | ||
| + | # | ||
| + | |||
| + | <?php | ||
| + | // Argumente | ||
| + | $dbuser = $argv[' | ||
| + | $dbpass = $argv[' | ||
| + | $dbhost = $argv[' | ||
| + | $dbport = $argv[' | ||
| + | $dbname = $argv[' | ||
| + | $dbtab = $argv[' | ||
| + | |||
| + | $dbdsn=(' | ||
| + | print " | ||
| + | print " | ||
| + | |||
| + | // Abfrage definieren | ||
| + | $sql = " | ||
| + | print " | ||
| + | print " | ||
| + | |||
| + | // Verbindung zur Datenbank aufbauen | ||
| + | //$dbh = new pdo(' | ||
| + | $dbh = new pdo($dbdsn, $dbuser, $dbpass); | ||
| + | $sql = $dbh-> | ||
| + | $sql-> | ||
| + | |||
| + | // Verbindung nutzen | ||
| + | $total = $sql-> | ||
| + | print " | ||
| + | print " | ||
| + | |||
| + | // und nach der Nutzung, die Verbindung beenden | ||
| + | $dbh = null; | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | > php datenbankzugriff_arg1.php root geheim 192.168.10.1 3306 testdb testtab | ||
| + | |||
| + | <file php datenbankzugriff_arg2.php> | ||
| + | # | ||
| + | |||
| + | <?php | ||
| + | // Argumente | ||
| + | $dbuser = $argv[' | ||
| + | $dbpass = $argv[' | ||
| + | $dbhost = $argv[' | ||
| + | $dbport = $argv[' | ||
| + | $dbname = $argv[' | ||
| + | $dbtab = $argv[' | ||
| + | |||
| + | $dbdsn=(' | ||
| + | print " | ||
| + | print " | ||
| + | |||
| + | // Abfrage definieren | ||
| + | $sql = " | ||
| + | print " | ||
| + | print " | ||
| + | |||
| + | // Verbindung zur Datenbank aufbauen | ||
| + | $dbh = new pdo($dbdsn, $dbuser, $dbpass); | ||
| + | $sql = $dbh-> | ||
| + | $sql-> | ||
| + | |||
| + | while ($row = $sql-> | ||
| + | echo $row[' | ||
| + | } | ||
| + | print " | ||
| + | |||
| + | // und nach der Nutzung, die Verbindung beenden | ||
| + | $dbh = null; | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | > php datenbankzugriff_arg2.php root geheim 192.168.10.1 3306 testdb testtab | ||
| + | |||
| + | |||
| + | <file php datenbankzugriff_arg3.php> | ||
| + | <?php | ||
| + | // Argumente | ||
| + | $dbuser = $argv[' | ||
| + | $dbpass = $argv[' | ||
| + | $dbhost = $argv[' | ||
| + | $dbport = $argv[' | ||
| + | $dbname = $argv[' | ||
| + | $dbtab = $argv[' | ||
| + | |||
| + | $dbdsn=(' | ||
| + | //print " | ||
| + | //print " | ||
| + | |||
| + | // Abfrage definieren | ||
| + | $sql = " | ||
| + | //$sql = " | ||
| + | //print " | ||
| + | //print " | ||
| + | |||
| + | // Verbindung zur Datenbank aufbauen | ||
| + | $dbh = new pdo($dbdsn, $dbuser, $dbpass); | ||
| + | $sql = $dbh-> | ||
| + | $sql-> | ||
| + | |||
| + | // Datei öffnen | ||
| + | $dateiname = "/ | ||
| + | // | ||
| + | //$handler = fOpen($dateiname , " | ||
| + | $handler = fOpen($dateiname , " | ||
| + | |||
| + | while ($row = $sql-> | ||
| + | //echo $row[' | ||
| + | // | ||
| + | // | ||
| + | fWrite($handler , print_r($row, | ||
| + | } | ||
| + | //print " | ||
| + | |||
| + | // Datei wieder schließen | ||
| + | fClose($handler); | ||
| + | |||
| + | // und nach der Nutzung, die Verbindung beenden | ||
| + | $dbh = null; | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | > php datenbankzugriff_arg3.php root geheim 192.168.10.1 3306 testdb testtab | ||
| + | |||
| + | Der Inhalt der Datei ''/ | ||
| + | |||
| + | In der foldenden wird bei einem Verbindungsfehler, | ||
| + | <file php datenbankzugriff_arg4.php> | ||
| + | <?php | ||
| + | // | ||
| + | // apt install php5 php5-mysql | ||
| + | // | ||
| + | |||
| + | // Argumente | ||
| + | $dbuser = $argv[' | ||
| + | $dbpass = $argv[' | ||
| + | $dbhost = $argv[' | ||
| + | $dbport = $argv[' | ||
| + | $dbname = $argv[' | ||
| + | $dbtab = $argv[' | ||
| + | |||
| + | $dbdsn=(' | ||
| + | //print " | ||
| + | //print " | ||
| + | |||
| + | // Abfrage definieren | ||
| + | $sql = " | ||
| + | //$sql = " | ||
| + | //print " | ||
| + | //print " | ||
| + | |||
| + | // Fehlerdatei öffnen | ||
| + | $fehlerdatei = "/ | ||
| + | $fehlerhandler = fOpen($fehlerdatei , " | ||
| + | |||
| + | // Verbindung zur Datenbank aufbauen | ||
| + | try { | ||
| + | $dbh = new pdo($dbdsn, $dbuser, $dbpass); | ||
| + | $dbh-> | ||
| + | $dbh-> | ||
| + | |||
| + | $sql = $dbh-> | ||
| + | $sql-> | ||
| + | |||
| + | } | ||
| + | catch(Exception $e) { | ||
| + | fWrite($fehlerhandler , date(date(" | ||
| + | } | ||
| + | |||
| + | // Datei öffnen | ||
| + | $infodatei = "/ | ||
| + | $infohandler = fOpen($infodatei , " | ||
| + | |||
| + | // Daten aus der DB abrufen | ||
| + | while ($row = $sql-> | ||
| + | //echo $row[' | ||
| + | // | ||
| + | // | ||
| + | fWrite($infohandler , print_r($row, | ||
| + | } | ||
| + | //print " | ||
| + | |||
| + | // Datei wieder schließen | ||
| + | fClose($fehlerhandler); | ||
| + | fClose($infohandler); | ||
| + | |||
| + | // und nach der Nutzung, die Verbindung beenden | ||
| + | $dbh = null; | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | <file php show_databases.php> | ||
| + | <?php | ||
| + | |||
| + | $servername = $argv[' | ||
| + | $dbport = $argv[' | ||
| + | $username = $argv[' | ||
| + | $password = $argv[' | ||
| + | |||
| + | // Verbindung zur Datenbank aufbauen | ||
| + | try | ||
| + | { | ||
| + | $link = new PDO(" | ||
| + | // set the PDO error mode to exception | ||
| + | // | ||
| + | //echo " | ||
| + | } | ||
| + | |||
| + | catch(PDOException $e) | ||
| + | { | ||
| + | echo " | ||
| + | } | ||
| + | |||
| + | // Abfrage definieren | ||
| + | $sql = "SHOW DATABASES;"; | ||
| + | $stmt = $link-> | ||
| + | $row_count = $stmt-> | ||
| + | //echo $row_count.' | ||
| + | $results = $stmt-> | ||
| + | //echo var_export($results); | ||
| + | $ausgabe = ""; | ||
| + | foreach ($results as $a) | ||
| + | { | ||
| + | foreach ($a as $key => $value) | ||
| + | { | ||
| + | //echo $key . " = " . $value . " | ||
| + | //echo $value[$key] . " | ||
| + | $ausgabe .= $key . " = " . $value . " | ||
| + | //$ausgabe .= $value[$key] . " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | //echo " | ||
| + | echo $ausgabe; | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | > php db-test_pdo.php 192.168.0.10 3306 root geheim | ||
| + | Database = information_schema | ||
| + | Database = meinedb | ||
| + | Database = mysql | ||
| + | Database = performance_schema | ||
| + | |||
| + | |||
| + | <file php show_tables.php> | ||
| + | <?php | ||
| + | |||
| + | $servername = $argv[' | ||
| + | $dbport = $argv[' | ||
| + | $username = $argv[' | ||
| + | $password = $argv[' | ||
| + | $datenbank = $argv[' | ||
| + | |||
| + | // Verbindung zur Datenbank aufbauen | ||
| + | try | ||
| + | { | ||
| + | $link = new PDO(" | ||
| + | // set the PDO error mode to exception | ||
| + | // | ||
| + | //echo " | ||
| + | } | ||
| + | |||
| + | catch(PDOException $e) | ||
| + | { | ||
| + | echo " | ||
| + | } | ||
| + | |||
| + | // Abfrage definieren | ||
| + | $sql = "SHOW TABLES;"; | ||
| + | $stmt = $link-> | ||
| + | $row_count = $stmt-> | ||
| + | //echo $row_count.' | ||
| + | $results = $stmt-> | ||
| + | //echo var_export($results); | ||
| + | $ausgabe = ""; | ||
| + | foreach ($results as $a) | ||
| + | { | ||
| + | foreach ($a as $key => $value) | ||
| + | { | ||
| + | //echo $key . " = " . $value . " | ||
| + | //echo $value[$key] . " | ||
| + | $ausgabe .= $key . " = " . $value . " | ||
| + | //$ausgabe .= $value[$key] . " | ||
| + | } | ||
| + | } | ||
| + | |||
| + | //echo " | ||
| + | echo $ausgabe; | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | > php db-test_pdo.php 192.168.0.10 3306 root geheim meinedb | ||
| + | Tables_in_meinedb = name | ||
| + | Tables_in_meinedb = vorname | ||
| + | Tables_in_meinedb = geburtstag | ||
| + | |||
| + | |||
| + | === PHP-Script um auf eine MS-SQL-Datenbank zuzugreifen === | ||
| + | |||
| + | Damit der DB-Zugriff per '' | ||
| + | > echo " | ||
| + | |||
| + | **Die Funktion '' | ||
| + | <file php mssqlshow.php> | ||
| + | <?php | ||
| + | # | ||
| + | # http:// | ||
| + | # | ||
| + | |||
| + | $dbhandle = mssql_connect(' | ||
| + | if (!$dbhandle || !mssql_select_db(' | ||
| + | die(' | ||
| + | }else{ | ||
| + | echo" | ||
| + | } | ||
| + | |||
| + | ### eine Möglichkeit, | ||
| + | $v = mssql_query(" | ||
| + | or die('A error occured: ' . mysql_error()); | ||
| + | $row = mssql_fetch_array($v); | ||
| + | print " | ||
| + | echo $row[0]; | ||
| + | print " | ||
| + | |||
| + | ### eine andere Möglichkeit, | ||
| + | $v = mssql_query(" | ||
| + | or die('A error occured: ' . mysql_error()); | ||
| + | $row = mssql_fetch_array($v); | ||
| + | print " | ||
| + | echo $row[0]; | ||
| + | print " | ||
| + | |||
| + | mssql_free_result($v); | ||
| + | mssql_close($dbhandle); | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | <file php mssql_show.php> | ||
| + | <?php | ||
| + | // | ||
| + | // http:// | ||
| + | // http:// | ||
| + | // | ||
| + | |||
| + | // Argumente | ||
| + | $dbdriver = $argv[' | ||
| + | $dbuser = $argv[' | ||
| + | $dbpass = $argv[' | ||
| + | $dbhost = $argv[' | ||
| + | $dbport = $argv[' | ||
| + | $dbname = $argv[' | ||
| + | |||
| + | // das Ziel zusammenstellen | ||
| + | $dsn = $dbdriver . ': | ||
| + | |||
| + | // mit DB verbinden | ||
| + | try {$connection = new PDO($dsn, $dbuser, $dbpass); | ||
| + | } catch (PDOException $e) { | ||
| + | die(' | ||
| + | } | ||
| + | |||
| + | // die Tabellen anzeigen lassen | ||
| + | $stmt = $connection-> | ||
| + | $stmt-> | ||
| + | |||
| + | // alles anzeigen | ||
| + | $allResults = $stmt-> | ||
| + | // | ||
| + | |||
| + | foreach($allResults as $key=> | ||
| + | print ($val[" | ||
| + | } | ||
| + | |||
| + | // alles wieder zu machen | ||
| + | mssql_free_result($stmt); | ||
| + | mssql_free_result($allResults); | ||
| + | mssql_close($connection); | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | Beispiel: | ||
| + | > php mssql_show.php dblib Benutzer geheimesPasswort 192.168.0.33 49411 DatenbankName | ||
| + | |||
| + | |||
| + | <file php mssql_show_databases.php> | ||
| + | <?php | ||
| + | |||
| + | // | ||
| + | // Verbindung zu einer MS-SQL-DB | ||
| + | // | ||
| + | |||
| + | // Argumente | ||
| + | $dbuser = ' | ||
| + | $dbpass = ' | ||
| + | $dbhost = ' | ||
| + | $dbport = ' | ||
| + | $dbname = ' | ||
| + | $dbdrvr = ' | ||
| + | |||
| + | // Abfrage definieren | ||
| + | $sql = " | ||
| + | |||
| + | // Verbindung zur Datenbank aufbauen | ||
| + | $dbh = new pdo($dbdrvr . ': | ||
| + | |||
| + | foreach ($dbh-> | ||
| + | echo "| " . $row[' | ||
| + | } | ||
| + | |||
| + | // und nach der Nutzung, die Verbindung beenden | ||
| + | $dbh = null; | ||
| + | |||
| + | exit(); | ||
| + | ?> | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | === MySQL-Datenbankzugriff über eine per SSL/TLS verschlüsselte Verbindung === | ||
| + | |||
| + | [[:: | ||
| + | |||
| + | |||
| + | ===== PHP-Script um Spammer zu finden ===== | ||
| + | |||
| + | Um einen Spammer zu finden, der per PHP-Befehl Mails versendet, gibt es einen | ||
| + | einfachen Trick - man verwendet ein Handlerscript. | ||
| + | |||
| + | Man lässt die Mails von PHP nicht direkt an sendmail senden, sondern an ein | ||
| + | Script, welches zuerst einen Syslog-Eintrag vornimmt und dann die Mail an | ||
| + | sendmail weitergibt. Dabei setzt das Script vor die Mail (also als erste | ||
| + | Headerzeile) eine Zeile, die den Web-User enthält. | ||
| + | |||
| + | So kann man sowohl im Syslog-Logfile zählen, wer wie viele Mails verschickt wie | ||
| + | auch im Header der Mail bei Abuse-Beschwerden sehen, wer die Nachrichten | ||
| + | versendet hat. | ||
| + | |||
| + | Folgendes Script kann hier eingesetzt werden: | ||
| + | --------------------------------------------- | ||
| + | #!/bin/bash | ||
| + | logger -t sendmail-php -- Message sent from $1 &> /dev/null | ||
| + | ( | ||
| + | echo " | ||
| + | cat | ||
| + | ) | / | ||
| + | |||
| + | |||
| + | Das Script wird unter / | ||
| + | chmod 755 / | ||
| + | ausführbar gemacht. | ||
| + | |||
| + | Nun muss man noch dafür sorgen, dass PHP nicht mehr sendmail nutzt, sondern | ||
| + | sendmail-php. Dies lässt sich bei Systemen ohne Confixx in den VirtualHost | ||
| + | Einstellungen von Apache machen: | ||
| + | |||
| + | < | ||
| + | ... | ||
| + | php_admin_value sendmail_path "/ | ||
| + | </ | ||
| + | |||
| + | Auf Rechnern mit Confixx lässt sich das für mehrere User gleichzeitig setzen, wenn man | ||
| + | folgende Zeile bei httpd-specials für den User setzt: | ||
| + | |||
| + | php_admin_value sendmail_path "/ | ||
| + | |||
| + | Die Funktion kann man testen, indem man folgendes PHP-Script in ein | ||
| + | Webverzeichnis setzt und per http aufruft: | ||
| + | |||
| + | <?php | ||
| + | $from=" | ||
| + | $to=" | ||
| + | $subject=" | ||
| + | $message=" | ||
| + | mail($to, $subject, $message, "From: $from" | ||
| + | echo "< | ||
| + | ?> | ||
| + | |||
| + | Dies sollte folgenden Eintrag im Syslog (/ | ||
| + | / | ||
| + | |||
| + | Jun 30 18:00:00 hostname sendmail-php: | ||
| + | |||
| + | Einen Ueberblick erhä man schnell durch folgendes Kommando: | ||
| + | |||
| + | cat / | ||
| + | |||
| + | Weiterhin sollte die Nachricht direkt unter den Received Zeilen folgenden | ||
| + | Header enthalten: | ||
| + | |||
| + | X-ConfixxWeb: | ||
| + | |||
| + | Spamnachrichten lassen sich damit schnell einem User zuordnen. | ||
| + | |||
| + | Mit folgendem Kommando lä sich herausfinden, | ||
| + | Syslog wie viele Nachrichten versendet hat: | ||
| + | |||
| + | grep sendmail-php / | ||
| + | |||
| + | |||
| + | ===== PHP-Script um das Format von Bildern zu ermitteln ===== | ||
| + | |||
| + | * [[dateinamen_und_verzeichnisnamen_automatisiert_aendern# | ||
| + | |||
| + | |||
| + | ==== / | ||
| + | |||
| + | #!/bin/php | ||
| + | | ||
| + | <?php | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | | ||
| + | $info = getimagesize ($argv[' | ||
| + | | ||
| + | print $info[' | ||
| + | | ||
| + | #print " | ||
| + | #print $info[' | ||
| + | ?> | ||
| + | |||
| + | |||
| + | ==== Beispiel ==== | ||
| + | |||
| + | Damit dieses Script unter FreeBSD genauso funktioniert, | ||
| + | wie unter Linux, muss ein symbolischer Link angelegt werden: | ||
| + | # ln -s / | ||
| + | |||
| + | So benutzt man das Script: | ||
| + | # / | ||
| + | | ||
| + | 2272x1704 | ||
| + | |||
| + | |||
| + | |||
| + | ===== Array in einen String umwandeln und dann mit SED und GREP bearbeiten ===== | ||
| + | |||
| + | |||
| + | ==== Aufgabenstellung ==== | ||
| + | |||
| + | Im Array " | ||
| + | [" | ||
| + | |||
| + | In dieser Zeichenkette gibt es die beiden Schlüsselwörter " | ||
| + | Leider ist das Schlüsselwort " | ||
| + | Um den richtigen Wert von den 5 " | ||
| + | Der richtige Wert bzw. der gesuchte Wert von " | ||
| + | |||
| + | Zum Beispiel | ||
| + | pool_lun_name=test1_lun | ||
| + | pool_lun_snap_name=test1_lun.20180813125125 | ||
| + | |||
| + | Also wird der " | ||
| + | |||
| + | |||
| + | ==== Lösung ==== | ||
| + | |||
| + | <file c _SERVER> | ||
| + | _SERVER: | ||
| + | array(60) { | ||
| + | [" | ||
| + | string(2) " | ||
| + | [" | ||
| + | string(9) " | ||
| + | [" | ||
| + | string(20) " | ||
| + | [" | ||
| + | string(13) " | ||
| + | [" | ||
| + | string(14) " | ||
| + | [" | ||
| + | string(7) " | ||
| + | [" | ||
| + | string(4) " | ||
| + | [" | ||
| + | string(4) " | ||
| + | [" | ||
| + | string(27) " | ||
| + | [" | ||
| + | string(5) " | ||
| + | [" | ||
| + | string(3) " | ||
| + | [" | ||
| + | string(3) " | ||
| + | [" | ||
| + | string(4) " | ||
| + | [" | ||
| + | string(1) " | ||
| + | [" | ||
| + | string(2) " | ||
| + | [" | ||
| + | string(24) "Jun 1 09:00:00 2015 GMT" | ||
| + | [" | ||
| + | string(24) "Jun 2 09:00:00 2020 GMT" | ||
| + | [" | ||
| + | string(12) " | ||
| + | [" | ||
| + | string(23) " | ||
| + | [" | ||
| + | string(13) " | ||
| + | [" | ||
| + | string(23) " | ||
| + | [" | ||
| + | string(64) " | ||
| + | [" | ||
| + | string(7) " | ||
| + | [" | ||
| + | string(10) " | ||
| + | [" | ||
| + | string(76) " | ||
| + | [" | ||
| + | string(63) " | ||
| + | [" | ||
| + | string(35) " | ||
| + | [" | ||
| + | string(17) "gzip, deflate, br" | ||
| + | [" | ||
| + | string(349) " | ||
| + | [" | ||
| + | string(48) " | ||
| + | [" | ||
| + | string(1) " | ||
| + | [" | ||
| + | string(10) " | ||
| + | [" | ||
| + | string(1) " | ||
| + | [" | ||
| + | string(60) "/ | ||
| + | [" | ||
| + | string(71) " | ||
| + | Apache/ | ||
| + | |||
| + | " | ||
| + | [" | ||
| + | string(21) " | ||
| + | [" | ||
| + | string(10) " | ||
| + | [" | ||
| + | string(10) " | ||
| + | [" | ||
| + | string(3) " | ||
| + | [" | ||
| + | string(9) " | ||
| + | [" | ||
| + | string(8) "/ | ||
| + | [" | ||
| + | string(5) " | ||
| + | [" | ||
| + | string(0) "" | ||
| + | [" | ||
| + | string(8) "/ | ||
| + | [" | ||
| + | string(19) " | ||
| + | [" | ||
| + | string(67) "/ | ||
| + | [" | ||
| + | string(5) " | ||
| + | [" | ||
| + | string(7) " | ||
| + | [" | ||
| + | string(5) " | ||
| + | [" | ||
| + | string(7) " | ||
| + | [" | ||
| + | string(8) " | ||
| + | [" | ||
| + | string(3) " | ||
| + | [" | ||
| + | string(743) " | ||
| + | [" | ||
| + | string(803) "/ | ||
| + | [" | ||
| + | string(59) "/ | ||
| + | [" | ||
| + | string(59) "/ | ||
| + | [" | ||
| + | string(7) " | ||
| + | [" | ||
| + | string(10) " | ||
| + | [" | ||
| + | float(1534158435.146) | ||
| + | [" | ||
| + | int(1534158435) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | aus dem Array " | ||
| + | $server_query_array = explode('&', | ||
| + | |||
| + | das eben erzeugte Array wird in einen String umgewandelt: | ||
| + | $server_query_string = implode('&', | ||
| + | |||
| + | in dem String werden die "&" | ||
| + | $neuer_string = preg_replace("/ | ||
| + | |||
| + | hier definieren wir eine Zeichenfolge, | ||
| + | $pattern | ||
| + | |||
| + | hier ermitteln wir die Position, an der das Suchmuster beginnt: | ||
| + | $pool_lun_name_pos = strpos($neuer_string, | ||
| + | |||
| + | hier ermitteln wir, an welcher stelle der Wert nach dem Suchmuster zuende ist: | ||
| + | $pool_lun_name_end = strpos($neuer_string, | ||
| + | |||
| + | hier wird das gesuchte Schlüsselwort (Suchmuster) mit seinem Wert ermittelt: | ||
| + | $pool_lun = trim(substr($neuer_string, | ||
| + | |||
| + | hier wird aus der gefundenen Zeichenfolge nur der Wert gespeichert: | ||
| + | $pool_lun_name = preg_replace("/ | ||
| + | |||
| + | jetzt können wir endlich nach dem richtigen Wert der 5 gleichen Schlüsselwörter suchen, hier wird die Startposition davon abgespeichert: | ||
| + | $pool_lun_snap_name_pos = strpos($neuer_string, | ||
| + | |||
| + | hier wird die Endposition des gesuchten Wertes abgespeichert: | ||
| + | $pool_lun_snap_name_end = strpos($neuer_string, | ||
| + | |||
| + | hier schneiden wir uns aus der gespeicherten Zeichenkette den Wert aus, den wir letztendlich gesucht haben: | ||
| + | $pool_lun_snap_name = trim(substr($neuer_string, | ||
| + | echo $pool_lun_snap_name; | ||
| + | |||
| + | |||
| + | wir wollen die 3 Zeichen " | ||
| + | $string_pos = strpos($datensatz, | ||
| + | $gesuchter_string = trim(substr($datensatz, | ||
| + | bei "... xyz:abc defg: ..." ist die Zeichenkette " | ||
| + | |||
| + | |||
| + | ===== ein kleines Beispiel ===== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | <file bash / | ||
| + | #!/bin/bash | ||
| + | |||
| + | # | ||
| + | # | ||
| + | # Status melden | ||
| + | # | ||
| + | # | ||
| + | |||
| + | if [ " | ||
| + | echo " | ||
| + | fi | ||
| + | </ | ||
| + | |||
| + | <file php / | ||
| + | <?php | ||
| + | /* | ||
| + | Mit diesem Skript sollen der Status gemeldet werden. | ||
| + | */ | ||
| + | |||
| + | // | ||
| + | |||
| + | // | ||
| + | // GET-Daten in Variablen schreiben | ||
| + | // das letzte übergebene Schlüssel-Wert-Paar gilt, | ||
| + | // weil alle anderen überschrieben werden | ||
| + | // | ||
| + | foreach ($_GET as $key => $value) { | ||
| + | if (strncmp($key, | ||
| + | $status .= $value; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // | ||
| + | // | ||
| + | // | ||
| + | |||
| + | //print "/ | ||
| + | |||
| + | // | ||
| + | // Variablen-Inhalt einem SHELL-Script übergeben | ||
| + | // | ||
| + | $KOMMANDO1 = "/ | ||
| + | |||
| + | // | ||
| + | // SHELL-Kommando ausführen | ||
| + | // | ||
| + | echo shell_exec(" | ||
| + | |||
| + | ?> | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | |||
| + | Status | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | > cat / | ||
| + | |||
| + | |||
| + | ===== Zeichenketten mit PHP verschlüsseln ===== | ||
| + | |||
| + | Vorher muß das Paket '' | ||
| + | |||
| + | |||
| + | ==== Vorbereitung für das Beispiel ==== | ||
| + | |||
| + | als erstes benötigen wir ein RSA-Schlüsselpaar: | ||
| + | > openssl genrsa -out openssl_private_key.pem 4096 | ||
| + | > openssl rsa -in openssl_private_key.pem -out openssl_public_key.pem -outform PEM -pubout | ||
| + | |||
| + | |||
| + | ==== ein einfaches Beispiel ==== | ||
| + | |||
| + | > php / | ||
| + | > ls -lha verschluesselt.txt | ||
| + | -rw-rw-r-- 1 fritz fritz 684 Jun 9 17:03 verschluesselt.txt | ||
| + | | ||
| + | > php / | ||
| + | Hallo Welt! | ||
| + | |||
| + | //In diesem Beispiel wird, mit dem ersten Aufruf, die Zeichenkette "'' | ||
| + | Und mit dem zweiten Aufruf wird der Inhalt der Datei wieder entschlüsselt und ausgegeben.// | ||
| + | |||
| + | <file php php_openssl_verschl.php> | ||
| + | <?php | ||
| + | openssl_public_encrypt(" | ||
| + | |||
| + | $dateihandle = fopen(" | ||
| + | $b64crypt = base64_encode(" | ||
| + | |||
| + | fwrite($dateihandle, | ||
| + | fclose($dateihandle); | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | <file php php_openssl_entschl.php> | ||
| + | <?php | ||
| + | $crypttext=base64_decode(trim(file_get_contents(" | ||
| + | |||
| + | openssl_private_decrypt(" | ||
| + | |||
| + | echo " | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Ein- und Ausgabe soll über jeweils eine Datei laufen ==== | ||
| + | |||
| + | > echo "Hallo Welt!" > entschluesselt.txt | ||
| + | > php / | ||
| + | > ls -lha verschluesselt.txt | ||
| + | -rw-rw-r-- 1 fritz fritz 684 Jun 9 17:24 verschluesselt.txt | ||
| + | | ||
| + | > rm entschluesselt.txt | ||
| + | > php / | ||
| + | | ||
| + | > cat entschluesselt.txt ; echo | ||
| + | Hallo Welt! | ||
| + | |||
| + | <file php php_openssl_verschl.php> | ||
| + | <?php | ||
| + | openssl_public_encrypt(trim(file_get_contents(" | ||
| + | |||
| + | $dateihandle = fopen(" | ||
| + | $b64crypt = base64_encode(" | ||
| + | |||
| + | fwrite($dateihandle, | ||
| + | fclose($dateihandle); | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | <file php php_openssl_entschl.php> | ||
| + | <?php | ||
| + | $crypttext=base64_decode(trim(file_get_contents(" | ||
| + | openssl_private_decrypt(" | ||
| + | |||
| + | $dateihandle = fopen(" | ||
| + | |||
| + | fwrite($dateihandle, | ||
| + | fclose($dateihandle); | ||
| + | ?> | ||
| + | </ | ||
| + | |||
