![]() |
Re: Chat FTP Server
Du bist ein Genie. Und ich ein Holzkopf. Also, jetzt kommt keine Fehlermeldung mehr es passiert einfach nix. Die Datei die sich bereits auf dem Server befindet bleibt leer :(. Hier noch einmal die beiden Quelltexte:
Delphi-Quellcode:
PHP Datei:
unit chatpas;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Winsock, ScktComp, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdFTP, IdHTTP; type TForm1 = class(TForm) Memo1: TMemo; Message: TLabel; Sendtext: TEdit; Send: TButton; Connect: TButton; ListBox1: TListBox; Nicknametext: TEdit; Nickname: TLabel; ListBox2: TListBox; ServerSocket1: TServerSocket; ClientSocket1: TClientSocket; IdHTTP1: TIdHTTP; procedure ConnectClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Lines.Delete(0); end; function GetLocalIPs(const Lines:TStrings):Boolean; type PPInAddr= ^PInAddr; var wsaData: TWSAData; HostInfo: PHostEnt; HostName: Array[0..255] of Char; Addr: PPInAddr; begin Result:=False; Lines.Clear; if WSAStartup($0102, wsaData)=0 then try if gethostname(HostName, SizeOf(HostName)) = 0 then Begin HostInfo:= gethostbyname(HostName); if HostInfo<>nil then Begin Addr:=Pointer(HostInfo^.h_addr_list); if (Addr<>nil) AND (Addr^<>nil) then Repeat Lines.Add(StrPas(inet_ntoa(Addr^^))); inc(Addr); Until Addr^=nil; end; end; Result:=True; finally WSACleanup; end; end; procedure TForm1.ConnectClick(Sender: TObject); var idhttp1: TIdhttp; parameter: TStringlist; begin if not GetLocalIPs(Listbox2.Items) then MessageDLG('Keine IP-Adresse',mtInformation,[mbOK],0); Parameter:=TStringlist.Create; idhttp1 := TIdhttp.Create(nil); parameter.Add('nickname=nicknametext.text'); parameter.Add('ip=listbox1.items(0)'); idhttp1.Post('http://sbinder.sb.funpic.de/users.php', parameter); idhttp1.Free; end; end.
Delphi-Quellcode:
<?
$inhalt = $_POST['nickname'] $_POST['ip']; $filename = 'users.txt'; $handle = fopen($filename, "a") fwrite($handle, $inhalt); fclose($handle); ?> |
Re: Chat FTP Server
Hi!
Zwei Sachen mal vorneweg, bevor man überhaupt nach anderen Sachen sucht: Du solltest bei der StringList mit Try..Finally arbeiten und sie auch wieder freigeben und außerdem solltest du dir Gedanken über den Umgang mit Strings machen. Im Moment steht in Nickname z.B. immer drin nicknametext.text; Richtigerweise sollte es wohl so aussehen:
Delphi-Quellcode:
parameter.Add('nickname='+nicknametext.text);
Ciao Frederic P.S. Ein Genie bin ich nicht :wink: |
Re: Chat FTP Server
Mir kommt es aber so vor als wärst du ein Genie ;)
Also das mit dem try finall usw. komme ich noch nicht ganz draus aber damit beschäftige ich mich später dann (oder ist das dass Problem???). Das mit dem Nickname (das +) ändere ich gleich mal, muss das auch bei IP rein?? Achja und stimmt das bei IP das im Klammer ne 0 ist. Hab ich rein gemacht weil bei mir zBs. mehrere IP's laufen, weil ich vmware (Sandboxteil) habe. Mit 0 ist doch die erste Zeile gemeint oder? EDIT: Was meinst du mit "Gedanken über den Umgang mit Strings"? |
Re: Chat FTP Server
Hi!
Ja, bei IP musst du das auch ändern. 0 gibt auch rein theoretisch die erste Zeile an, nur von welcher Listbox überhaupt? Du rufst ja GetLocalIps für Listbox2 auf, oder? Ciao Frederic Zum Edit: Das meinte ich wegen dem Hinzufügen mit dem +.... |
Re: Chat FTP Server
Naja, das ganze speichert es ja in Listbox 2 (ich schreib das nachher mal in die Formcreate damit es gleich von Anfang an drin ist) und die Listbox 2 hab ich auf Unsichtbar, sie dient quasi als Zwischenspeicher für die IP weil ich sonst nicht weiss wie ich es einfacher machen könnte.
EDIT: Wenn ich IP auf
Delphi-Quellcode:
ändere dann kommt beim compilieren die Meldung das ein Operator oder ein Semikolon fehlt.
parameter.Add('ip='+listbox1.items(0));
|
Re: Chat FTP Server
Hi!
Ja, das ist mir klar, aber bei der Parameterübergabe rufst du doch Zeile 1 (bzw. Index 0) von Listbox1 auf, oder? Ciao Frederic |
Re: Chat FTP Server
Nö von Listbox 2 weil ich ja am Anfang (jetzt in der Formcreate) meine IP dort hinein speichere.
EDIT: Siehe noch EDIT meines letzten Posts EDITEDIT: Sorry habe Listbox 1 im Quelltext geschrieben. Habe es geändert. |
Re: Chat FTP Server
Hi,
mal ne blöde frage, du nimmst doch die lokale IP, oder? Bei den meisten ist standartmäßig 192.168.0.1 die lokale IP. d.h.Die IP aller user ist gleich ?! |
Re: Chat FTP Server
Nicht unbedingt. Aber wie kann ich dann die andere IP rausfinden. Die, die man zBs. hier
![]() |
Re: Chat FTP Server
Hi!
Also es muss
Delphi-Quellcode:
heißen.
Listbox1.Items[0]
Zum Thema der globalen oder externen Ip gibts hier massenweise Threads: einfach mal suchen. Ciao Frederic |
Re: Chat FTP Server
musste hier einfach mal im forum suchen, ich glaub du musst ne php seite uploaden, die die internet IP zurückwirft und dnan kannst du die mit idHTTPget oder so auslesen, bin mir aber nicht sicher, hab da nur mal was gelesen hier im forum
EDIT:... fkerber war schneller ... |
Re: Chat FTP Server
Ok, werd ich dann mal.
Übrigens der Fehler ist weg (danke fkerber) aber die Datei ist und bleibt leer. |
Re: Chat FTP Server
Hi!
Funktioniert es denn, wenn du die PHP-Datei im Browser aufrufst (natürlich mit Parameter)? Ciao Frederic |
Re: Chat FTP Server
Wie ruf ich das teil mit paramter auf?
|
Re: Chat FTP Server
Hi!
![]() (sofern die Adresse stimmt...) Edit: Ein Klick auf den Link zeigt schon, dass da was nicht passt... Siehe da:
Delphi-Quellcode:
Fehler in Zeile 1 - richtig wäre: $inhalt = $_POST['nickname']; (oder ein + dazischen oder war es bei PHP ein . ? :gruebel:
<?
$inhalt = $_POST['nickname'] $_POST['ip']; $filename = 'users.txt'; $handle = fopen($filename, "a") fwrite($handle, $inhalt); fclose($handle); ?> Ciao Frederic |
Re: Chat FTP Server
Zitat:
|
Re: Chat FTP Server
Hi!
Jepp, dazu siehe mein Edit... Ciao Frederic |
Re: Chat FTP Server
Aber dazu muss ich ja zwei Variablen machen und dann geht das mit dem fwrite Befehl nicht mehr so oder?
Delphi-Quellcode:
Oder sollte ich so?
<?
$inhalt = $_POST['nickname']; $inhalt2 = $_POST['ip']; $filename = 'users.txt'; $handle = fopen($filename, "a") fwrite($handle, $inhalt $inhalt2); fclose($handle); ?> [delphi]<? $inhalt = $inhalt2 $inhalt3 $inhalt2 = $_POST['nickname']; $inhalt3 = $_POST['ip']; $filename = 'users.txt'; $handle = fopen($filename, "a") fwrite($handle, $inhalt); fclose($handle); ?> PS: Funzt immer noch nicht. |
Re: Chat FTP Server
Hi!
Ich denke, es sollte so aussehen:
Code:
<?
$inhalt = $_POST['nickname'].$_POST['ip']; $filename = 'users.txt'; $handle = fopen($filename, "a") fwrite($handle, $inhalt); fclose($handle); ?> Ciao Frederic |
Re: Chat FTP Server
Zitat:
|
Re: Chat FTP Server
Hi!
Dann schau dir mal das hier an: ![]() FWrite liefert etwas zurück, damit solltest du irgendwas machen (und wenn du es nur in ne Dummy-Variable schreibst) Sonst steht da ein sinnloser String rum... Ciao Frederic |
Re: Chat FTP Server
Ja so ne Bytegrösse oder so. Wie bring ich den in ne Variable?
|
Re: Chat FTP Server
Hi!
Delphi-Quellcode:
Ciao Frederic
$dummy = fwrite(usw. usf.)
|
Re: Chat FTP Server
Zitat:
|
Re: Chat FTP Server
Hi!
Nein, natürlich nicht, wollte jetzt nur nicht nochmal zurückblättern. Übernimm den fwrite-Ausdruck von vorher und weiß es dem dummy zu . Ciao Frederic |
Re: Chat FTP Server
Zitat:
EDIT: Als Hilfe. Line 5 ist neu das hier
Delphi-Quellcode:
Gesamter PHP Quelltext:
$dummy = fwrite($handle, $inhalt);
Delphi-Quellcode:
<?
$inhalt = $_POST['nickname'].$_POST['ip']; $filename = 'users.txt'; $handle = fopen($filename, "a") $dummy = fwrite($handle, $inhalt); fwrite($handle, $inhalt); fclose($handle); ?> |
Re: Chat FTP Server
Hi!
In Zeile 4 fehlt das ; am Ende. Ciao Frederic |
Re: Chat FTP Server
Zitat:
Kann man auch n Leerschlag zwischen dem Nicknamen und der IP machen und danach einen Abschnitt. Und wie lösche ich danach wieder die Zeile wo mein Nickname drinsteht? |
Re: Chat FTP Server
Hi!
Stimmt es war ja jetzt doppelt. Also kompeltt mit Leerzeichen:
Delphi-Quellcode:
Was löschen angeht, da such doch mal etwas bei google, was du mit PHP und Dateien so anfangen kannst.
<?
$inhalt = $_POST['nickname'].' '.$_POST['ip']; $filename = 'users.txt'; $handle = fopen($filename, "a"); fwrite($handle, $inhalt); fclose($handle); ?> Ciao Frederic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 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