![]() |
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. |
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 |
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 |
Re: Komponente: MySQL via PHP-Tunnel
Zitat:
ich wollte mal fragen, ob an den "Komponenten" noch weiter gearbeitet wird, oder ob das "Projekt" tot ist?! |
Re: Komponente: MySQL via PHP-Tunnel
Zitat:
![]() |
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? |
Re: Komponente: MySQL via PHP-Tunnel
Hier ein funktionierender DL Link
![]() |
Re: Komponente: MySQL via PHP-Tunnel
das hab ich auch schon versucht zu installiern, aber da bringt er mir, dass die Basedataset.pas fehlt
|
Re: Komponente: MySQL via PHP-Tunnel
Zitat:
|
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) |
Re: Komponente: MySQL via PHP-Tunnel
Ich wollte gerne wissen, ob an den "Tunnel-Komponenten" noch gearbeitet wird?!
|
Re: Komponente: MySQL via PHP-Tunnel
anscheinend nicht, hab mir inzwischen selber n tunnel geschrieben
|
Re: Komponente: MySQL via PHP-Tunnel
Zitat:
|
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. |
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. :) |
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 |
Re: Komponente: MySQL via PHP-Tunnel
Zitat:
also das wäre mir sogar nen Hunni wert :-D Gruss |
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:
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
<?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"; } ?> 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:
nun die proc, die die ausgabe in ein Array of Array of String ausgiebt
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;
Delphi-Quellcode:
so und nun ein Beispiel zum aufrufen und die Variablen
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;
Delphi-Quellcode:
so hoffe das is verständlich, wenn nicht einfach fragen
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; |
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. |
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 |
Re: Komponente: MySQL via PHP-Tunnel
@supermuckel
Warum so umständlich ????? Zitat:
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 ??? |
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 |
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.). |
Re: Komponente: MySQL via PHP-Tunnel
Etwas off-topic, gebe ich zu:
Zitat:
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. |
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 |
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... |
Re: Komponente: MySQL via PHP-Tunnel
Zitat:
|
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! |
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..
|
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 |
Re: Komponente: MySQL via PHP-Tunnel
Nachdem es nun doch eine Reaktion gegeben hat, wird das Projekt endgültig wieder aufgenommen....
|
Re: Komponente: MySQL via PHP-Tunnel
Ich würde mich sehr darüber freuen. :hello:
Gruß Frank |
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. |
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. |
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 |
Re: Komponente: MySQL via PHP-Tunnel
Hab ich bisher noch nicht ausprobiert... Gute Frage, nächste Frage... :(
|
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 |
Re: Komponente: MySQL via PHP-Tunnel
Siehe auch
![]() |
AW: Komponente: MySQL via PHP-Tunnel
@cbsistem: Schon mal den Post über deinem gesehen?
|
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 17:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz