Hallöle,
bin bei PHP auf ein kleines Problemchen gestossen und
nerve hier mal mit gaaanz viel Text.
Ausgangssituation:
Es sind drei Dateien vorhanden.
1.) form.php (enthält ein Eingabefeld)
2.) auswertung.php (enthält die Auswertung der Eingabe)
3.) begriffe.txt (ist zunächst leer)
Quellcode form.php
Code:
<html>
<head>
<title>Test</title>
</head>
<body>
<form action='auswertung.php' method='POST'>
<input type='text' name='EingabeFeld'>
<input type='submit' value='senden'>
</form>
</body>
</html>
Quellcode auswertung.php
Code:
<html>
<head>
<title>Test</title>
</head>
<body>
<?
$datei=fopen("begriffe.txt",a);
if($_POST["EingabeFeld"] == "hoschie")
{
fwrite($datei,"Richtiges Wort: ");
fwrite($datei,$_POST["EingabeFeld"]);
echo "Richtiges Wort: ".$_POST["EingabeFeld"]."
";
}
else
{
fwrite($datei,"Falsches Wort: ");
fwrite($datei,$_POST["EingabeFeld"]);
echo "Falsches Wort: ".$_POST["EingabeFeld"]."
";
}
fwrite($datei,"\n");
fclose($datei);
?>
</body>
</html>
Beschreibung der Funktionsweise:
In der ersten Datei (form.php) gebe ich in des Formularfeld einen Begriff ein.
In der zweiten Datei (auswertung.php) überprüfe ich, ob die Eingabe dem Begriff
'hoschie' entspricht.
Wenn dem so ist, wird auf dem Bildschirm folgendes ausgegeben:
Richtiges Wort: hoschie
Wobei der Begriff hoschie hier der übergebene Wert der Variable EingabeFeld ist.
Zusätzlich schreibe ich die Bildschirmausgabe noch in eine Textdatei.
Sollte die Eingabe nicht dem Begriff 'hoschie' entsprechen wird
Falsches Wort: (Wert der Variable EingabeFeld) ausgegeben und ebenfalls in die
Textdatei geschrieben.
Auf diese Weise logge ich quasi mit, welche Begriffe so eingegeben wurden.
Natürlich weiss ich nicht, wer welchen Begriff eingab...aber das soll an dieser
Stelle auch keine Rolle spielen.
Soweit läuft alles und stellt auch kein Problem dar.
Wie sieht es aber aus, wenn ich die Eingabe automatisieren will?
Nehmen wir mal an, dass ich eine Textdatei habe, die drei Wörter enthält:
hallo
hoschie
moin
Ist es möglich der Reihe nach die Begriffe an das Formularfeld zu senden und
damit eine Eingabe vorzutäuschen ?
Ich ziele hier ganz klar auf Brute-Force ab, denn wenn so etwas funktioniert,
dann werde ich mir natürlich 'irgend einen' Schutz überlegen müssen.
...ist aber erstmal Zukunftsmusik, jetzt geht es mir nur um das Prinzip.
Im Internet habe ich etwas zum Thema HTTP-Request gefunden.
Wenn ich darüber Daten an das Formularfeld sende, bleibt die Variable des
Formularfeldes leer. Das heisst, dass meine Abfrage in der zweiten Datei
(abfrage.php) sinnlos ist, da ja nichts übermittelt wurde.
Hier mal die Datei request.php
Code:
<html>
<head>
<title>Test</title>
</head>
<body>
<?
function PostToHost($host, $path, $data_to_send)
{
$fp = fsockopen($host, 80);
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data_to_send);
while(!feof($fp))
{
$res .= fgets($fp, 128);
}
fclose($fp);
return $res;
}
$lines = file ('begriffe.txt');
foreach ($lines as $nr => $line)
{
echo "Wert von line: ".$line."
";
$EingabeFeld = $line;
echo "Wert des HTTP-Requests (x):
";
$x=PostToHost("www.tresenwalzer.de","/test/auswertung.php",$EingabeFeld);
echo "Das ergibt...
";
echo "Wert von x: ".$x."
";
echo "EOF
";
}
?>
</body>
</html>
Bei der request.php steige ich überhaupt noch nicht durch.
Habt Ihr eine Seite parat, die solche Dinge gut erklärt?
Der Code ist komplett geschnorrt und das soll natürlich nicht sein.
Wie unwschwer zu erkennen ist, habe ich die Seiten in der beschriebenen Form
online. Wenn ich meine request.php aufrufe, dann erhalte ich folgende Ausgabe:
Wert von line: hallo
Wert des HTTP-Requests (x):
Das ergibt...
Wert von x: HTTP/1.1 200 OK Date: Sun, 02 Apr 2006 12:22:36 GMT Server: Apache/1.3.19 (Unix) (SuSE/Linux) Connection: close Transfer-Encoding: chunked Content-Type: text/html 89
Wert von EingabeFeld:
Falsches Wort:
0
EOF
Wert von line: hoschie
Wert des HTTP-Requests (x):
Das ergibt...
Wert von x: HTTP/1.1 200 OK Date: Sun, 02 Apr 2006 12:22:36 GMT Server: Apache/1.3.19 (Unix) (SuSE/Linux) Connection: close Transfer-Encoding: chunked Content-Type: text/html 89
Wert von EingabeFeld:
Falsches Wort:
0
EOF
Wert von line: moin
Wert des HTTP-Requests (x):
Das ergibt...
Wert von x: HTTP/1.1 200 OK Date: Sun, 02 Apr 2006 12:22:36 GMT Server: Apache/1.3.19 (Unix) (SuSE/Linux) Connection: close Transfer-Encoding: chunked Content-Type: text/html 89
Wert von EingabeFeld:
Falsches Wort:
0
EOF
Ich habe in der Datei auswertung.php als erste PHP-Codezeile noch
Code:
echo "
Wert von EingabeFeld: ".$_POST["EingabeFeld"]."
";
eingefügt. In der Ausgabe ist zu sehen, dass die Variable EingabeFeld leer bleibt.
Wie also bekomme ich nun die Daten der Textdatei 'rüber'geschoben an die auswertung.php ?
Natürlich möchte in der Datei auswertung.php keine Änderung von Variablen-Namen vornehmen.
Es soll nach wie vor die Variable EingabeFeld abgefragt werden.
Danke fürs Lesen...
Dickus
[/code]