Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Bilder in DB speichern und via PHP-GD ausgeben

Mitglied: Guenni

Guenni (Level 2) - Jetzt verbinden

19.10.2013 um 17:46 Uhr, 5780 Aufrufe, 2 Kommentare, 2 Danke

Betriebssystem: Linux
Webserver: Apache
Datenbank: MySQL
Scriptsprache: PHP

Bilder hochladen, kodieren und in DB speichern.

Um Bilder in einer DB zu speichern, kann man in einer Abfrage ja nicht einfach den Dateinamen angeben, sondern das Bild wird

z.B. mittels eines Formulars hochgeladen. Natürlich war jetzt meine Überlegung, wenn ich ein Bild sowieso hochladen muß,

um es in einer DB zu speichern, dann kann ich doch beides miteinander kombinieren: Upload und/oder Speichern in einer DB

Herausgekommen ist ein Upload-Script mit folgenden Funktionen:

- Das Script speichert Bilder in einem Verzeichnis des Webservers
- Optional kann noch ein Unterverzeichnis angegeben werden
- Via Checkbox kann man entscheiden, ob Bilder nach dem Hochladen noch kodiert und in einer DB gespeichert werden
- Sollen Bilder nur im der DB gespeichert werden, können Bilder nach Upload und Kodierung wieder gelöscht werden

Ein eventuell angelegtes Unterverzeichnis wird nicht gelöscht, da es ja auch noch mehr Bilder und/oder Daten enthalten könnte.

Zusätzlich kann ein Copyright über das Bild gelegt werden, entweder in Form eines einfachen Text und/oder als transparentes Wasserzeichen.

Der Text kann hierbei ein- oder mehrzeilig sein. Soll der Text mehrzeilig sein, so muß ein Array erstellt werden.

Beispiele hierzu finden sich im Script weiter unten.

Verwendete Software auf dem Server

Betriebssystem: Linux
Webserver: Apache
Datenbank: MySQL
Scriptsprache: PHP

Zum Zugriff auf die Datenbank verwende ich PDO. Um aus den kodierten Bilddaten "wieder ein Bild zu machen", wird die GD-Bibliothek benötigt.

Um nachzusehen, ob beides zur Verfügung steht, einfach eine PHP-Seite erstellen, und dort die Funktion phpinfo() aufrufen.

Die Datenbank zum Speichern der Bilddaten

Meine Datenbank zur Aufnahme der kodierten Bilddaten besteht aus einer Tabelle mit lediglich zwei Spalten

- id vom Typ int mit auto_increment
- data vom Typ Text

Upload-Script

Im Upload-Script wird das Root-Verzeichnis des Webservers ermittelt: $pfad=$HTTP_SERVER_VARS['DOCUMENT_ROOT']. An dieses Verzeichnis wird

ein Unterverzeichnis angehangen, in das der Webserver hochgeladene Bilder speichert bzw. weitere Unterverzeichnisse erstellt. Dieses Verzeichnis

muss dem Webserver gehören und er muss Schreib-Leserechte besitzen.


Ein Bild aus der DB laden und im Browser ausgeben

In diesem Script habe ich eine kleine Klasse mit ein paar Methoden erstellt, um aus den Bilddaten wieder ein Bild im Browser auszugeben.

Diese Methoden verwenden Funktionen der GD-Bibliothek. Diese Funktionen haben teilweise eine "ellenlange" Parameterliste. Um nicht

immer alle Parameter angeben zu müssen, sind in den Methoden einige (oder alle) Parameter mit Werten vorbelegt. Will man die Werte ändern,

so müssen die Werte von links nach rechts lückenlos eingegeben werden. Beispiel Textfarbe setzen:

01.
/*
02.
 * Methode um Textfarbe zu setzen, einfacher Text
03.
*/
04.
public function set_text_color($r = 255, $g = 0, $b = 0){ 
05.
  $this->text_color = imagecolorallocate ($this->im, $r, $g, $b);
06.
}
Die Standardfarbe für Text ist rot. Würde man nun die Textfarbe auf grün setzen wollen, so notiert man:

01.
$image->set_text_color(0, 255);
Die Ausgabe eines Bilds habe ich in zwei Dateien vorgenommen:

- Eine Datei für die Klasse
- Eine Datei, in der der Datenbankzugriff erfolgt und die Anwendung der Klasse

Die Klassendatei

01.
<?php
02.
class MyImage{
03.
 /*
04.
 * Das Bild
05.
 */
06.
 private $im;
07.
 /*
08.
 * Das Wasserzeichen
09.
 */
10.
 private $copyright_stamp;
11.
 private $stamp_width;
12.
 private $stamp_heigth;
13.
 /*
14.
 * Textparameter für Wasserzeichen
15.
 */
16.
 private $stamp_font_size;
17.
 private $stamp_font_color;
18.
 private $stamp_text;
19.
 private $text_pos_from_left;
20.
 private $text_pos_from_top;
21.
 /*
22.
 * Textfarbe, einfacher Text
23.
 */
24.
 private $text_color;
25.
 /*
26.
 * Konstruktor für das Bild
27.
 */
28.
 public function __construct($str){
29.
  $this->im = imagecreatefromstring(base64_decode($str));
30.
}
31.
 /*
32.
 * Methode um Textfarbe zu setzen, einfacher Text
33.
 */
34.
 public function set_text_color($r = 255, $g = 0, $b = 0){ 
35.
  $this->text_color = imagecolorallocate ($this->im, $r, $g, $b);
36.
 }
37.
 /*
38.
 * Methode um Text einzufügen, einfacher Text
39.
 */
40.
 public function set_text($text, $from_left = 1, $from_top = 30, $font_size = 5){
41.
  if(is_array($text)){
42.
   foreach($text as $textline){
43.
	  ImageString($this->im, $font_size, $from_left, $from_top, $textline, $this->text_color);
44.
		$from_top += 20;
45.
	 }
46.
	}else{
47.
	 			 ImageString($this->im, $font_size, $from_left, $from_top, $text, $this->text_color);
48.
	 			 }
49.
 }
50.
 /*
51.
 * Methoden um ein transparentes Wasserzeichen einzufügen
52.
 *
53.
 * Ein leeres Bild für das Wasserzeichen erstellen
54.
 */
55.
 public function create_copyright_stamp($width, $heigth){
56.
  $this->stamp_width = $width;
57.
  $this->stamp_heigth = $heigth;
58.
  $this->copyright_stamp = imagecreatetruecolor($width, $heigth);
59.
 }
60.
 /*
61.
 * Das Wasserzeichen erstellen, die Form des Wasserzeichens ist rechteckig
62.
 */
63.
 public function set_stamp($border_width = 10, $pos_from_right = 10, $pos_from_bottom = 10, $transparenz = 50, $border_color = 0xff0000, $body_color = 0x000000){
64.
  $x = 0;
65.
  $y = 0;
66.
  imagefilledrectangle($this->copyright_stamp, $x, $y, $this->stamp_width - 1, $this->stamp_heigth - 1, $border_color);
67.
  imagefilledrectangle($this->copyright_stamp, $x + $border_width, $y + $border_width, $this->stamp_width - $border_width, $this->stamp_heigth - $border_width, $body_color);
68.
  if(is_array($this->stamp_text)){
69.
	 foreach($this->stamp_text as $text){
70.
	  imagestring($this->copyright_stamp, $this->stamp_font_size, $this->text_pos_from_left, $this->text_pos_from_top, $text, $this->stamp_font_color);
71.
	  $this->text_pos_from_top += 20;
72.
	 }
73.
	}else{
74.
				imagestring($this->copyright_stamp, $this->stamp_font_size, $this->text_pos_from_left, $this->text_pos_from_top, $this->stamp_text, $this->stamp_font_color);
75.
  			}
76.
	/*
77.
	* Position des Wasserzeichens
78.
	*/
79.
  $marge_right = $pos_from_right;
80.
  $marge_bottom = $pos_from_bottom;
81.
  $sx = imagesx($this->copyright_stamp);
82.
  $sy = imagesy($this->copyright_stamp);
83.
  /*
84.
	* Das Wasserzeichen über das Bild legen
85.
	*/
86.
  imagecopymerge($this->im, $this->copyright_stamp, imagesx($this->im) - $sx - $marge_right, imagesy($this->im) - $sy - $marge_bottom, 0, 0, imagesx($this->copyright_stamp), imagesy($this->copyright_stamp), 
87.

88.
$transparenz);
89.
}
90.
 /*
91.
 * Textparameter für Wasserzeichen setzen
92.
 */ 
93.
 public function set_stamp_text($text, $from_left = 20, $from_top = 30, $font_size = 5, $text_color = 0xff0000){
94.
  $this->stamp_font_size = $font_size;
95.
  $this->stamp_font_color = $text_color;
96.
  $this->stamp_text = $text;
97.
  $this->text_pos_from_left = $from_left;
98.
  $this->text_pos_from_top = $from_top;
99.
 } 
100.
 /*
101.
 * Bild ausgeben und Speicher freigeben
102.
 */
103.
 public function show(){
104.
  imagejpeg($this->im);
105.
	imagedestroy($this->im);  
106.
 }
107.
}
108.
?>
Anwendung der Klasse in einer Datei

Diese Datei stellt unter Verwendung der eingebundenen Klasse das Bild dar. Diese Datei kann im Browser aufgerufen werden, oder man gibt sie

in einer PHP-Datei als Bildresource an: <img src = "mein_bild.php">

01.
<?php
02.
header ("Content-type: image/jpeg");
03.
include("a_image.inc.php"); //Name der Klassendatei
04.
error_reporting (E_ALL); 
05.
ini_set ("display_errors", true);  
06.
$conn = new PDO("mysql:host=localhost;dbname=test", "guenni", "guenni");
07.
$query = "select data from bilder where id = 2";
08.
$stm = $conn->prepare($query);
09.
$stm->execute();
10.
$result = $stm->fetch(PDO::FETCH_ASSOC);
11.
$image_string = $result['data'];
12.
/*
13.
* Das Bildobjekt erstellen
14.
*/
15.
$image = new MyImage($image_string);
16.
/*
17.
* Das Bild ausgeben
18.
*/
19.
$image->show();
20.
?>
Damit wäre die Bildausgabe fertig. Um nun noch einen Text als Copyright/transparentes Wasserzeichen über das Bild zu definieren, gibt es zwei Möglichkeiten:

- Eine einzige Textzeile
- Einen mehrzeiligen Text (als Array)

01.
$copyright = "Copyright by ME!";
02.
$copyright_array = array("Copyright by ME!","(c) 2013","Viersen, NRW, Germany");
Beide Variablen können der Methode übergeben werden

01.
$image->set_text_color();
02.
$image->set_text($copyright);
03.
//oder mehrzeilig
04.
//$image->set_text($copyright_array);
Das transparente Wasserzeichen

Dazu erstellen wir erstmal ein leeres Bild in der gewünschten Breite und Höhe

01.
$image->create_copyright_stamp(230, 110);
Dann werden die Textparameter für das Wasserzeichen gesetzt

01.
$image->set_stamp_text($copyright);
02.
//oder mehrzeilig
03.
//$image->set_stamp_text($copyright_array);
Anschließend wird das transparente Wasserzeichen erstellt

01.
$image->set_stamp();
Ein Bild mit Text und Wasserzeichen könnte dann so aussehen:

274e92632e5b4461c3e5d333e9bda60c - Klicke auf das Bild, um es zu vergrößern

Abhängig von der Bildgröße muß man mit den Positionsparametern ein wenig ausprobieren, um den Text/das Wasserzeichen im Bild darzustellen.

Zum Schluß noch die Upload-Datei

01.
<?php
02.
error_reporting ( E_ALL ); 
03.
ini_set ( 'display_errors', true );
04.
/*
05.
* Datenbank Verbindungsparameter
06.
*/
07.
$conn = new PDO("mysql:host=localhost;dbname=test", "guenni", "guenni");
08.
/*
09.
* Mit $HTTP_SERVER_VARS['DOCUMENT_ROOT'] wird das Rootverzeichnis des Servers ermittelt,
10.
* pub ist das Standardverzeichnis, in dem Bilder abgelegt werden.
11.
*/
12.
$pfad=$HTTP_SERVER_VARS['DOCUMENT_ROOT']."pub/";
13.
if(isset($_POST["cmd"])){
14.
 /*
15.
 * verz wird mit dem Formular gesendet und bestimmt den Ordner,
16.
 * in dem die Datei gespeichert wird.
17.
 * Im Array not_allow können Zeichen(ketten) definiert werden, die im Verzeichnisnamen
18.
 * nicht vorkommen sollen(oder nicht dürfen). Liste der nicht erlaubten Zeichen(ketten (eventuell)) erweitern.
19.
 */
20.
 $not_allow = array(' ','.',':','?',';','www','/','\\');
21.
 $verz=str_replace($not_allow, '', $_POST['verz']);
22.
 /*
23.
 * Es wird überprüft, ob $_POST['verz'] existiert. Wenn ja, wird
24.
 * es dem Pfad angehangen.
25.
 * Wenn nein, wird es erstellt und dem Pfad angehangen.
26.
 * Ist $_POST['verz'] leer, wird die Datei im oben angegeben Ordner gespeichert.
27.
 */
28.
 if(empty($verz)){
29.
  //keine Aktion
30.
 }else{
31.
 			 if(is_dir($pfad.$verz)){
32.
  		 $pfad.=$verz."/";
33.
 			 }else{
34.
 			 			 mkdir($pfad.$verz,0777);
35.
 			 			 $pfad.=$verz."/";
36.
 			 }
37.
			}
38.
 /*
39.
 * Im folgenden werden die Variablen für die copy-Funktion
40.
 * deklariert und belegt.
41.
 */
42.
 $quelle=$_FILES["myfile"]["tmp_name"]; // Name der temporären Datei
43.
 $quellenname=$_FILES["myfile"]["name"]; // Originalname der Datei
44.
 $ziel=$pfad.$quellenname; // Originalname wird an Pfad angehangen
45.
 /*
46.
 * Auf Bilddatei prüfen, Liste der Endungen (eventuell) erweitern.
47.
 */
48.
 $bild_end = array(".bmp", ".gif", ".jpg", ".jpeg" , ".png");
49.
 $punkt_pos = strrpos($quellenname, '.');
50.
 if(!in_array(strtolower(substr($quellenname, $punkt_pos)), $bild_end)){
51.
  echo "Datei $quellenname ist keine Bilddatei. <a href=\"a_11.php\"> Zurück </a>";
52.
	exit;
53.
 }
54.
 /*
55.
 * Wird kopiert ?
56.
 */
57.
  if(move_uploaded_file($quelle,$ziel)){
58.
   echo "Datei $quellenname wurde hochgeladen.<br>"; 
59.
	 echo "-------------------------------------<br>";
60.
	 echo "Quelle: ".$quelle."<br>";
61.
	 echo "Quellenname: ".$quellenname."<br>";
62.
	 echo "Ziel: ".$ziel."<br>";
63.
	}else{ /*
64.
				 * if-else copy - Kopieren fehlgeschlagen
65.
				 * Häufiger Grund einer Fehlermeldung ist, dass die hochgeladene Datei größer ist,
66.
				 * als in der php.ini erlaubt ist.
67.
				 */
68.
 			  echo "Fehler beim Hochladen der Datei ".$quellenname."<a href=\"a_11.php\"> Zurück </a>";
69.
			  exit;
70.
				}
71.
}
72.
/*
73.
* Ist die Checkbox conv angewählt, wird die hochgeladene Datei kodiert und in der DB gespeichert.
74.
*/
75.
if(isset($_POST["conv"])){	
76.
	$bild = '';
77.
	$file = $ziel;
78.
	if (!$handle = fopen($file, "r")) die("Konnte Datei $file nicht oeffnen!");  
79.
   while ($str = fread($handle, filesize($file))) {  
80.
    $bild.=base64_encode($str);  
81.
   }
82.
	fclose($handle);
83.
	/*
84.
	* Bild in DB speichern
85.
	*/
86.
  $query = $conn->prepare("insert into bilder(data) values(:bild)");
87.
	$query->bindParam(":bild", $bild, PDO::PARAM_STR);
88.
  $result = $query->execute();
89.
	if($result !== false){
90.
	 $id = $conn->lastInsertId();
91.
	 echo "<br>Die ID des eingefügten Datensatzes ist ".$id;
92.
	}else{
93.
				echo "<pre>";
94.
				print_r($query->errorInfo());
95.
				echo "</pre>";
96.
				}
97.
 /*
98.
 * Ist die Checkbox delete angewählt, wird die hochgeladene Datei wieder gelöscht
99.
 */
100.
 if(isset($_POST["delete"])){
101.
  unlink($file);
102.
 }
103.
}
104.
?>
105.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
106.
<html>
107.
<head>
108.
<title>Upload and Encode</title>
109.
</head>
110.
<body>
111.
<p>Bild hochladen, kodieren und in DB speichern</p>
112.
<form enctype="multipart/form-data" method="post" action="a_11.php">
113.
<p>Ordner(optional): <input type="text" name="verz"> Bild: <input type="file" name="myfile"></p>
114.
<input type="submit" name="cmd" value="Hochladen"> Bild kodieren und in DB speichern <input type="checkbox" name="conv">
115.
Bild nach Upload löschen <input type="checkbox" name="delete">
116.
</form>
117.
</body>
118.
</html>
Thats all Folks

Gruß
Güni
Mitglied: LordGurke
01.11.2013 um 17:44 Uhr
Hi,

prinzipiell keine schlechte Anleitung, allerdings drei-vier Anmerkungen von mir dazu:

Du benutzt noch $HTTP_SERVER_VARS, was seit Version 4.1 veraltet ist und daher nicht mehr verwendet werden sollte (ich glaube sogar, spätestens unter 5.4 funktioniert es auch tatsächlich nicht mehr). Stattdessen sollte man $_SERVER verwenden: http://php.net/manual/en/reserved.variables.server.php

Dann sollte man bei der Arbeit mit benutzerdefinierten Verzeichnis- und Dateinamen nach Möglichkeit "realpath()" bzw. "basename()" verwenden, um das zu filtern.
Oder direkt einfach eine Whitelist mit den normalen lateinischen Zeichen machen und entsprechend alles, was nicht in der Liste steht zu ersetzen.
Denn dein Filter holt mir z.B. keine Unicode-Zeichen aus dem angegebenen Verzeichnisnamen heraus. Kannst du ja gerne mal mit U+0338 versuchen - sieht aus wie ein Schrägstrich, ist aber keiner: ̸
Oder U+043C, das kyrillische kleine "Em": м

Kann zumindest zu interessanten Konfusionen führen


Und zum Schluss:
Beim Entwickeln ganz hilfreich, im Produktivsystem aber aus verschiedenen Gründen nicht zu empfehlen:
PHP-Fehler ausgeben, gerade dann wenn man kurz vorher den Content-Type auf "image/jpeg" setzt.
Du erfährst alle PHP-Fehler und Warnungen auch aus dem Error-Log deines Webservers. Wobei... Mit E~ALL hättest du auch eigentlich Deprecated-Warnungen sehen müssen?
Bitte warten ..
Mitglied: Guenni
02.11.2013 um 05:43 Uhr
Zitat von LordGurke:
Hi,

prinzipiell keine schlechte Anleitung, allerdings drei-vier Anmerkungen von mir dazu:

Du benutzt noch $HTTP_SERVER_VARS, was seit Version 4.1 veraltet ist und daher nicht mehr verwendet werden sollte (ich glaube
sogar, spätestens unter 5.4 funktioniert es auch tatsächlich nicht mehr). Stattdessen sollte man $_SERVER verwenden:
http://php.net/manual/en/reserved.variables.server.php

Dann sollte man bei der Arbeit mit benutzerdefinierten Verzeichnis- und Dateinamen nach Möglichkeit "realpath()"
bzw. "basename()" verwenden, um das zu filtern.
Oder direkt einfach eine Whitelist mit den normalen lateinischen Zeichen machen und entsprechend alles, was nicht in der Liste
steht zu ersetzen.
Denn dein Filter holt mir z.B. keine Unicode-Zeichen aus dem angegebenen Verzeichnisnamen heraus. Kannst du ja gerne mal mit
U+0338 versuchen - sieht aus wie ein Schrägstrich, ist aber keiner: ̸
Oder U+043C, das kyrillische kleine "Em": м

Kann zumindest zu interessanten Konfusionen führen


Und zum Schluss:
Beim Entwickeln ganz hilfreich, im Produktivsystem aber aus verschiedenen Gründen nicht zu empfehlen:
PHP-Fehler ausgeben, gerade dann wenn man kurz vorher den Content-Type auf "image/jpeg" setzt.
Du erfährst alle PHP-Fehler und Warnungen auch aus dem Error-Log deines Webservers. Wobei... Mit E~ALL hättest du auch
eigentlich Deprecated-Warnungen sehen müssen?


Hi,

danke für die Rückmeldung. Zu $HTTP_SERVER_VARS: Da sieht man mal, wie alt das Uploadscript ist. Ich bin auf die Idee,

eine Anleitung zu schreiben, erst gekommen, nach dem ein Forenuser (ich weiß nicht mehr wo) geschrieben hatte, dass er Probleme

hätte, ein Bild aus einer Datenbank im Browser auszugeben. Deshalb wurde das Script einfach nur erweitert.

Was du mit realpath oder basename "filtern" willst, erschließt sich mir jetzt nicht so direkt. realpath macht aus

../../ einen absoluten Pfad, den ich ja auch angebe, und basename gibt aus Pfad/Pfad/Dateiname den Dateinamen zurück.

Wenn du mit Filtern das hier meinst . . .

01.
$not_allow = array(' ','.',':','?',';','www','/','\\'); 
02.
$verz=str_replace($not_allow, '', $_POST['verz']); 

. . . so steht es jedem frei

- die Liste der Zeichen zu erweitern
- die Liste der Zeichen zu reduzieren
- die beiden Zeilen auszukommentieren
- sich selber einen Filter zu basteln.

Auf Copyright lege ich keinerlei Wert, jeder kann was ich schreibe benutzen, umändern, erweitern . . . wie er lustig ist.

Ich wollte einfach nur eine Möglichkeit zeigen, sich unerwünschte Zeichen in Verzeichnisnamen "vom Hals" (Server) zu halten.

Zu Fehler, Warnungen und Deprecated-Warnungen: Ist die Bildausgabe erstmal gestartet, verschwinden diese im Nirwana, weil ja ein

Bild ausgegeben wird. Dazu müsste man ein Extrabild erstellen und Fehler und Warnungen dort ausgeben.

Gruß
Günni
Bitte warten ..
Ähnliche Inhalte
Administrator.de Feedback
Entwicklertagebuch: PHP 7
Information von admtechAdministrator.de Feedback4 Kommentare

Hallo Administrator User, mit dem heutigen Tag haben wir unsere Server komplett auf die PHP Version 7 umgestellt. Wir ...

PHP

PHP RFC: Mcrypt Extension wird ab PHP 7.2 entfernt

Information von FrankPHP

Ein RFC ist grob eine Abstimmung unter den PHP-Entwicklern, um neue, bestehende oder alte Feature hinzuzufügen, zu ändern, oder ...

PHP

PHP 7.2 veröffentlicht

Information von FrankPHP

Das PHP-Team hat heute, den 30.11.207 die aktuelle Version von PHP 7.2 veröffentlicht. Eine der wichtigsten Änderungen für PHP-Entwickler ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

Tipp von gdconsultSicherheits-Tools3 Kommentare

Hallo! Ich habe gerade ein nettes kleines Tool fertiggestellt. Damit kann die Passwort-Spalte einer CSV-Datei der reihe nach gehen ...

Neue Wissensbeiträge
Humor (lol)
Preisvertipper
Information von Dilbert-MD vor 4 TagenHumor (lol)8 Kommentare

Moin! weil heute Freitag ist, zeige ich Euch den Preisvertipper der Woche: vergesst den Acer Predator 21x, der ist ...

Windows Update
Sicherheitsupdate für SQL Server 2014 SP3
Information von sabines vor 6 TagenWindows Update2 Kommentare

Für den SQL Server 2014 existiert ein Sicherheitsupdate. Laut KB Artikel wird es als CU3 angezeigt: Server 2014 SP3 ...

Backup

Veeam Agent für MS Windows - neue Version verfügbar (bedingt jedoch offenbar .NET Framework 4.6)

Information von VGem-e vor 7 TagenBackup1 Kommentar

Moin Kollegen, einer unserer Server zeigte grad an, dass für o.g. Software ein Update verfügbar ist. Ob ein evtl. ...

Python

Sie meinen es ja nur gut - Microsoft hilft python-Entwicklern auf unnachahmliche Weise

Information von DerWoWusste vor 8 TagenPython2 Kommentare

Stellt Euch vor, Ihr nutzt python unter Windows 10 und skriptet damit regelmäßig Dinge. Nach dem Update auf Windows ...

Heiß diskutierte Inhalte
Windows Server
Lange Wartezeiten beim speichern und öffnen auf Win Server 2019
Frage von installerWindows Server49 Kommentare

Hallo, habe ein Problem mit langen Wartezeiten beim öffnen / speichern von Office Dokumenten etc. auf Netzlaufwerken auf einem ...

Utilities
TeamViewer - Software installieren mit Admin Account
Frage von gwitzigUtilities28 Kommentare

Hallo, ich bin bei einem Großkunden und muss einen Hotfix (Windows 7 Notebook) installieren. Habe es mit TeamViewer Version ...

LAN, WAN, Wireless
Durchblick im Ubiquiti Dschungel
Frage von installerLAN, WAN, Wireless26 Kommentare

Hallo, ich möchte gerne ein Wohnhaus mit Ubiquiti WLAn Access Points (inkl. Mesh Funktion) austatten und auch eine grafische ...

Monitoring
Monitoring Tool für 200 virtuelle Server
Frage von FortimiMonitoring22 Kommentare

Hallo zusammen Ich bin auf der Suche nach einem Monitoring Tool für unsere Informatik mit ca. 200 virtuellen Servern. ...