Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi PHP brücke ??? (https://www.delphipraxis.net/45238-php-bruecke.html)

Gigant02 2. Mai 2005 18:04


PHP brücke ???
 
gibt es eine möglichkeit über eine php brücke

ich will auf eine datenbank zugreifen die in internet ist

geht das wenn ich es nicht über die ip machen kann ???


lg, Ciam

Meflin 2. Mai 2005 18:07

Re: PHP brücke ???
 
Moin,

wtf soll eine PHP Brücke sein?? könntest du dich evtl freundlicherweise dazu herablassen, dein problem etwas genauer zu definieren?


jfheins 2. Mai 2005 18:08

Re: PHP brücke ???
 
Code:
mysql_connect ('www.host.de', ...
:gruebel: Geht doch bestimmt ...
Wenn nicht: Genaue Fehlerbeschreibung :!:

yankee 2. Mai 2005 18:09

Re: PHP brücke ???
 
Zitat:

Zitat von Gigant02
gibt es eine möglichkeit über eine php brücke

ich will auf eine datenbank zugreifen die in internet ist

geht das wenn ich es nicht über die ip machen kann ???


lg, Ciam

klar. MySQL-Beispiel:
mysql_connect(Host, user, passwd);
man kann für host nicht nur "localhost" angeben, sondern da kannst du auch 'ne IP angeben. Allerdinsg musst du beachten, das der ISP das freigeschaltet hat und dass der MySQL-Nutzer auch zugriffsberechtigung hat von mehr als localhost (das ist bei den meisten ISPs nämlcih nicht der Fall!)

Gigant02 2. Mai 2005 18:10

Re: PHP brücke ???
 
ok

nee ist nicht freigeben

also ich will einen termin planer programmieren und denn über internet über eine mysql danbank synkronesieren

problem ist ich erreich die datenbank nur über localhost von der hp aus also brauch ich wohl sowas wie eine brücke oder sehe ich das falsch

ist es möglich variablen an php zuübergeben und wenn ja wie ???

lg, Ciam

jfheins 2. Mai 2005 18:13

Re: PHP brücke ???
 
Zitat:

Zitat von Gigant02
ist es möglich variablen an php zuübergeben und wenn ja wie ???

lg, Ciam

ja, es ist möglich.
Nächstes mal öffnest du aber für jede Frage einen neuen Thread, ok ? :wink:

Aufruf: .../script.php?var1=bla

Code:
<?
echo $_GET["var1"]
?>

yankee 2. Mai 2005 18:19

Re: PHP brücke ???
 
Zitat:

Zitat von jfheins
Code:
<?
echo $_GET["var1"]
?>

Das geht auch kürzer:
Code:
echo $var1
Geht nat. nur, wenn autoglobals aktiviert sind. Aber das ist eigentlich überall, weil auch nichts dagegen spricht. Und sonst bekommst du die Daten nicht, wenn es ein POST-Form ist...

jfheins 2. Mai 2005 18:25

Re: PHP brücke ???
 
Zitat:

Zitat von yankee
Geht nat. nur, wenn autoglobals aktiviert sind. ... bekommst du die Daten nicht, wenn es ein POST-Form ist...

So bekommt man eben nur das, was man will, und das immer ;)

bigg 2. Mai 2005 19:34

Re: PHP brücke ???
 
Für GET:
Code:
<? $var1 = $_GET["var1"] ?>

Für POST:
Code:
<? $var1 = $_POST["var1"] ?>
Wird verwendet, um größe Datenmengen zu versenden.


Nur so und nicht anders. :warn:
Interne Variablen könnten sonst überschrieben werden.

Quelle: http://de2.php.net/register_globals

Phoenix 2. Mai 2005 19:59

Re: PHP brücke ???
 
Zitat:

Zitat von yankee
Geht nat. nur, wenn autoglobals aktiviert sind. Aber das ist eigentlich überall, weil auch nichts dagegen spricht.

:wall: Natürlich spricht das so ziemlich alles was Sicherheit angeht dagegen!
Sonst könnte man damit im Script verwendete Variablen einfach so überschreiben. Schlimmstenfalls sogar eigene SQL-Statements in die DB einschleusen. Also: Finger weg von Autoglobals und NUR über die GET- bzw. POST-Variablen zugreifen. :warn:

alcaeus 2. Mai 2005 20:02

Re: PHP brücke ???
 
Zitat:

Zitat von Phoenix
Also: Finger weg von Autoglobals und NUR über die GET- bzw. POST-Variablen zugreifen. :warn:

Und um da noch eins draufzusetzen: wenn die Variablen in SQL-Statements eingebaut werden sollen, dann sollte noch einen Type-check machen. Fuer ints z.B.:
Code:
$foo = intval($_GET['foo'])
So kann man nicht SQL-Statements einschleussen, wenn man sowas hat:
Code:
SELECT * from foo_bar WHERE foo_id=$foo
Wenn ich keinen Typecheck mache, so kann ich ueber $foo ein SQL-Statement einschleussen und dieses ausfuehren lassen, so kann man z.B. die gesamte DB loeschen.

Greetz
alcaeus

yankee 2. Mai 2005 20:18

Re: PHP brücke ???
 
Zitat:

Zitat von Phoenix
Zitat:

Zitat von yankee
Geht nat. nur, wenn autoglobals aktiviert sind. Aber das ist eigentlich überall, weil auch nichts dagegen spricht.

:wall: Natürlich spricht das so ziemlich alles was Sicherheit angeht dagegen!
Sonst könnte man damit im Script verwendete Variablen einfach so überschreiben. Schlimmstenfalls sogar eigene SQL-Statements in die DB einschleusen. Also: Finger weg von Autoglobals und NUR über die GET- bzw. POST-Variablen zugreifen. :warn:

Klar, wenn man eine variable nicht initialisiertz, ist das ein sicherheitsrisiko. Aber auch einfach schlampig Programmiert.
Zum Beispiel
$sql .="blabla";
ist nat. schlecht. Wenn man sowas in einer Schleife benutzen möchte, nimmt man eben einfach $sql =""; davor.

@alcaeus:
man muss entweder das $ codieren (d.h. \$), denn sosnt hast eh ein Problem. Oder siehe oben, Variable initialisieren!

Wo ist das Problem??

alcaeus 2. Mai 2005 20:20

Re: PHP brücke ???
 
Zitat:

Zitat von yankee
@alcaeus:
man muss entweder das $ codieren (d.h. \$), denn sosnt hast eh ein Problem. Oder siehe oben, Variable initialisieren!

:gruebel: wenn ich habe:
Code:
$sql = "SELECT * FROM foo_bar WHERE foo_id=$foo";
dann muss ich nichts kodieren.

Greetz
alcaeus

yankee 2. Mai 2005 20:25

Re: PHP brücke ???
 
Zitat:

Zitat von alcaeus
Code:
$sql = "SELECT * FROM foo_bar WHERE foo_id=$foo";
dann muss ich nichts kodieren.

Kommt drauf an, welches Ergebnis du erreichen willst:
wenn in $sql das drin stehen soll:
Code:
SELECT * FROM foo_bar WHERE foo_id=$foo
dann musst du ein backsläsh vor das $ stellen, weil der PHP-Interpreter sonst den Inhalt der Variable $foo in den query reinschmeißt. Kann natürlich sein, dass der das nicht macht, wenn isset($foo) =false.
Aber mit einem Bäcksläsh sind alle Problem adé. Und wenn du beabsichtigst, dass der Inhalt der Variable $foo da drin steht, dann muss der Wert nat. auch irgendwo herkommen. Und dann wirst du eine konsequente Zuweiseung ($foo ="hallo") durchfüphren, die spätestetns jetzt nicht mehr von Autoglobals manipuiliert werden kann.

alcaeus 2. Mai 2005 20:27

Re: PHP brücke ???
 
:roll: Na klar will ich den Inhalt von $foo reinschreiben, deshalb das Beispiel oben mit der intval-Pruefung.

Greetz
alcaeus

yankee 2. Mai 2005 20:32

Re: PHP brücke ???
 
Zitat:

Zitat von alcaeus
:roll: Na klar will ich den Inhalt von $foo reinschreiben, deshalb das Beispiel oben mit der intval-Pruefung.

Und das geht mit Autoglobals also nicht, oder was willst du mir erzählen??

flomei 2. Mai 2005 21:20

Re: PHP brücke ???
 
Leute, register_globals und SQL Injections sind sicherlich ne interessante Sache aber nicht ganz das eigentliche Thema hier.

Es ging darum wie er am Besten von außen Zugriff auf seine Datenbank erhält. Angestrebt ist eine Lösung mit PHP und ich würde mich freuen wenn darüber jetzt weiter diskutiert werden könnte.

Danke.

MFG Florian :hi:

DGL-luke 2. Mai 2005 22:20

Re: PHP brücke ???
 
das heisst im endeffekt:

delphiprogramm meldet sich beim php-skript an -> php-skript meldet sich als localhost an der auf dem selben server residierenden mysql-db an.
und dann können über die brücke php-skript daten zwischen programm und db ausgetauscht werden.

theoretisch kein problem.

bate 3. Mai 2005 06:29

Re: PHP brücke ???
 
Zitat:

Zitat von yankee
Zitat:

Zitat von alcaeus
:roll: Na klar will ich den Inhalt von $foo reinschreiben, deshalb das Beispiel oben mit der intval-Pruefung.

Und das geht mit Autoglobals also nicht, oder was willst du mir erzählen??


http://de.php.net/register_globals

Hier zum nachlesen. Ich würde an deiner stelle nicht auf dieses feature "hoffen".

generic 3. Mai 2005 13:41

Re: PHP brücke ???
 
deine "brücken" nennt man in patternsprache proxy.

du kannst in php eine soap/wdsl schnittstelle programmieren.
dann lassen diese funktionen die du bereit stellst in jeder anderen programmiersprache/applikation nutzen.

dein client braucht dann noch nicht mal etwas von mysql wissen, sondern nur den webservice kennen.

Meflin 3. Mai 2005 13:47

Re: PHP brücke ???
 
Zitat:

Zitat von generic
deine "brücken" nennt man in patternsprache proxy.

du kannst in php eine soap/wdsl schnittstelle programmieren.
dann lassen diese funktionen die du bereit stellst in jeder anderen programmiersprache/applikation nutzen.

dein client braucht dann noch nicht mal etwas von mysql wissen, sondern nur den webservice kennen.

ist dann aber eher ein wrapper, oder nicht?
http://de.wikipedia.org/wiki/Wrapper
Zitat:

allgemein ein Programm, das als Schnittstelle zwischen dem aufrufenden und dem umschlossenen (engl. wrapped) Programmcode agiert. Dies kann aus Kompatibilitätsgründen eingesetzt werden, wenn z. B. der umschlossene Code eine andere Programmiersprache verwendet, zur Sicherheit, um z. B. den Zugriff einzuschränken bzw. zu erweitern oder um etwas zu emulieren.

generic 3. Mai 2005 13:53

Re: PHP brücke ???
 
hmm wrapper - joar - ich denke eine kombi aus beiden ;)

btw. hier ein artikel über das thema (ich muss aber zu geben ich hab nur den titel überflogen)
http://www.sitepoint.com/print/own-w...ce-php-xml-rpc

hardy1234 4. Mai 2005 02:07

Re: PHP brücke ???
 
Hey,

was mit micht ganz klar ist, warum unbedingt mit php? Du kannst genauso gut mit der Zeos-LIB direkt auf die Datenbank zugreifen und bleibst von vornherein in Delphi. Das geht für MySQL, Firebird, PostgreSQL und konsorten. Dabei werden die Sicherheitsaspekte des DB-Servers genutzt und du hast direkten Zugriff auf die Datenbank.

Bei großen Joins und großen Datenmengen oder bei Schleifenverarbeitung wird das etwas zeitaufwendig, ist aber mit Sicherheit einfacher als ein PHP-Script dazwischen zu legen.

bate 4. Mai 2005 06:21

Re: PHP brücke ???
 
Zitat:

Zitat von hardy1234
Hey,

was mit micht ganz klar ist, warum unbedingt mit php? Du kannst genauso gut mit der Zeos-LIB direkt auf die Datenbank zugreifen und bleibst von vornherein in Delphi. Das geht für MySQL, Firebird, PostgreSQL und konsorten. Dabei werden die Sicherheitsaspekte des DB-Servers genutzt und du hast direkten Zugriff auf die Datenbank.

Bei großen Joins und großen Datenmengen oder bei Schleifenverarbeitung wird das etwas zeitaufwendig, ist aber mit Sicherheit einfacher als ein PHP-Script dazwischen zu legen.

Das ist ganz einfach weil der MySQLD aufm dem Server nur an das interne Device gebunden sein sollte und der port 3309 nicht nach extern offen ist. Sprich kein connect von extern. Local per PHP geht es wiederum schon. Das ist ein guter grund per SOAP auf die DB zuzugreifen. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:37 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