kleiner bot , fsockopen
flip
- php
Guten Abend,
wie das Thema schon andeutet versuch ich mich grad an einem kleinem bot- Mechanismus..
auf meinem lokalem Apache2 soll eine php-Datei auf eine andere im gleichem Verzeichnis zugreifen und Daten in ein Formular schreiben.
Zunächst bin ich noch dabei diese Datei zu öffnen, was noch nicht klappt...
$op = fsockopen("****.php",80);
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in C:\Apache2\htdocs\*****\**.php on line 13
Warning: fsockopen() [function.fsockopen]: unable to connect to ****.php:80 (Unknown error) in C:\Apache2\htdocs\****\**.php on line 13
bin für jeden Tipp dankbar...
mbg flip
hi,
es muss bisher an der Adresse liegen..
www.google.de krieg ich keine Fehlermeldungen ...
komplette Pfadangabe al la localhost/******/***.php geht auch nicht..
wie muss ich den Pfad angeben?
mbg flip
ok,
schon etwas mehr licht...
Warning: fsockopen() [function.fsockopen]: unable to connect to http://localhost/*****/****.php:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?) in C:\Apache2\htdocs\*****\**.php on line 13
Wie schalt ich das an ?
mbg flip
Hi,
$op = fsockopen("****.php",80);
"php" ist keine existierende Top-Level-Domain.
wie muss ich den Pfad angeben?
Im Inhalt des Requests, abhängig vom verwendeten Protokoll. Die TCP/IP-Verbindung hat nichts damit zu tun, da nicht sie auf HTTP basiert, sondern umgekehrt.
bin für jeden Tipp dankbar...
Mache Dir ausreichende Gedanken, _bevor_ Du ein Posting abschickst. Dann brauchst Du Dir auch nicht zweimal selbst zu antworten.
Cheatah
Hi,
$op = fsockopen("****.php",80);
"php" ist keine existierende Top-Level-Domain.
ok, wenn ich es in eine *.de umbenenne, bekomm ich den Quellcode ausgegeben.
Wie stell ich das an ...
wie muss ich den Pfad angeben?
Im Inhalt des Requests, abhängig vom verwendeten Protokoll. Die TCP/IP-Verbindung hat nichts damit zu tun, da nicht sie auf HTTP basiert, sondern umgekehrt.
Also http basiert auf Tcp/ip , is klar und fsockopen öffnet eine Verbindung zum Internet auf Basis von Tcp oder udp ...
Wie form ich meine Dateien um damit es klappt...?
mbg flip
Hi,
Wie form ich meine Dateien um damit es klappt...?
indem Du den Request wie in RFC 2616 spezifiziert aufbaust.
Cheatah
Hallo,
$op = fsockopen("****.php",80);
wie wäre es mit
$host = 'example.com';
$path = '/pfad/zur/datei';
$fp = @fsockopen($host, 80,);
$res='';
if ($fp) {
fputs($fp, "GET $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Connection: close\r\n\r\n");
while(!feof($fp)) {
$res .= fgets($fp, 128);
}
fclose($fp);
}
print_r($res);
mfg
Twilo
Hallo,
$op = fsockopen("****.php",80);
wie wäre es mit
$host = 'example.com';
$path = '/pfad/zur/datei';
$fp = @fsockopen($host, 80,);
$res='';
if ($fp) {
fputs($fp, "GET $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Connection: close\r\n\r\n");
while(!feof($fp)) {
$res .= fgets($fp, 128);
}
fclose($fp);
}
print_r($res);
>
> mfg
> Twilo
Das sieht nett aus, könntest du es bitte beschreiben...
was heissen z.B diese r und n ...
mbg flip
>
Hallo.
was heissen z.B diese r und n ...
Derart maskiert sind das Zeilenumbrüche.
MfG, at
Hallo,
soll hier:
fputs($fp, "GET $path HTTP/1.1\r\n");
etwa der pfad bei mir http://localhost/.../....php
in http 1.1 umgewandelt werden??
beim pfad steht ja schon allvoran http://
bitte um klärung.
mbg flip
Hallo,
fputs($fp, "GET $path HTTP/1.1\r\n");
etwa der pfad bei mir http://localhost/.../....php
in http 1.1 umgewandelt werden??
beim pfad steht ja schon allvoran http://
du solltest mal nach HTTP Resquest google'n...
bei dir wäre $host = 'localhost' und $path = '/.../....php'
mfg
Twilo
Hallo,
bei dir wäre $host = 'localhost' und $path = '/.../....php'
Ich bekomme leider diese Fehlermeldung...
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Apache2\htdocs\iqtest\Bot.php on line 35
line 35 ist jene wo das while kommmt.
$host = 'localhost';
$path = 'iqtest/fuck.php';
$fp = fsockopen($host, 80);
$res='';
if ($fp) {
fputs($fp, "GET $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Connection: close\r\n\r\n");}
while(!feof($fp)) {
}
fclose($fp);
Hab mir etwas dies rfc angeschaut, da wird so wie du es gemacht hast
host und datei getrennt, hab aber nicht jedes Wort verstanden.
Könntest du mir noch ein Tipp geben wie ich da weiter komme.
mbg flip
Hallo,
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Apache2\htdocs\iqtest\Bot.php on line 35
while(!feof($fp)) {
}
Ist ja auch logisch.
In der while-Scleife hast du das
$res .= fgets($fp, 128);
vergessen. Ist ja klar, dass das sonst ne Endlosschleife wird.
Jonathan
yo,
danke is wohl irgendwie untergegangen beim kopieren...
jetzt bekomm ich aber einen bad request.
Wozu dient das @ for fsockopen()?
$res .= fgets($fp, 128); // 128 Zeichen der ersten Zeile vom Zeiger aus nicht? Ich möchte aber gern alle Zeichen der Seite einlesen.
Anschließend noch durchsucen, dacht ich mir mit preg_match.
mbg flip
Hallo,
Wozu dient das @ for fsockopen()?
solche Fragen beantwortet dir das PHP Manual
Fehler-Kontroll-Operatoren
$res .= fgets($fp, 128); // 128 Zeichen der ersten Zeile vom Zeiger aus nicht? Ich möchte aber gern alle Zeichen der Seite einlesen.
wenn dir 128 zu wenig ist, pass es doch nach deinen Vorlieben an ;-)
fgets
mfg
Twilo
Hallo flip,
$res .= fgets($fp, 128); // 128 Zeichen der ersten Zeile vom Zeiger aus nicht? Ich möchte aber gern alle Zeichen der Seite einlesen.
Machst du doch. Du liest halt eben nur in 128 byte-Stücken ein, aber dank der While-Scheife kommt alles an.
Jonathan