PHP Script zeigt weiße Seite an
Ich versuche mich mit einem Blackliste DNSBL Check PHP Script.
Jedoch hab ich mal wieder Tomaten vor den Augen. ...
Vielleicht sieht jemand warum es nicht klappt. HTML:
Eigentlich sollte jetzt ein Formular sichtbar sein, wo ich eine ip eingeben kann, welche dann nachschaut ob sie in einer Blacklist gelistet ist. Wenn ja sollte es angezeigt werden...
Leider seh ich nur weiß
Jedoch hab ich mal wieder Tomaten vor den Augen. ...
Vielleicht sieht jemand warum es nicht klappt. HTML:
<?php
$ip =["ip"];
function is_blacklisted($ip) {
$dnsbl_check=array("bl.spamcop.net",
"relays.osirusoft.com",
"list.dsbl.org",
"sbl.spamhaus.org");
if ($ip) {
$quads=explode(".",$ip);
$rip=$quads[3].".".$quads[2].".".$quads[1].".".$quads;
for ($i=0; $i<count($dnsbl_check); $i++) {
if (checkdnsrr($rip.".".$dnsbl_check[$i],"A")) {
$listed.=$dnsbl_check[$i]." ";
}
}
if ($listed) { return $listed; } else { return FALSE; }
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<p>IP Lookup: <input type="text" name="ip" /></p>
<p><input type="submit" NAME="gesendet" value="Übertragen" /></p>
</form>
Leider seh ich nur weiß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Dani am 29.12.2010 um 11:32:42 Uhr
Formatierungshilfen bitte benutzen!
Content-ID: 157700
Url: https://administrator.de/contentid/157700
Ausgedruckt am: 25.11.2024 um 19:11 Uhr
20 Kommentare
Neuester Kommentar
Moin.
Du musst die Funktion die Du geschrieben hast auch aufrufen...
Das Skript funktioniert nun so, solltest aber noch etwas daran optimieren, wenn Du das wirklich einsetzten willst.
Also vorallem an der Ausgabe und dem Layout!
HTH
MK
Du musst die Funktion die Du geschrieben hast auch aufrufen...
<?php
$ip = $_GET["ip"];
if($ip <> ""){
echo is_blacklisted($ip) . '<br />';
}
function is_blacklisted($ip) {
$dnsbl_check=array("bl.spamcop.net",
"relays.osirusoft.com",
"list.dsbl.org",
"sbl.spamhaus.org");
if ($ip) {
$quads=explode(".",$ip);
$rip=$quads[3].".".$quads[2].".".$quads[1].".".$quads;
for ($i=0; $i<count($dnsbl_check); $i++) {
if (checkdnsrr($rip.".".$dnsbl_check[$i],"A")) {
$listed.=$dnsbl_check[$i]." ";
}
}
if ($listed) {
return $listed;
}
else {
return FALSE;
}
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<p>IP Lookup: <input type="text" name="ip" /></p>
<p><input type="submit" NAME="gesendet" value="Übertragen" /></p>
</form>
Also vorallem an der Ausgabe und dem Layout!
HTH
MK
Moin.
Dieser Code funktioniert bei mir. Vielleicht kommt Deine Installation nicht mit dem $_GET["ip"] zurecht versuche sonst mal mit $ip zuarbeiten.
HTH
MK
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
if(isset($_GET["ip"])){
$ip = $_GET["ip"];
}
else{
$ip = "";
}
echo is_blacklisted($ip) . '<br />';
function is_blacklisted($ip) {
$listed = "";
$dnsbl_check=array("bl.spamcop.net",
"relays.osirusoft.com",
"list.dsbl.org",
"sbl.spamhaus.org");
if ($ip) {
echo '123 <br />';
$quads=explode(".",$ip);
$rip=$quads[3].".".$quads[2].".".$quads[1].".".$quads;
for ($i=0; $i<count($dnsbl_check); $i++) {
if (checkdnsrr($rip.".".$dnsbl_check[$i],"A")) {
$listed.=$dnsbl_check[$i]." ";
}
}
}
if ($listed) {
return $listed;
}
else {
return "Keine Treffer.";
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<p>IP Lookup: <input type="text" name="ip" /></p>
<p><input type="submit" NAME="gesendet" value="Übertragen" /></p>
</form>
Dieser Code funktioniert bei mir. Vielleicht kommt Deine Installation nicht mit dem $_GET["ip"] zurecht versuche sonst mal mit $ip zuarbeiten.
HTH
MK
Moin.
Also google hätte Dir da auch schnell helfen können. Du solltest Dich mal mit PHP etwas näher auseinandersetzen und dann die Dinge erstmal
selber angehen, dass bringt Dich am Ende weiter...
Aber...
... sollte Dir weiterhelfen.
HTH
MK
Also google hätte Dir da auch schnell helfen können. Du solltest Dich mal mit PHP etwas näher auseinandersetzen und dann die Dinge erstmal
selber angehen, dass bringt Dich am Ende weiter...
Aber...
<?php
$host = "www.google.de";
$ip = gethostbyname($host);
echo $ip;
?>
... sollte Dir weiterhelfen.
HTH
MK
Moin.
Vieleicht in dem Du mit dem Form einen Hostnamen übergibst und dass dann in die gethostbyname()-Funktion steckst,
anstatt die IP direkt zu verarbeiten!?
Also dass sollte doch jetzt auch im Babystatus erkennbar sein.
Du kannst auch zwei Felder übergeben host und ip und musst dann entscheiden was Du prüfst...
HTH
MK
Vieleicht in dem Du mit dem Form einen Hostnamen übergibst und dass dann in die gethostbyname()-Funktion steckst,
anstatt die IP direkt zu verarbeiten!?
Also dass sollte doch jetzt auch im Babystatus erkennbar sein.
Du kannst auch zwei Felder übergeben host und ip und musst dann entscheiden was Du prüfst...
HTH
MK
Moin.
Das wird auch so einfach mit einem Eingabefeld nicht gehen, da Du ja dann prüfen musst, ob es sich um eine IP oder
einen Host handelt.
Das könnte man dann mit reglären Ausdrücken bauen, aber dazu brauchst Du denke ich noch mehr Grundlagen...
Einfach ist es doch folgendermassen:
1. Zwei Eingabefelde Host und IP
2. Wenn IP leer ist Host in IP und dann die Funktion aufrufen
Fertig.
HTH
MK
Das wird auch so einfach mit einem Eingabefeld nicht gehen, da Du ja dann prüfen musst, ob es sich um eine IP oder
einen Host handelt.
Das könnte man dann mit reglären Ausdrücken bauen, aber dazu brauchst Du denke ich noch mehr Grundlagen...
Einfach ist es doch folgendermassen:
1. Zwei Eingabefelde Host und IP
2. Wenn IP leer ist Host in IP und dann die Funktion aufrufen
Fertig.
HTH
MK
Hi xp-user,
Dann solltest du auch schreiben . . .
Ich frage mich aber, wenn du mit $iphost = gethostbyname($host);" die IP-Adresse doch schon hast, warum willst du die
denn nochmal in einer anderen Variablen ablegen? Dann zerlegst du diese Variable in ein Array, anschließend verknüpfst du
die Arrayelemente wieder umständlich zu dem, was die IP vorher auch schon war.
Dann steht im PHP-Manual ==> http://www.php.net/manual/de/function.checkdnsrr.php
Beachte bitte das Wörtchen ODER. Du aber verknüpfst IP UND Hostname . . .
. . . heißt, bei dir steht jetzt da z.B.: "217.150.151.99.www.telekom.de". Also entweder bin ich jetzt zu doof dazu, aber ich sehe
in "deinem" Script, was übrigens schon vor Jahren in PHP-Net "Wort für Wort" veröffentlicht wurde, nicht, wie jetzt die Hosts aus
deiner Blacklist mit der eingegebenen IP in Verbindung gebracht werden. Zumal ich auch als IP "ABC.DFG.XY.r" eingeben kann:
Ein, zwei Hosts werden immer ausgegeben. Ich kann auch meinen Server in die Blacklist eintragen und die IP eingeben. Zumindest
das müsste ja dann funktionieren. Tut's aber nicht. Schreibe ich jedoch if (checkdnsrr($dnsbl_check[$i],"A")) . . . , dann kann
ich auch als IP "ABC.DFG.XY.r" oder sonst was eingeben, dann wird auch mein Server ausgegeben, je nachdem, wie der zweite
Parameter ist, also "A", "MX", "PTR", "SOA" . . . etc.. Dieses "Gefummel" im Script mit einer IP bringt also gar nix. Ich denke mal,
diese Funktion ist eher dazu da, um im "eigenen" Netz(werk) DNS-Einträge zu überprüfen. Dass ein Internet-Host-Name übergeben
werden muß, hat mit Internet selber eher auch nichts zu tuen, sondern heißt wohl nur, das muß ein FQDN-Name sein; subdomain.domain.tld
Es ist eigentlich auch ziemlich sinnfrei, IP-Adressen mit Hosts in Verbindung zu bringen. Dazu gab ja auch schon mal Fragen wie:
"Wie kann ich in meinem Gästebuch eine IP-Sperre einbauen, um Spam zu verhindern?". IP-Adressen werden für einen gewissen Zeitraum
verliehen (siehe Lease-Time). Du legst also meinen Host in deiner Blacklist ab, merkst dir meine IP. Drei Stunden später gehe ich wieder
ins Internet und hab' eine neue IP. Meinen Host findest du mit deiner gemerkten IP (wahrscheinlich) nie mehr wieder.
Also schreib' doch einfach mal, was du überhaupt machen willst. Vielleicht kommen wir dann irgendwie weiter.
Gruß
Günni
. . . erhalte ich $iphost und diese würde ich dann als $ip definieren.
Dann solltest du auch schreiben . . .
$ip = $iphost; ==> Zuweisung von rechts nach links und nicht umgekehrt.
Ich frage mich aber, wenn du mit $iphost = gethostbyname($host);" die IP-Adresse doch schon hast, warum willst du die
denn nochmal in einer anderen Variablen ablegen? Dann zerlegst du diese Variable in ein Array, anschließend verknüpfst du
die Arrayelemente wieder umständlich zu dem, was die IP vorher auch schon war.
$ip="192.168.0.1";
$quads=explode(".",$ip);
$rip=$quads[3].".".$quads[2].".".$quads[1].".".$quads;
echo $rip; ==> ergibt: 192.168.0.1
$quads=explode(".",$ip);
$rip=$quads[3].".".$quads[2].".".$quads[1].".".$quads;
echo $rip; ==> ergibt: 192.168.0.1
Dann steht im PHP-Manual ==> http://www.php.net/manual/de/function.checkdnsrr.php
Prüft DNS-Einträge auf Übereinstimmung mit einem gegebenen Internet-Host-Namen ODER einer IP-Adresse.
Beachte bitte das Wörtchen ODER. Du aber verknüpfst IP UND Hostname . . .
if (checkdnsrr($rip.".".$dnsbl_check[$i],"A")) . . .
. . . heißt, bei dir steht jetzt da z.B.: "217.150.151.99.www.telekom.de". Also entweder bin ich jetzt zu doof dazu, aber ich sehe
in "deinem" Script, was übrigens schon vor Jahren in PHP-Net "Wort für Wort" veröffentlicht wurde, nicht, wie jetzt die Hosts aus
deiner Blacklist mit der eingegebenen IP in Verbindung gebracht werden. Zumal ich auch als IP "ABC.DFG.XY.r" eingeben kann:
Ein, zwei Hosts werden immer ausgegeben. Ich kann auch meinen Server in die Blacklist eintragen und die IP eingeben. Zumindest
das müsste ja dann funktionieren. Tut's aber nicht. Schreibe ich jedoch if (checkdnsrr($dnsbl_check[$i],"A")) . . . , dann kann
ich auch als IP "ABC.DFG.XY.r" oder sonst was eingeben, dann wird auch mein Server ausgegeben, je nachdem, wie der zweite
Parameter ist, also "A", "MX", "PTR", "SOA" . . . etc.. Dieses "Gefummel" im Script mit einer IP bringt also gar nix. Ich denke mal,
diese Funktion ist eher dazu da, um im "eigenen" Netz(werk) DNS-Einträge zu überprüfen. Dass ein Internet-Host-Name übergeben
werden muß, hat mit Internet selber eher auch nichts zu tuen, sondern heißt wohl nur, das muß ein FQDN-Name sein; subdomain.domain.tld
Es ist eigentlich auch ziemlich sinnfrei, IP-Adressen mit Hosts in Verbindung zu bringen. Dazu gab ja auch schon mal Fragen wie:
"Wie kann ich in meinem Gästebuch eine IP-Sperre einbauen, um Spam zu verhindern?". IP-Adressen werden für einen gewissen Zeitraum
verliehen (siehe Lease-Time). Du legst also meinen Host in deiner Blacklist ab, merkst dir meine IP. Drei Stunden später gehe ich wieder
ins Internet und hab' eine neue IP. Meinen Host findest du mit deiner gemerkten IP (wahrscheinlich) nie mehr wieder.
Also schreib' doch einfach mal, was du überhaupt machen willst. Vielleicht kommen wir dann irgendwie weiter.
Gruß
Günni