Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Quellcode in MySql-DB speichern [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Quellcode in MySql-DB speichern


 
Scripter2009
22-11-2009, 23:33 
 
Hi Community,

ich habe z.Z. ein Problem beim Speichern von Quellcodes der Programmiersprache Autoit, in einer DB.

Ich möchte Quellcodes wie folgenden, in eine MySql-Db speichern.

#Include <GUIConstants.au3>

$Gui1 = GUICreate("Gui1",600,500)
$Button1 = GUICtrlCreateButton("Button1",150,300,120,23)
GUISetState(@SW_SHOW)

While 1

$Msg = GUIGetMsg(1)

Switch $Msg[0]
Case $GUI_EVENT_CLOSE
Exit

EndSwitch

WEnd
Dieser Text sollte auf einem recht einfachen, aber dennoch sicheren Weg, in die Db gelangen. Somit hatte ich die Idee - In eine Textarea wir der Code eingetragen und dann per Button gesendet.

Dies könnt ihr unter folgendem Link testen: Hier (http://www.autchat.spacequadrat.de/Senden/Code_senden.html) (tragt den Code in die Textarea ein und klickt "Daten absenden")

Auf der weitergeleiteten Seite seht ihr dann den Text, der wirklich in der php angekommen ist.


Array ( [nachricht] => #Include $Gui1 = GUICreate(\"Gui1\",600,500) $Button1 = GUICtrlCreateButton(\"Button1\",150,300,120,23) GUISetState(@SW_SHOW) While 1 $Msg = GUIGetMsg(1) Switch $Msg[0] Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd )
Der Quellcode wird also irgendwie escaped...


Gibt es eine andere Möglichkeit, wie man dies trotzdem hinbekommen kann oder wie man aufbessert. Dazu zusagen ist natürlich, dass ich keine PHP-Sicherheitseinstellungen verändern kann, da dies alles auf einem Freehoster liegt.

PHP-Einstellungen usw. seht ihr hier: Hier (http://phpinfo.spacequadrat.de/)

Vielen Dank schonmal!
Mfg Scripter

 
PHP-Desaster
22-11-2009, 23:49 
 
magic_quotes_gpc On

Das ist das Problem.

 
Scripter2009
23-11-2009, 00:30 
 
Okej, aber gibt es keine andere Möglichkeit das zu lösen?

 
wahsaga
23-11-2009, 00:37 
 
Doch - Manual lesen und informieren.

http://www.php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc -> http://www.php.net/manual/en/function.get-magic-quotes-gpc.php

 
Scripter2009
23-11-2009, 13:53 
 
Hm ich werde daraus nicht so wirklich schlaun. Ich habe mein Script man aktuallisiert, ihr könnt also nochmal testen -> Hier (http://www.autchat.spacequadrat.de/Senden/Code_senden.html)

Der Code sieht so aus:

<?php
if (is_array ($_POST)) {
foreach ($_POST as $pkey => $pvalue) {
$_POST[$pkey] = preg_replace ("/\\\\([\"'])/", "$1", $pvalue);
}
}

print_r($_POST);
?>


Allerdings sind in Gänsefüßchen geschriebene Dinge immernoch mit "\" escaped und die Zeilenumbrüche sind weg.

 
combie
23-11-2009, 14:04 
 
Die Regenechsen brauchst du nicht.
Erst stripslashes() und danach mysql_real_escape_string() oder eben das, was deine DB verlangt.

 
Scripter2009
23-11-2009, 14:13 
 
Okej danke! Ich bin mittlerweile soweit:

<?php
//error_reporting(0);
$host = "localhost";
$user = "xxxxxx";
$pass = "xxxxxx";
$dbase = "xxxxxx";

mysql_connect($host, $user, $pass);
mysql_select_db($dbase);

$QCode = $_POST["nachricht"];
$Strip = stripslashes($QCode);
$REsc = mysql_real_escape_string($Strip);
echo $REsc;
?>

Dieser Code wird dann in der DB gespeichert. Nur gibt es eine Möglichkeit dieses ganze escapen, wieder rückgänging zu machen?

Also eine php-datei die quasi den escapten Quellcode aus der DB holt und wieder "zurückwandelt"...

 
combie
23-11-2009, 14:27 
 
Beim Lesen rückgänging machen?
Das brauchst du nicht!

 
Scripter2009
23-11-2009, 14:46 
 
Stimmt ...

Alle Fragen sind nun beseitigt. Danke!

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:32 Uhr.