Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Komponente: MySQL via PHP-Tunnel (https://www.delphipraxis.net/54644-komponente-mysql-via-php-tunnel.html)

CG2003 27. Jul 2006 07:19

Re: Komponente: MySQL via PHP-Tunnel
 
Ist ja schön und gut, aber ohne TDataSource Ableitung finde ich die Komponente "relativ" nutzlos und uninteressant für andere.
Ich denke, sobald eine TDataSource Ableitung implementiert ist, kann man sie auch gebrauchen.

Gigant02 19. Jan 2007 22:38

Re: Komponente: MySQL via PHP-Tunnel
 
moin moin

also ich will mal wieder etwas leben hier reinbringen da ich die komponente in zukunft brauchen werde

nun gut

@ACE-ppc ich habe die komponente noch nicht getestet und bin selber mehr oder weniger einer der kein voll profi ist aber sich doch recht gut damit auskennt und auch gerne damit mehr auseinander setzen würde

nun ich habe noch keine komponente entwickelt aber ich halte das hier für sehr sinnvoll

ps

wir sollten eine entwickler page für die komponente basteln wo ein wikidrauf ist wo wir einerseits die funktionen erklären und halt wie was aufgebaut ist

somit würden dann auch mehr dran arbeiten

und macht mal eine liste was alles genau gemacht werden muss !! dann schau ich mal um was ich mich alles kümmer

lg, Ciam

Gigant02 19. Jan 2007 23:08

Re: Komponente: MySQL via PHP-Tunnel
 
ohha

also ich habe mir das jetzt mal genauer angesehen

was schonmal schade ist
es fehlen alle komentare und der quellcode ist nicht dokumentiert

naja ok er ist ja noch sehr überschaubar

und der weg zum richtigen anbinden ist ja noch lang weit und steinig

also ich werde wohl mal die tage einpaar neue funktionen hinzufügen

weil ich zur zeit ein programm schreibe um einen terminplaner im internet mit Outlook abzugleichen
und ich glaube da werd ich die komponente doch mal auf den hertefall stellen und schaun was noch alles fehlt

ich schicke euch mal in zweiwochen die neuen sourcen


lach dann ist er das caos so richtig groß

lg, gigant

CG2003 26. Feb 2007 13:58

Re: Komponente: MySQL via PHP-Tunnel
 
Zitat:

Zitat von Gigant02
ohha

also ich werde wohl mal die tage einpaar neue funktionen hinzufügen

...

ich schicke euch mal in zweiwochen die neuen sourcen

Hi,

ich wollte mal fragen, ob an den "Komponenten" noch weiter gearbeitet wird, oder ob das "Projekt" tot ist?!

quso 22. Mär 2007 20:11

Re: Komponente: MySQL via PHP-Tunnel
 
Zitat:

Es gab ja mal 'ne Zeit lang die WebAccess Komponente von Nozicle, mit welcher man via PHP auf eine MySQL Datenbank eines Providers (1&1, Strato) zugreifen kann, wenn der MySQL Server nicht direkt von Aussen angesprochen werden konnte.

Leider sind diese Kompo's vom Hersteller nicht mehr erhältlich.
Hier geht es zum Download

Rociel 28. Mär 2007 21:38

Re: Komponente: MySQL via PHP-Tunnel
 
hi, ich möchte die komponente für ein projekt verwenden, das problem ist jedoch, dass nachdem ich die databasekompo drinne hab und compilieren will, die fehlermeldung kommt, die designintf.dcu würde fehlen.
das liegt wohl daran, dass ich die trialversion verwende, was kann man dagegen machen?

TKC 29. Mär 2007 11:22

Re: Komponente: MySQL via PHP-Tunnel
 
Hier ein funktionierender DL Link Download .

Rociel 29. Mär 2007 11:43

Re: Komponente: MySQL via PHP-Tunnel
 
das hab ich auch schon versucht zu installiern, aber da bringt er mir, dass die Basedataset.pas fehlt

franktron 29. Mär 2007 11:58

Re: Komponente: MySQL via PHP-Tunnel
 
Zitat:

Zitat von Rociel
das hab ich auch schon versucht zu installiern, aber da bringt er mir, dass die Basedataset.pas fehlt

Weil die Personal Edition keine DB Kombos hat und somit du diese pas nicht hast

Rociel 29. Mär 2007 12:18

Re: Komponente: MySQL via PHP-Tunnel
 
hm, ich versuchs grad das MySQL-package hier auf ner 7E version zu installiern.

der bringt mir beim compiliern des eigentlichen projektes dann, dass IdHTTP mit ner andren Indy version erzeugt wurde, kann mir wer sagen, welche Indy version das ist ?

(hab die 9.0.18 version installiert)

CG2003 4. Apr 2007 08:42

Re: Komponente: MySQL via PHP-Tunnel
 
Ich wollte gerne wissen, ob an den "Tunnel-Komponenten" noch gearbeitet wird?!

Rociel 4. Apr 2007 09:56

Re: Komponente: MySQL via PHP-Tunnel
 
anscheinend nicht, hab mir inzwischen selber n tunnel geschrieben

CG2003 4. Apr 2007 10:03

Re: Komponente: MySQL via PHP-Tunnel
 
Zitat:

Zitat von Rociel
anscheinend nicht, hab mir inzwischen selber n tunnel geschrieben

Magst Du den vielleicht veröffentlichen, oder ist der eher closed-source?

Rociel 4. Apr 2007 10:18

Re: Komponente: MySQL via PHP-Tunnel
 
ja, weiß nicht, ob der dir was bringt, es geht bei dem lediglich um ne foreneinbindung, d.h. erst überprüfen ob der user existiert, und wenn ja, dann wird das md5(db-Passwort+irgendeinstring) übergeben um missbrauch zuvermeiden, und dann werden lediglich die geforderten werte über var_dump ausgegeben und im Prog in ein array gespeichert, also lediglich ein grundgerüst.
Mit dem auflisten im Prog bin ich noch nicht weiter weil ich noch keine erfahrung mit listboxes mit headern hab, und mom nicht die muse hab dran weiterzuarbeiten =)

also wenn noch interesse bestehen sollte, kann ich heut nachmittag dann mal den nötigen quellcode vom tunnel und vom prog reinstelln, muss jetzt erstmal zum essen und dann einkaufen.

Ghostwalker 4. Apr 2007 12:57

Re: Komponente: MySQL via PHP-Tunnel
 
Also..interresse auf alle Fälle.

Mir schweben schon seit längerem Ideen durch den Kopf, die sowas sehr gut gebrauchen könnten. Insbesondere hinsichtlich Boards und/oder CMS-Systemen. Gibts ja wie Sand am Meer und die meisten
Server haben PHP/MySQL zur Verfügung. Wenn man also ne Anbindung an sowas machen möchte, braucht man
i.d.R. so einen Tunnel. :)

supermuckl 4. Apr 2007 13:13

Re: Komponente: MySQL via PHP-Tunnel
 
mal ne doofe frage/idee
wieso schreibt man nicht einen mysql server emulator, der als lokaler dienst z.b. auf dem gleichen rechner läuft wie der normale mysql client, der auf den server zugreifen will, der dann alle anfragen über das php script dann weiterleitet?

also ungefär so:

mysql server -> tcp/ip oder socks -> php / phpscript -> HTTP PROTOCOL / Internet -> mysql-server-emu -> tcp/ip -> mysql client anwendung

dann müsste man evtl nur alle anfragen weiterleiten und wieder zurück und alles halbtransparent tunneln was so abläuft
dann kann man nämlich alle "normalen" mysql client librarys, direct connect quellen, datasource zeugs und andere sachen verwenden und muss da garnichts an der endanwendung/frontend ändern

wfoertsch 4. Apr 2007 13:52

Re: Komponente: MySQL via PHP-Tunnel
 
Zitat:

Zitat von supermuckl
mal ne doofe frage/idee
wieso schreibt man nicht einen mysql server emulator, der als lokaler dienst z.b. auf dem gleichen rechner läuft wie der normale mysql client, der auf den server zugreifen will, der dann alle anfragen über das php script dann weiterleitet?

also ungefär so:

mysql server -> tcp/ip oder socks -> php / phpscript -> HTTP PROTOCOL / Internet -> mysql-server-emu -> tcp/ip -> mysql client anwendung

dann müsste man evtl nur alle anfragen weiterleiten und wieder zurück und alles halbtransparent tunneln was so abläuft
dann kann man nämlich alle "normalen" mysql client librarys, direct connect quellen, datasource zeugs und andere sachen verwenden und muss da garnichts an der endanwendung/frontend ändern

Hi,

also das wäre mir sogar nen Hunni wert :-D


Gruss

Rociel 4. Apr 2007 14:09

Re: Komponente: MySQL via PHP-Tunnel
 
@supermuckl sowas ist schon nicht schlecht.

aber 1. weiß ich nicht wie man dann den MySQL server emuliert

und 2. ist das prog dann für meine Leute gedacht, also würdes vllt. im Internet irgendwo schwirren, und mit dem tunnel den ich schreib, sind nur spezielle abfragen möglich die der dann ausgiebt, man hat also später dann nich auf die gesammte db zugriff wodurch es ein bisschen sicherer ist.

So hier die tunnel.php

Code:
<?php

  include "LA/phpBB2/config.php";

  $link = mysql_connect($dbhost,$dbuser,$dbpasswd) or die('DB_FAIL1');
  mysql_select_db($dbname) or die('DB_FAIL2');
   
  $aktion  = $_POST['aktion'];
  $user    = $_POST['user_name'];
  $pass    = $_POST['user_passwort'];
  $db_pass = $_POST['db_pass'];
  $abfrage = $_POST['abfrage'];
   
   if ($db_pass == md5($dbpasswd."irgendeinstring")) {$db_pass = $dbpasswd;}

switch ($aktion) {
   case "login":
     $sql = "SELECT
                COUNT(*) as Anzahl
              FROM
                phpbb_users
              WHERE
                username= 'Rociel'/* eigentlich $user */ AND user_password= '".md5($pass)."' AND user_id > 0";
//         echo $sql."\n";
          $result = mysql_query($sql) OR die('DB_FAIL3');
          $row = mysql_fetch_assoc($result);
          if($row['Anzahl']) {
                  echo md5($dbpasswd."irgendeinstring")."\n";
                  echo "U_VALID";
                  mysql_close($link);
               } else die('U_NOTVALID');
      break 1;

   case "abfrage":
     if ($abfrage != "") {
           mysql_connect($dbhost,$dbuser,$db_pass) or die('DB_FAIL1');
             mysql_select_db($dbname) or die('DB_FAIL2');
           $sql = $abfrage;
           $result = mysql_query($sql) OR die('DB_FAIL3');
            while ($row = mysql_fetch_assoc($result))
              {var_dump($row);}
         }
         else echo "Kein Query gefunden";
    
    
   }


?>
die $pass abfrage ist zur Prüfung, ob sich der User eingeloggt hat, analog einfach bei case "abfrage" $dbpasswd nutzen wenn dies nicht gewünscht ist

folgende func aufrufen um zu posten, ausgabe ist der im tunnel ausgebene wert:
hier das md5 nicht falsch verstehn, hatte vor das passwort als md5 zu senden, hab aber noch nix passendes gefunden

Delphi-Quellcode:
function TForm1.post(aktion,user:string;md5:PCHAR;abfrage:string=''):string;
var
  Strings: TStringList;   //Zusammengesetze Post-Daten
  Stream:TStringStream;//Ausgabe der Aufgerufenen Seite
  ausgabe:String;             //Ausgabe der aufgerufenen Seite als String
  zeile:String;               //Zum zeilenweisen Ausgeben der Rückgabe der Aufgerufenen Seite benutzte Zwischenvariable
begin
  Stream:=TStringStream.Create('');//Rückgabe-Stream erstellen
  Strings := TStringList.Create;  //Post-Daten-StringList erstellen
  try
    Strings.Add('aktion='+aktion);
    Strings.Add('user_name='+user);   //Post-Daten in die StringList eintragen
    Strings.Add('user_passwort='+md5);
    Strings.Add('db_pass='+PASSWORT);
    Strings.Add('abfrage='+abfrage);
    try
      http.Post('http://www.meine.seite/tunnel.php', Strings,stream);//Datei abrufen        //URL noch einstellen!
      ausgabe:=Stream.DataString; //Ausbage-Sring die zurückgegebenen Daten zuweisen
      zeile:=''; //Zwischenvariable leeren
    except //Fehlerbehandlung
     on E: Exception do
       showmessage('Error encountered during POST: ' + E.Message);
    end;
  finally
    ResponseMemo.Text := ausgabe;
    Strings.Free;
    Stream.Free;

    zeile := ResponseMemo.Lines.Strings[ResponseMemo.Lines.Count-1];

         if zeile = 'DB_FAIL1'   then error := DB_FAIL1
    else if zeile = 'DB_FAIL2'   then error := DB_FAIL2
    else if zeile = 'DB_FAIL3'   then error := DB_FAIL3
    else if zeile = 'U_VALID'    then begin
                   error := U_VALID;
                   ONLINE:=true;
                   PASSWORT := ResponseMemo.Lines.Strings[ResponseMemo.Lines.Count-2];
                   end
    else if zeile = 'U_NOTVALID' then error := U_NOTVALID

    else result := ResponseMemo.Text;

    case error of
      DB_FAIL1   : ListBox1.Items.Add('Verbindung zu sql fehlgeschlagen');
      DB_FAIL2   : ListBox1.Items.Add('Verbindung zur db fehlgeschlagen');
      DB_FAIL3   : ListBox1.Items.Add('Query konnte nicht ausgeführt werden');
      U_VALID   : ListBox1.Items.Add('Login OK.');
      U_NOTVALID : ListBox1.Items.Add('Login nicht OK.');
    end;

    error := NO;

//   if ResponseMemo.Lines.Strings[ResponseMemo.Lines.Count-1] = 'DB_FAIL' then result :='DB_FAIL';
   
  end;
end;
nun die proc, die die ausgabe in ein Array of Array of String ausgiebt

Delphi-Quellcode:
procedure TForm1.löse(res:string;lv:TListView);
  function getArrayLength(res:string):integer; //Bestimme die Arraygröße des ersten
  var i,j:integer;                            //Inhaltes
  begin
    i := 1;
    j := 0;
    repeat
      if res[i]='[' then inc(j);
      inc(i);
    until res[i-1] = '}';
    result:=j;
  end;

  procedure settabletop(res:string);
  var n,o,anfang,ende,quote1,quote2,quote4,z_quotes_tt:integer;
      tbltop:string;
  begin
    anfang := 0;
    ende := 0;
    n:=1;
    repeat
      if res[n]='{' then anfang := n;
      if res[n]='}' then ende := n;
      inc(n);
    until res[n-1]='}';
    tbltop := Copy(res,anfang+1,ende-anfang-1);

    for n := 0 to v_results - 1 do
        begin
          o:=1;
          z_quotes_tt:=0;
          quote1:=0;
          quote2:=0;
          quote4:=0;
          repeat
           if tbltop[o]='"' then
                        begin
                        inc(z_quotes_tt);
                        if z_quotes_tt = 1 then quote1 := o;
                        if z_quotes_tt = 2 then quote2 := o;
                        if z_quotes_tt = 4 then quote4 := o;
                        end;
           inc(o);
          until z_quotes_tt = 4;
          tabletop[n]:=Copy(tbltop,quote1+1,quote2-quote1-1);
          tbltop := Copy(tbltop,quote4+1,length(tbltop)-quote4-1);
        end;
  end;

  procedure seperateonce(var res:string; var data:Array of string);
    procedure seperatetwice(var dataset:string);
    var l,m,z_quotes,quote3,quote4:integer;
    begin
      for l := 0 to v_results - 1 do
        begin
          m:=1;
          z_quotes:=0;
          quote3:=0;
          quote4:=0;
          repeat
           if dataset[m]='"' then
                        begin
                        inc(z_quotes);
                        if z_quotes = 3 then quote3 := m;
                        if z_quotes = 4 then quote4 := m;
                        end;
           inc(m);
          until z_quotes = 4;
          data[l]:=Copy(dataset,quote3+1,quote4-quote3-1);
          dataset := Copy(dataset,quote4+1,length(dataset)-quote4-1);        
        end;
    end;

  var k,anfang,ende:integer;           //Teile die einzelnen Daten auf zur
      dataset:string;                  //Inhaltsbestimmung
  begin
    anfang := 0;
    ende := 0;
    k:=1;
    repeat
      if res[k]='{' then anfang := k;
      if res[k]='}' then ende := k;
      inc(k);
    until res[k-1]='}';
    dataset := Copy(res,anfang+1,ende-anfang-1);

    seperatetwice(dataset);

    res := Copy(res,ende+1,length(res)-ende-1);
  end;

var i:longint;
begin
  v_results := 0;
  for i := 1 to length(res) do
      begin
        if res[i] = '{' then inc(v_results);
     end;

  v_arraylength := getArraylength(res);


  setlength(results,v_results);
  setlength(tabletop,v_results);

  settabletop(res);

  for i := 0 to v_results - 1 do
    begin
    setlength(results[i],v_arraylength);
    seperateonce(res,results[i]);
    end;

end;
so und nun ein Beispiel zum aufrufen und die Variablen
Delphi-Quellcode:
type
    Terror = (NO,DB_FAIL1,DB_FAIL2,DB_FAIL3,U_VALID,U_NOTVALID);
    .
    .
    .
    private
      PASSWORT:string[32];

var
    tabletop:Array of string;        //enthält den Tabellenkopf tabletop[b]
    results:Array of Array of string; //results[0] -> erste eintrag, results[1] -> 2. ..., und results[a][b] vom a. eintrag der b. wert
    v_results,v_arraylength:integer;
  ONLINE:boolean;
  error:Terror = NO;
  Form1: TForm1;

procedure TForm1.FormCreate(Sender: TObject);
var sql:string;
begin
ONLINE := false;
post('login','USERNAME','PASSWORD im KLARTEXT');

setTabs(ONLINE);

sql := 'SELECT user_id,username FROM phpbb_users WHERE user_id < 3';

löse(post('abfrage','USERNAME','PASSWORD im KLARTEXT',sql),ListView1);

end;
so hoffe das is verständlich, wenn nicht einfach fragen

supermuckl 4. Apr 2007 15:00

Re: Komponente: MySQL via PHP-Tunnel
 
naja ich meine mal ein grundsätzliches projekt das alle einsatzgebiete breit abdeckt und auch sicher ist.

nicht auf ein spezielles projekt wie hier jetzt beschrieben wurde zugeschnitten - wie gesagt nur ein ideen entwurf meinerseits

ich habe leider zu wenig zeit mich da ran zu hocken (auch weil ichs selbst eigentlich nicht brauche)

aber einen server zu emulieren dürfte doch garnicht so schwer sein oder?

man muss ja nur das protocol analysieren und schauen wie die anfragen und replys usw aussehen und das dann einfach durchs php weiterreichen ohne großartige interpretation der daten und speicherung und verwaltung der selbigen.

beispiel einer anwendung, die jetzt mal ganz grob gesehen mit einem mysql server über php und emu kommunizieren würde:

mysql client connected zu emu applikation über tcp/ip
emu verwaltet diesen client nun temporär als session und nimmt query oder sonstiges ( login protocol von mysql usw) entgegen.
dieses wird verschlüsselt und an das php script auf dem webserver geschickt, wo der ziel-mysqlserver liegt
das phpscript connected über tcp/ip sockets zum mysql server und loggt sich ein bzw sendet das query im konformen mysql protocol
der server antwortet und schickt das reply an das phpscript (das script wartet bis server die ergebnismenge zurück gibt usw)
das phpscript verschlüsselt das und schickts wieder zurück an den richtigen client (session ist ja weiterhin aufgebaut)
die client application bekommt die ereignismenge

also im prinzip könnte man eigentlich den indy tcp tunnel umbauen, damit man damit rein über "strings versenden und empfangen" (die verschlüsselt sind) über php kommunizieren kann
das phpscript muss natürlich dann das gegenstück des tunnels als tcp lösung sein.
und schon ists sogar egal ob wir mysql oder was anderes da druchleiten - es kann alles auf tcp/ip basis sein :)

das bringt mich zu der annahme das es schon so einen tcp/ip tunnel als phpscript ja schon geben könnte?
man müsste das halt mit delphi verbinden können das das eine endstück delphi sein kann und das andere (kompatibel) php.

:)
habe jetzt alledings nicht die zeit da großartig zu suchen aber das wäre ein lösungsweg wo so ziemlich viel erschlagen würde, was an technischen problemen so auftreten können.

Rociel 4. Apr 2007 15:08

Re: Komponente: MySQL via PHP-Tunnel
 
hmpf, dazu müsste man sich dann mit den protokollen auseinandersetzen, wofür ich keine zeit hab, da ich noch keine erfahrungen hab was programmieren mit protokollen angeht, hatte damals nur n chat angefangen der über die socks-kompos von delphi lief....

nuja, wie gesagt, ich hoffe der quellcode ist erstmal soweit hilfreich für euch

Ghostwalker 4. Apr 2007 16:43

Re: Komponente: MySQL via PHP-Tunnel
 
@supermuckel

Warum so umständlich ?????

Zitat:

mysql server -> tcp/ip oder socks -> php / phpscript -> HTTP PROTOCOL / Internet -> mysql-server-emu -> tcp/ip -> mysql client anwendung
Mit einem PHP-Script ist der Weg folgender:

mysql-client <-> http-protokol <->php-script<->mysql-server

Mal ganz davon abgesehen das TCP/IP immer beteiligt ist, da das HTTP-Protokoll darauf aufbaut.

Aber welchen sinn sollte hier eine Mysql-Server-Emulation haben ???

supermuckl 5. Apr 2007 14:26

Re: Komponente: MySQL via PHP-Tunnel
 
der sinn besteht darin, das ich meine frontend anwendung nicht anrühren muss.

sie connected zum server emu wie zu einem normalen server und alles weitere über den webserver usw geht transparent ohne das dein client was davon merkt bzw umgebaut werden muss

mit tcp/ip protocol meine ich, das es kein http application layer ist, sondern das mysql protocol als app layer aufm tcp layer

Ghostwalker 5. Apr 2007 15:44

Re: Komponente: MySQL via PHP-Tunnel
 
Ok...nu hats gebimmelt :)

Es mag zwar die schnellere Variante sein (mit der EMU). Aber ich denke, sauberer wäre es, entsprechende DB-Komponenten zu bauen (TDataset/TDatabase). Damit wärs kein Problem den Client ein entsprechendes
Verhalten zu verpassen. Man bräuchte dann auch nicht extra eine Emu mit ausliefern/installieren.

Schlußendlich haben beide Methoden ihre Vor- und Nachteile, so das es wirklich auf den speziellen Anwendungsfall ankommt. Wenn der Client z.B. in einem kleinen Netzwerkläuft (also mehrere Anwender), ist die Emu sicher von Vorteil. Hier kann die Emu für ALLE Clients quasi als Verteiler agieren. Für einen einzelnen Rechner ist sicher die zweite Variante mit den Componenten besser (da einfacher zu installieren und resourcenschonender.).

anse 14. Apr 2007 19:22

Re: Komponente: MySQL via PHP-Tunnel
 
Etwas off-topic, gebe ich zu:

Zitat:

Zitat von supermuckl
mal ne doofe frage/idee
wieso schreibt man nicht einen mysql server emulator, der als lokaler dienst z.b. auf dem gleichen rechner läuft wie der normale mysql client, der auf den server zugreifen will, der dann alle anfragen über das php script dann weiterleitet?

Ganz genau! Und wenn man sich das mal genau überlegt, wird einem klar, wie überflüssig so eine Tunneling- oder Emulator-Geschichte ist! Denn: Der MySQL-Server ist meist aus guten Gründen so eingestellt, daß er keine externen Verbindungen zuläßt.

Genauergesagt geht es dabei um die Option "skip-networking", die von vielen Massenhostern aktiviert wird. Wenn nun jemand hingeht und einen Tunnel oder einen Emulator baut - wozu gibt es dann noch diese Einstellung? Bzw. welcher Systemadministrator kann sich dann noch auf diese Einstellung verlassen?

Die Antwort auf die Frage, wie man eine Verbindung zu einem MySQL-Server aufbaut der keine externen Verbindungen zuläßt lautet also: Frage den Server-Administrator, er soll bitte die externen Verbindungen aktivieren. Und wenn der das nicht will - aus welchem Grund auch immer - dann sollte man auch keinen Tunnel o.ä. bauen. Könnte man als Grenze zur Illegalität betrachten.

mschaefer 15. Apr 2007 11:11

Re: Komponente: MySQL via PHP-Tunnel
 
tja sicher sein kann sich der Admin nicht sein, denn die kommerzielle Tunnelkomponenten gibt es ja. Allerdings ist das Tunneling dann auf die Webauftritte beschränkt, die das explizit auch nutzen wollen. Gerade im Bereich des Datenbankabgleiches macht das Teiltabellenabgleiche möglich und man muß nicht die ganze DB per FTP hoch/runterladen. Eigentlich stellt sich nur die Frage ob man hier Geld oder Zeit ausgeben mag, wenn der Bedarf besteht.

PS: FTP ist auch nicht gerade das sicherchste Protokoll...

Grüße // Martin

neuronet 19. Sep 2009 16:38

Re: Komponente: MySQL via PHP-Tunnel
 
Hi Leute...

Nachdem ich ein paar Jährchen im Untergrund verbracht habe, wird die Arbeit an der Komponente wieder aufgenommen, sofern noch Interesse besteht...

mkinzler 20. Sep 2009 09:30

Re: Komponente: MySQL via PHP-Tunnel
 
Zitat:

sofern noch Interesse besteht...
Ich denke schon

almdudler777 20. Sep 2009 12:49

Re: Komponente: MySQL via PHP-Tunnel
 
also wenn das mit meiner neuen Delphi Version klappt,

hätte ich auf jeden ein Interesse daran, dass diese Arbeit nicht im Sand zerrinnt! - Danke!

neuronet 20. Sep 2009 14:25

Re: Komponente: MySQL via PHP-Tunnel
 
Okay... Dann werde ich mich wieder an die Arbeit machen... Ende der Woche sollte es dann eine neue Version geben. Hoffe nur, dass es dann keine Kompatibilitätsprobleme gibt, da ich mittlerweile Delphi 2010 nutze..

xFrankx 25. Okt 2009 11:59

Re: Komponente: MySQL via PHP-Tunnel
 
Hallo,

gehts hier noch weiter oder ist das Projekt eingestellt ?

wäre echt schön wenn es weiter geht. :thumb:



Gruß Frank

neuronet 26. Okt 2009 13:36

Re: Komponente: MySQL via PHP-Tunnel
 
Nachdem es nun doch eine Reaktion gegeben hat, wird das Projekt endgültig wieder aufgenommen....

xFrankx 29. Okt 2009 13:58

Re: Komponente: MySQL via PHP-Tunnel
 
Ich würde mich sehr darüber freuen. :hello:


Gruß Frank

waldforest 28. Nov 2009 15:51

Re: Komponente: MySQL via PHP-Tunnel
 
Ich befasse mich seit Neustem auch mit dem Thema,
Ziel ist bei mir eine lokale Datenbank mit einer Webdatenbank abzugleichen.

Mit den hier beschriebenen Wegen ist ja zumindets das Auslesen vom Server möglich.
Durch Anpassen der PHP-Datei auch Updates und Insert´s.
Eine Anassung auf Dataset-, Datasourcekomponente würde hier sicher hilfreich sein. Dann kan man doch sicher auf andere Grids (welche auch bearbeitbar sind), zurückgreifen.
Da ich nicht so fit in Komponentenerstellung bin freue ich mich auf die nächsten Schritte, die ich mit Interesse verfolgen werde.

teosuper 13. Jan 2010 09:09

Re: Komponente: MySQL via PHP-Tunnel
 
Hallo,

Ich habe mich auch schon mal mit ein PHP-Tunnel beschäftigt und auch mit der TDataset. Wenn es etwas bringt: fuer die TDataset gibt es beispiele in der MD5code oder MD7Code (Mastering Delphi Bücher).

Als ich die Idee für PHP-Tunnel an ein Kollege erzählt habe, hat der sich dran gesetzt und PHP code geschrieben die eine KbmMemtable compatible textfile erzeugt. Das würde gehen, alternative wäre vielleicht auch om XML vom PHP script zu bekommen die für die TClientDataset geeignet ist.

Aber es ginge noch einfacher: Es ginge auch im Ini format oder in etwas wie
Fields=2
Field1=Name;ftstring;20;no
Field2=Adresse;ftstring;50;no
Records=2
Record1=Teo;Niederlande
Record2=Teo2;Niederlande

(in ein loop zu lesen und auch ohne TDataset verwendbar)
Das wäre in PHP leicht zu coden und zu lesen, in Delphi auch und ich habe hiermit ein experiment gemacht wobei dies in ein TDataset geht (um data zwischen Delphi und Lazarus hin und her zu schicken).

Wenn erwünscht habe ich code der Mastering Delphi demos dabei und auch sources für diese TDataset.

xFrankx 24. Jan 2010 10:39

Re: Komponente: MySQL via PHP-Tunnel
 
Guten morgen,

mal das alte Projekt nach oben zieh :gruebel:


Mal ne kleine Frage ?
Wie sieht es aus wenn der php-tunnel hinter einem htaccess liegt ?





cu Frank

neuronet 25. Jan 2010 20:06

Re: Komponente: MySQL via PHP-Tunnel
 
Hab ich bisher noch nicht ausprobiert... Gute Frage, nächste Frage... :(

mschaefer 25. Jan 2010 21:50

Re: Komponente: MySQL via PHP-Tunnel
 
Schreibrechte braucht man mit php nur wenn man auch aufs Filesystem schreibt. Solange nur zur Datenbank durchgereicht wird und mit Variablen gearbeitet wird ohne Zwischenzuspeichern geht das auch mit nur Lesen-Rechte im htaccess.

Gibt es eigentlich schon Fortschritte im Projekt?

Grüße // Martin

omata 22. Feb 2010 02:27

Re: Komponente: MySQL via PHP-Tunnel
 
Siehe auch klick.

omata 10. Sep 2010 15:51

AW: Komponente: MySQL via PHP-Tunnel
 
@cbsistem: Schon mal den Post über deinem gesehen?

ahab 11. Aug 2011 15:38

AW: Komponente: MySQL via PHP-Tunnel
 
Hallo, da ich euer Forum über google(php tunnel gesucht) gefunden habe, habe ich es auch gleich getestet.
Soweit alles ok, den php tunnel habe ich bissel umgebaut und sende die Daten
über post('abfrage','xyz','dudarfstrein',sql); an die komponente TIdHTTP von indy-client
In der 1ten sql bekomme ich Daten zurück, in der 2ten sql bekomme ich einen Fehler
und weiß nicht mehr weiter.

da ich mir ein phpwbb Installiert habe, kann ich auch gut testen, bei der sql abfrage
sql := 'SELECT user_id,username FROM phpbb_users WHERE user_id < 3'

bekomme ich das in mein Memo, gibts Möglichkeiten über php das nur die Namen gesendet werden ?
array(2{["user_id"]=>string(2)"-1["username"]=>string(9)"Anonymous"}array(2{["user_id"]=>string(1)"2["username"]=>string(8) "Schubert"}

weil diesen String müsste ich zerlegen und mir die namen raus holen. ich hoffe das geht auch anders.


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sql : String;
begin

//  1SQL ok
    sql := 'SELECT user_id,username FROM phpbb_users WHERE user_id < 3'

//  2SQL nicht ok, gibt error
//  sql := 'SELECT user_email FROM `phpbb_users` WHERE `username` = '+chr(39)+'Schubert' + chr(39);

    post('abfrage','xyz','dudarfstrein',sql);



So habe ich mir mal meinen php Tunnel aufgebaut, da ich nicht die Originalen Zugangsdaten weiter an 3te geben wollte, sende ich 3 strings, wenn die ok sind bekommen die richtigen var ihren wert.
da ich in php noch NIE etwas gemacht habe, hoffe ich doch das dies ok ist.


Code:
<?php
  include "LA/phpBB2/config.php";

//  $link = mysql_connect($dbhost,$dbuser,$dbpasswd) or die('DB_FAIL1');
//  mysql_select_db($dbname) or die('DB_FAIL2');
   
  $aktion = $_POST['aktion'];
  $user   = $_POST['user_name'];    //dbuser
  $pass   = $_POST['user_passwort']; //dbname
  $db_pass = $_POST['db_pass'];      //dbpasswd
  $abfrage = $_POST['abfrage'];
 
//dbuser
  if ($user == "xyz") {
  $user = $dbuser;
  }

//dbname
  if ($pass == "dudarfstrein") {
  $pass = $dbname;
  }

//dbpasswd
  if ($db_pass == "123456") {
  $db_pass = $dbpasswd;
  }

switch ($aktion) {
   case "abfrage":
     if ($abfrage != "") {
           mysql_connect($dbhost,$user,$db_pass) or die('DB_FAIL1');
           mysql_select_db($pass) or die('DB_FAIL2');
           $sql = $abfrage;
           $result = mysql_query($sql) OR die('DB_FAIL3');
            while ($row = mysql_fetch_assoc($result))
              {var_dump($row);}
         }
         else echo "Kein Query gefunden";  
   }

mysql_close($link);
?>


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 Uhr.
Seite 2 von 3     12 3      

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