Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi / PHP Falsche String Ausgabe (https://www.delphipraxis.net/31822-delphi-php-falsche-string-ausgabe.html)

Deadinpac 14. Okt 2004 13:55


Delphi / PHP Falsche String Ausgabe
 
Hi DP

ich hab mal folgende frage ich verwende den Code vom diesen Thema funktionen mit delphi in phpscript nur leider taucht folgendes Problem auf wenn ich ein String an die PHP Datei sende z.b INSERT INTO 'pg' (pname,ppreis,pnummer) Values ('aaa','0,00','1-1')

kommt bei der PHP Datei immer folgender String an INSERT INTO 'pg' (pname,ppreis,pnummer) Values (\'aaa\',\'0,00\',\'1-1\')

Vieleicht kennt jemand das Problem und kann mir helfen

mehr Code kann ich leider jetzt nicht geben weil ich noch ein Termin habe

MFG

deadinpac

maxk 14. Okt 2004 14:54

Re: Delphi / PHP Falsche String Ausgabe
 
Das Problem kennen glaube ich viele. Meines Wissens hast du nur eine Möglichkeit: mit str_replace das ganze rückgängig zu machen:
Code:
$str = str_replace('\\\'','\'',$str); // \' => '
$str = str_replace("\\\"","\"",$str); // \" => "
...
Wenn jemand was besseres kennt, wäre ich froh :|

Karbrüggen 14. Okt 2004 18:02

Re: Delphi / PHP Falsche String Ausgabe
 
Übernimmt das PHP-Skript MySQL-Datenbankabfragen?

Dann kannst du die Abfrage auch als solches schicken:
SQL-Code:
INSERT INTO ´pg´ (pname,ppreis,pnummer) Values (´aaa´,´0,00´,´1-1´)
bzw.
SQL-Code:
INSERT INTO `pg` (pname,ppreis,pnummer) Values (`aaa`,`0,00`,`1-1`)
Welcher von den beiden richtig ist, kann ich dir leider grad nicht sagen... ist schon länger her ;)

mfg

Deadinpac 15. Okt 2004 10:08

Re: Delphi / PHP Falsche String Ausgabe
 
Hi


@Maxk

Ich weiss leider nicht wie ich dein code anwenden soll sorry

@Karbrüggen

und die form die du mir geschrieben hast erhält auch sonderzeichen deshalbs klappts nicht

denn die schrägstriche vor den sonderzeichen kann ich mit folgenden code wegbekommen nur leider nicht bei mir

Code:
Stripslashes()
aber hier erstmal der Delphi Programm code

Delphi-Quellcode:
var sl : TStringlist;
begin
  sl := TStringList.Create;
  sl.Add('$sql1='+Edit1.Text);
  Memo1.Text := idHttp1.Post('http://localhost/test.php',sl);
  FreeAndNil(sl);
end;
und hier aus der PHP datei

Code:
<?php
$dbserver = 'localhost';
$dbuser = 'root';
$dbpwd = '';
$dbdata = 'Prog';

$dbconn = mysql_connect($dbserver, $dbuser, $dbpwd);

$dbselect = mysql_select_db($dbdata);

echo "$sql1" ,$_POST['$sql1'].chr(13).chr(10);

?>
danke an alle für eure Hilfe

MFG

deadinpac

maxk 15. Okt 2004 10:24

Re: Delphi / PHP Falsche String Ausgabe
 
Ich meinte es so:
Code:
<?php
$dbserver = 'localhost';
$dbuser = 'root';
$dbpwd = '';
$dbdata = 'Prog';

$dbconn = mysql_connect($dbserver, $dbuser, $dbpwd);

$dbselect = mysql_select_db($dbdata);

$str = $_POST['$sql1'];
$str = str_replace('\\\'','\'',$str); // \' => '
$str = str_replace("\\\"","\"",$str); // \" => "

echo "$sql1" ,$str.chr(13).chr(10);

?>
Theoretisch müsste stripslashes($_POST['$sql1']); aber eigentlich auch funktionieren :roll: Welche PHP Version hast du?

Deadinpac 15. Okt 2004 10:33

Re: Delphi / PHP Falsche String Ausgabe
 
hi

@Maxk

Ich habe PHP 4.x.x.x aber wie gesagt ich wusste nicht wie ich das in php einbinden soll
ich habe es gestern so versucht.

Code:
echo "$sql1" , Stripslashes($_POST['$sql1'].chr(13).chr(10));
aber ich versuch es mal so wie du geschrieben hast

MFG

deadinpac

maxk 15. Okt 2004 10:45

Re: Delphi / PHP Falsche String Ausgabe
 
Also soll müsste es eigentlich problemlos gehen:
Code:
echo "$sql1" , stripslashes($_POST['$sql1']).chr(13).chr(10);
Wichtig ist, dass du nach stripslashed die Klammer wieder zumachst (vor den ASCII Codes) und die Funktion kleinschreibst, da PHP dort anfällig ist.

Deadinpac 15. Okt 2004 19:29

Re: Delphi / PHP Falsche String Ausgabe
 
Hi,

@Maxk

Danke dein code hat funkioniert :-D


Nur wenn ich am ende des Quelltext noch
Code:
Mysql_query ($sql1); oder Mysql_query ("$sql1"); oder Mysql_db_query ("$dbdata" , "$sql1");
einfüge wird der datensatz nicht in der Datenbank gespeichert warum nicht :gruebel:

Habt ihr da auch noch eine antwort wäre nett von euch


Mfg

deadinpac

fiasko 15. Okt 2004 19:37

Re: Delphi / PHP Falsche String Ausgabe
 
Hallo,

das ganze wird bewirkt durch die magic_quotes_gpc Konfiguration von PHP:

Zitat:

Zitat von PHP Manual
Sets the magic_quotes state for GPC (Get/Post/Cookie) operations. When magic_quotes are on, all ' (single-quote), " (double quote), \ (backslash) and NUL's are escaped with a backslash automatically.


BTW: Ist das eigentlich dein ernst das man dem PHP-Skript SQL-Kommandos übergeben kann? Das ist aber ne ziemlich krasse Sicherheitslücke - da muß man sich ja erst garnicht anstregen mit SQL-Injecten :-)

Deadinpac 15. Okt 2004 19:48

Re: Delphi / PHP Falsche String Ausgabe
 
Hi,

@fiasko

Danke für dein tipp werd ich gleich mal gucken ob das klappt

zur dein sicherheitshinweis kann man den die PHP datei denn mit ein passwort schützen so das nur das Prog die sql anweisung an der PHP datei schicken kann?

MFG

deadinpac

jfheins 15. Okt 2004 19:51

Re: Delphi / PHP Falsche String Ausgabe
 
Zitat:

kann man den die PHP datei denn mit ein passwort schützen so das nur das Prog die sql anweisung an der PHP datei schicken kann?
Nein, das ist fast genauso sicher/unsicher.

Was du machen könntest ist z.B.
:arrow: ein DROP usw. nicht auszuführen
:arrow: einfache Kommandos zu senden, die dann vom Script in MySQL-Befehle umgewandelt werden

fiasko 15. Okt 2004 21:58

Re: Delphi / PHP Falsche String Ausgabe
 
Zitat:

Zitat von jfheins
:arrow: einfache Kommandos zu senden, die dann vom Script in MySQL-Befehle umgewandelt werden

das ist wohl das einfachste, dann kann immerhin jeder "nur" etwas inserten. Nimmst einfach einen Parameter für das Kommando in dessen Abhängigkeit du dann aus weiteren Parametern das SQL-Statement zusammenbaust. Dabei ist noch wichtig das du sicher stellst das Parameter die du als Integer erwartest auch wirklich Integer sind (z.B. mit settype) und Strings vorher mit mysql_escape_string so aufbereitest das kein Code eingeschleust werden kann.

Deadinpac 16. Okt 2004 07:12

Re: Delphi / PHP Falsche String Ausgabe
 
Hi,

So habe das Magic quotes ausgeschaltet aber trotzdem wird nichts in der datenbank eingefügt.

aber es müsste eigentlich funktionieren den das Prog füllt ja die Variabel $sql1 mit folgenen string
Code:
INSERT INTO `pg` (pname,ppreis,pnummer) Values (`aaa`,`0,00`,`1-1`)
also sieht der aufruf doch so nachher aus
Code:
mysql_query("INSERT INTO `pg` (pname,ppreis,pnummer) Values (`aaa`,`0,00`,`1-1`)");
oder nicht???

und was ich ja möchtet ist für den Oscommerce bzw. Osis shop ein Programm schreiben das man den shop offline bearbeiten kann ohne erst ein backup von der datenbank zu machen und dann ein lokalen webserver einrichten den shop zu installieren das backup einzuspielen und dann denn shop zu bearbeiten dann wieder ein backup zu machen und es online wieder einzuspielen

denn ich möchte das die anwender

1. Programm installieren/starten

2. Ein Button drücken um die shopdaten runterzuladen

3. Die Shopdaten zur bearbeiten

4. Ein Button drücken und die shopdaten wieder uploaden

5.fertig

Mfg

deadinpac


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz