Zeilenumbruch in mysql-DB eintragen
bearbeitet von
Hello Sven-Jochen, ;-)
> Nu aber, so läuft es und zwar mit Sonderzeichen und ohne Zeilenumbrüche in |x| um,zuwandeln und später wieder herzustellen.
Sieht doch schon besser aus.
>
> Java:
>
> ~~~
> // Create a HashMap to store the key-value pairs
> Map<String, String> data = new HashMap<>();
> data.put("description", myDesc);
> data.put("preis", myPreis);
> data.put("konto", myKonto);
> data.put("MwSt", myMwSt);
> data.put("datum", myDatum);
> data.put("filename", file.getName());
>
> // Convert the HashMap to a JSON string
> String jsonString = new Gson().toJson(data);
>
> // Convert the JSON string to a RequestBody
> RequestBody jsonRequestBody = RequestBody.create(MediaType.parse("application/json"), jsonString.getBytes());
>
> // Now send the JSON string to the PHP file
> RequestBody fileRequestBody = RequestBody.create(MediaType.parse("*/*"), file);
> map.put("file\"; filename=\"" + file.getName() + "\"", fileRequestBody);
> map.put("json", jsonRequestBody);
> ~~~
>
Bei PHP hätte ich auf jeden Fall noch ein paar Dinge zu bemängeln:
- das Umkopieren
~~~php, bad
$myDescription = $jsonData['description'];
$myDescription = utf8_decode($myDescription);
$myPreis = $jsonData['preis'];
$myKonto = $jsonData['konto'];
$myMwSt = $jsonData['MwSt'];
$myMwSt = str_replace("% MwSt","",$myMwSt);
$myDatum = datum2mysql($jsonData['datum'],'.');
~~~
Das ist unnötig und zerstört nur den Zusammenhang der Daten.
- und die Verwertung der übermittelten Filesize.
[Filesize()](https://www.php.net/manual/de/function.filesize.php) muss auf jedem Fall auf dem Server geprüft werden, was der Client meldet, kann gelogen sein.
Man sollte aber hier auch die handlebasierte Funktion verwenden.
- Prüfung des MIME-Types der Datei
Bitte auch auf dem Server prüfen und nicht glauben, was der Client meldet. Die Funktion [mime_content_type()](https://www.php.net/manual/en/function.mime-content-type) sollte hier helfen.
[Leider hängt das Online-Manual gerade].
Ohne diese Prüfung könnte man Dir alles auf den Server jublen und dann ist er eventuell schnell geknackt.
- Den vom Client gemekdeten Filename darf man keinesfalls ungeprüft übernehmen. Der könnte ganze Pfade enthalten, bzw. schäfliche Filenamen (PRN, LPT, ...)
- Das Vezeichnis für den Fileupload sollte außerhalb der Document-Root liegen und es sollten alle Scriptausführungen in diesem Verzeichnis ausgeschaltet sein! (.htaccess -> engine off).
- User/Passwort-Prüfung konnte ich jetzt nicht entdecken. Habe ich die übersehen?
> php:
>
> ~~~ PHP
> if($_SERVER['REQUEST_METHOD'] === 'POST') {
>
> if(isset($_POST['json'])) {
> $jsonString = $_POST['json']; // JSON-String als Text aus dem Request-Body lesen
> $jsonData = json_decode($jsonString,true); // JSON-String in ein PHP-Array umwandeln
>
> // hier exception einbauen:
> if(false === $jsonData) {
> $success = false;
> $message = "JSON-Error while uploading";
> $response["success"] = $success;
> $response["message"] = $message;
> echo json_encode($response);
> exit;
> }
>
> $myDateiname = $_FILES['file']['name'];
> $myDateigroesse = $_FILES["file"]["size"];
>
> $myDescription = $jsonData['description'];
> $myDescription = utf8_decode($myDescription);
> $myPreis = $jsonData['preis'];
> $myKonto = $jsonData['konto'];
> $myMwSt = $jsonData['MwSt'];
> $myMwSt = str_replace("% MwSt","",$myMwSt);
> $myDatum = datum2mysql($jsonData['datum'],'.');
>
> $fp = fopen('./androidlog.txt', 'a+');
> fwrite($fp, $_FILES['file']['name']."\r\n");
> fwrite($fp, print_r($jsonData,true)."\r\n");
> fclose($fp);
>
> }
> }
> ~~~
>
> ergibt sowas hier:
>
> ~~~
> IMAGE_20230420_083452.jpg
> Array
> (
> [datum] => 20.04.2023
> [preis] => 36.9
> [konto] => GWG
> [filename] => IMAGE_20230420_081552.jpg
> [description] => Zeile 1
> Zeile 2
> und noch eine lange Zeile die einen Zeilenumbruch innerhalb der Textarea hat und in der nächsten Zeile ein paar Sonderzeichen
> '*+&#@/)?;"
> [MwSt] => 19% MwSt
> )
> ~~~
Du hast also noch einiges zu tun, wenn Dir die Sicherheit des Servers etwas wert ist.
Glück Auf
Tom vom Berg
--
Es gibt soviel Sonne, nutzen wir sie.
[www.Solar-Harz.de](https://www.Solar-Harz.de)
S☼nnige Grüße aus dem Oberharz
Zeilenumbruch in mysql-DB eintragen
bearbeitet von
Hello Sven-Jochen, ;-)
> Nu aber, so läuft es und zwar mit Sonderzeichen und ohne Zeilenumbrüche in |x| um,zuwandeln und später wieder herzustellen.
Sieht doch schon besser aus.
>
> Java:
>
> ~~~
> // Create a HashMap to store the key-value pairs
> Map<String, String> data = new HashMap<>();
> data.put("description", myDesc);
> data.put("preis", myPreis);
> data.put("konto", myKonto);
> data.put("MwSt", myMwSt);
> data.put("datum", myDatum);
> data.put("filename", file.getName());
>
> // Convert the HashMap to a JSON string
> String jsonString = new Gson().toJson(data);
>
> // Convert the JSON string to a RequestBody
> RequestBody jsonRequestBody = RequestBody.create(MediaType.parse("application/json"), jsonString.getBytes());
>
> // Now send the JSON string to the PHP file
> RequestBody fileRequestBody = RequestBody.create(MediaType.parse("*/*"), file);
> map.put("file\"; filename=\"" + file.getName() + "\"", fileRequestBody);
> map.put("json", jsonRequestBody);
> ~~~
>
Bei PHP hätte ich auf jeden Fall noch ein paar Dinge zu bemängeln:
- das Umkopieren
~~~php, bad
$myDescription = $jsonData['description'];
$myDescription = utf8_decode($myDescription);
$myPreis = $jsonData['preis'];
$myKonto = $jsonData['konto'];
$myMwSt = $jsonData['MwSt'];
$myMwSt = str_replace("% MwSt","",$myMwSt);
$myDatum = datum2mysql($jsonData['datum'],'.');
~~~
Das ist unnötig und zerstört nur den Zusammenhang der Daten.
- und die Verwertung der übermittelten Filesize.
[Filesize()](https://www.php.net/manual/de/function.filesize.php) muss auf jedem Fall auf dem Server geprüft werden, was der Client meldet, kann gelogen sein.
Man sollte aber hier auch die handlebasierte Funktion verwenden.
- Prüfung des MIME-Types der Datei
Bitte auch auf dem Server prüfen und nicht glauben, was der Client meldet. Die Funktion [mime_content_type()](https://www.php.net/manual/en/function.mime-content-type) sollte hier helfen.
[Leider hängt das Online-Manual gerade].
Ohne diese Prüfung könnte man Dir alles auf den Server jublen und dann ist er eventuell schnell geknackt.
- Den vom Client gemekdeten Filename darf man keinesfalls ungeprüft übernehmen. Der könnte ganze Pfade enthalten, bzw. schäfliche Filenamen (PRN, LPT, ...)
- Das Vezeichnis für den Fileupload sollte außerhalb der Document-Root liegen und es sollten alle Scriptausführungen in diesem Verzeichnis ausgeschaltet sein! (.htaccess -> engine off).
- User/Passwort-Prüfung konnte ich jetzt nicht entdecken. Habe ich die übersehen?
> php:
>
> ~~~ PHP
> if($_SERVER['REQUEST_METHOD'] === 'POST') {
>
> if(isset($_POST['json'])) {
> $jsonString = $_POST['json']; // JSON-String als Text aus dem Request-Body lesen
> $jsonData = json_decode($jsonString,true); // JSON-String in ein PHP-Array umwandeln
>
> // hier exception einbauen:
> if(false === $jsonData) {
> $success = false;
> $message = "JSON-Error while uploading";
> $response["success"] = $success;
> $response["message"] = $message;
> echo json_encode($response);
> exit;
> }
>
> $myDateiname = $_FILES['file']['name'];
> $myDateigroesse = $_FILES["file"]["size"];
>
> $myDescription = $jsonData['description'];
> $myDescription = utf8_decode($myDescription);
> $myPreis = $jsonData['preis'];
> $myKonto = $jsonData['konto'];
> $myMwSt = $jsonData['MwSt'];
> $myMwSt = str_replace("% MwSt","",$myMwSt);
> $myDatum = datum2mysql($jsonData['datum'],'.');
>
> $fp = fopen('./androidlog.txt', 'a+');
> fwrite($fp, $_FILES['file']['name']."\r\n");
> fwrite($fp, print_r($jsonData,true)."\r\n");
> fclose($fp);
>
> }
> }
> ~~~
>
> ergibt sowas hier:
>
> ~~~
> IMAGE_20230420_083452.jpg
> Array
> (
> [datum] => 20.04.2023
> [preis] => 36.9
> [konto] => GWG
> [filename] => IMAGE_20230420_081552.jpg
> [description] => Zeile 1
> Zeile 2
> und noch eine lange Zeile die einen Zeilenumbruch innerhalb der Textarea hat und in der nächsten Zeile ein paar Sonderzeichen
> '*+&#@/)?;"
> [MwSt] => 19% MwSt
> )
> ~~~
Du hast also noch einiges zu tun, wenn Dir die Sicherheit des Servers etwas wert ist.
Glück Auf
Tom vom Berg
--
Es gibt soviel Sonne, nutzen wir sie.
[www.Solar-Harz.de](https://www.Solar-Harz.de)
S☼nnige Grüße aus dem Oberharz
Zeilenumbruch in mysql-DB eintragen
bearbeitet von
Hello Sven-Jochen, ;-)
> Nu aber, so läuft es und zwar mit Sonderzeichen und ohne Zeilenumbrüche in |x| um,zuwandeln und später wieder herzustellen.
Sieht doch schon besser aus.
>
> Java:
>
> ~~~
> // Create a HashMap to store the key-value pairs
> Map<String, String> data = new HashMap<>();
> data.put("description", myDesc);
> data.put("preis", myPreis);
> data.put("konto", myKonto);
> data.put("MwSt", myMwSt);
> data.put("datum", myDatum);
> data.put("filename", file.getName());
>
> // Convert the HashMap to a JSON string
> String jsonString = new Gson().toJson(data);
>
> // Convert the JSON string to a RequestBody
> RequestBody jsonRequestBody = RequestBody.create(MediaType.parse("application/json"), jsonString.getBytes());
>
> // Now send the JSON string to the PHP file
> RequestBody fileRequestBody = RequestBody.create(MediaType.parse("*/*"), file);
> map.put("file\"; filename=\"" + file.getName() + "\"", fileRequestBody);
> map.put("json", jsonRequestBody);
> ~~~
>
Bei PHP hätte ich auf jeden Fall noch ein paar Dinge zu bemängeln:
- das Umkopieren
~~~php
$myDescription = $jsonData['description'];
$myDescription = utf8_decode($myDescription);
$myPreis = $jsonData['preis'];
$myKonto = $jsonData['konto'];
$myMwSt = $jsonData['MwSt'];
$myMwSt = str_replace("% MwSt","",$myMwSt);
$myDatum = datum2mysql($jsonData['datum'],'.');
~~~
Das ist unnötig und zerstört nur den Zusammenhang der Daten.
- und die Verwertung der übermittelten Filesize.
[Filesize()](https://www.php.net/manual/de/function.filesize.php) muss auf jedem Fall auf dem Server geprüft werden, was der Client meldet, kann gelogen sein.
Man sollte aber hier auch die handlebasierte Funktion verwenden.
- Prüfung des MIME-Types der Datei
Bitte auch auf dem Server prüfen und nicht glauben, was der Client meldet. Die Funktion [mime_content_type()](https://www.php.net/manual/en/function.mime-content-type) sollte hier helfen.
[Leider hängt das Online-Manual gerade].
Ohne diese Prüfung könnte man Dir alles auf den Server jublen und dann ist er eventuell schnell geknackt.
- Den vom Client gemekdeten Filename darf man keinesfalls ungeprüft übernehmen. Der könnte ganze Pfade enthalten, bzw. schäfliche Filenamen (PRN, LPT, ...)
- Das Vezeichnis für den Fileupload sollte außerhalb der Document-Root liegen und es sollten alle Scriptausführungen in diesem Verzeichnis ausgeschaltet sein! (.htaccess -> engine off).
- User/Passwort-Prüfung konnte ich jetzt nicht entdecken. Habe ich die übersehen?
> php:
>
> ~~~ PHP
> if($_SERVER['REQUEST_METHOD'] === 'POST') {
>
> if(isset($_POST['json'])) {
> $jsonString = $_POST['json']; // JSON-String als Text aus dem Request-Body lesen
> $jsonData = json_decode($jsonString,true); // JSON-String in ein PHP-Array umwandeln
>
> // hier exception einbauen:
> if(false === $jsonData) {
> $success = false;
> $message = "JSON-Error while uploading";
> $response["success"] = $success;
> $response["message"] = $message;
> echo json_encode($response);
> exit;
> }
>
> $myDateiname = $_FILES['file']['name'];
> $myDateigroesse = $_FILES["file"]["size"];
>
> $myDescription = $jsonData['description'];
> $myDescription = utf8_decode($myDescription);
> $myPreis = $jsonData['preis'];
> $myKonto = $jsonData['konto'];
> $myMwSt = $jsonData['MwSt'];
> $myMwSt = str_replace("% MwSt","",$myMwSt);
> $myDatum = datum2mysql($jsonData['datum'],'.');
>
> $fp = fopen('./androidlog.txt', 'a+');
> fwrite($fp, $_FILES['file']['name']."\r\n");
> fwrite($fp, print_r($jsonData,true)."\r\n");
> fclose($fp);
>
> }
> }
> ~~~
>
> ergibt sowas hier:
>
> ~~~
> IMAGE_20230420_083452.jpg
> Array
> (
> [datum] => 20.04.2023
> [preis] => 36.9
> [konto] => GWG
> [filename] => IMAGE_20230420_081552.jpg
> [description] => Zeile 1
> Zeile 2
> und noch eine lange Zeile die einen Zeilenumbruch innerhalb der Textarea hat und in der nächsten Zeile ein paar Sonderzeichen
> '*+&#@/)?;"
> [MwSt] => 19% MwSt
> )
> ~~~
Du hast also noch einiges zu tun, wenn Dir die Sicherheit des Servers etwas wert ist.
Glück Auf
Tom vom Berg
--
Es gibt soviel Sonne, nutzen wir sie.
[www.Solar-Harz.de](https://www.Solar-Harz.de)
S☼nnige Grüße aus dem Oberharz