Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Dani am 29.12.2010 um 11:32:42 Uhr
Formatierungshilfen bitte benutzen!
GELÖST

PHP Script zeigt weiße Seite an

Frage Entwicklung PHP

Mitglied: xp-user

xp-user (Level 2) - Jetzt verbinden

29.12.2010, aktualisiert 18.01.2011, 4734 Aufrufe, 20 Kommentare

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:
01.
<?php  
02.
 
03.
$ip =["ip"]; 
04.
function is_blacklisted($ip) {  
05.
    $dnsbl_check=array("bl.spamcop.net",  
06.
                       "relays.osirusoft.com",  
07.
                       "list.dsbl.org",  
08.
                       "sbl.spamhaus.org");  
09.
    if ($ip) {  
10.
       $quads=explode(".",$ip);  
11.
        $rip=$quads[3].".".$quads[2].".".$quads[1].".".$quads[0];  
12.
        for ($i=0; $i<count($dnsbl_check); $i++) {  
13.
            if (checkdnsrr($rip.".".$dnsbl_check[$i],"A")) {  
14.
                $listed.=$dnsbl_check[$i]." ";  
15.
            }  
16.
         }  
17.
       if ($listed) { return $listed; } else { return FALSE; }  
18.
    }  
19.
}  
20.
?> 
21.
 
22.
 
23.
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"
24.
 <p>IP Lookup: <input type="text" name="ip" /></p> 
25.
  <p><input type="submit" NAME="gesendet" value="Übertragen" /></p> 
26.
</form>
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ß
Mitglied: thaenhusen
29.12.2010 um 11:20 Uhr
Moin.

Du musst die Funktion die Du geschrieben hast auch aufrufen...
01.
<?php 
02.
$ip = $_GET["ip"]; 
03.
if($ip <> ""){ 
04.
  echo is_blacklisted($ip) . '<br />'
05.
06.
 
07.
function is_blacklisted($ip) { 
08.
  $dnsbl_check=array("bl.spamcop.net"
09.
  "relays.osirusoft.com"
10.
  "list.dsbl.org"
11.
  "sbl.spamhaus.org"); 
12.
  if ($ip) { 
13.
    $quads=explode(".",$ip); 
14.
    $rip=$quads[3].".".$quads[2].".".$quads[1].".".$quads[0]; 
15.
    for ($i=0; $i<count($dnsbl_check); $i++) { 
16.
      if (checkdnsrr($rip.".".$dnsbl_check[$i],"A")) { 
17.
        $listed.=$dnsbl_check[$i]." "
18.
19.
20.
    if ($listed) { 
21.
      return $listed
22.
23.
    else
24.
      return FALSE; 
25.
26.
27.
28.
 
29.
?> 
30.
 
31.
 
32.
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"
33.
<p>IP Lookup: <input type="text" name="ip" /></p> 
34.
<p><input type="submit" NAME="gesendet" value="Übertragen" /></p> 
35.
</form>
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
Bitte warten ..
Mitglied: xp-user
29.12.2010 um 11:28 Uhr
Danke für die Antwort
Bitte warten ..
Mitglied: xp-user
29.12.2010 um 11:53 Uhr
Zitat von thaenhusen:

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!

Ich sehe wohl das Formular, jedoch wenn ich eine IP eingebe und diese sende, sehe ich weder ob die IP gelistet ist, noch ob sie nicht gelistet ist.
Bitte warten ..
Mitglied: thaenhusen
29.12.2010 um 14:26 Uhr
Moin.

Dann versuch mal statt

return FALSE;

return "Keine Treffer."

HTH
MK
Bitte warten ..
Mitglied: xp-user
29.12.2010 um 14:46 Uhr
Zitat von thaenhusen:
Moin.

Dann versuch mal statt

return FALSE;

return "Keine Treffer."

HTH
MK

Notice: Undefined index: ip in /test.php on line 14

Line 14:
$ip = $_GET["ip"];
Bitte warten ..
Mitglied: thaenhusen
29.12.2010 um 15:09 Uhr
Moin.
01.
if(isset($_GET["ip"])){ 
02.
  $ip = $_GET["ip"]; 
03.
04.
else
05.
  $ip = ""
06.
}
Und dann in der Funktion abfangen?

HTH
MK

edit by masterG - 04.01.2011 12:50: Bitte Formatierungshilfe verwenden.
Bitte warten ..
Mitglied: xp-user
29.12.2010 um 15:15 Uhr
Zitat von thaenhusen:
Moin.

if(isset($_GET["ip"])){
$ip = $_GET["ip"];
}
else{
$ip = "";
}

Und dann in der Funktion abfangen?


bringt jetzt kein Fehler mehr, aber immer noch kein Resultat


01.
<?php 
02.
error_reporting(E_ALL); 
03.
ini_set('display_errors', 1); 
04.
?> 
05.
<?php 
06.
if(isset($_GET["ip"])){ 
07.
$ip = $_GET["ip"]; 
08.
09.
else{ 
10.
$ip = ""; 
11.
12.
if($ip <> ""){ 
13.
  echo is_blacklisted($ip) . '<br />'; 
14.
15.
 
16.
function is_blacklisted($ip) { 
17.
  $dnsbl_check=array("bl.spamcop.net", 
18.
  "relays.osirusoft.com", 
19.
  "list.dsbl.org", 
20.
  "sbl.spamhaus.org"); 
21.
  if ($ip) { 
22.
    $quads=explode(".",$ip); 
23.
    $rip=$quads[3].".".$quads[2].".".$quads[1].".".$quads[0]; 
24.
    for ($i=0; $i<count($dnsbl_check); $i++) { 
25.
      if (checkdnsrr($rip.".".$dnsbl_check[$i],"A")) { 
26.
        $listed.=$dnsbl_check[$i]." "; 
27.
28.
29.
    if ($listed) { 
30.
      return $listed; 
31.
32.
    else { 
33.
      return "Keine Treffer."; 
34.
35.
36.
37.
 
38.
?> 
39.
 
40.
 
41.
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> 
42.
<p>IP Lookup: <input type="text" name="ip" /></p> 
43.
<p><input type="submit" NAME="gesendet" value="Übertragen" /></p> 
44.
</form>
Bitte warten ..
Mitglied: thaenhusen
29.12.2010 um 15:43 Uhr
Moin.

01.
<?php 
02.
error_reporting(E_ALL); 
03.
ini_set('display_errors', 1); 
04.
if(isset($_GET["ip"])){ 
05.
  $ip = $_GET["ip"]; 
06.
07.
else{ 
08.
  $ip = ""; 
09.
10.
echo is_blacklisted($ip) . '<br />'; 
11.
 
12.
function is_blacklisted($ip) { 
13.
  $listed = ""; 
14.
  $dnsbl_check=array("bl.spamcop.net", 
15.
  "relays.osirusoft.com", 
16.
  "list.dsbl.org", 
17.
  "sbl.spamhaus.org"); 
18.
  if ($ip) { 
19.
    echo '123 <br />'; 
20.
    $quads=explode(".",$ip); 
21.
    $rip=$quads[3].".".$quads[2].".".$quads[1].".".$quads[0]; 
22.
    for ($i=0; $i<count($dnsbl_check); $i++) { 
23.
      if (checkdnsrr($rip.".".$dnsbl_check[$i],"A")) { 
24.
        $listed.=$dnsbl_check[$i]." "; 
25.
26.
27.
28.
  if ($listed) { 
29.
    return $listed; 
30.
31.
  else { 
32.
    return "Keine Treffer."; 
33.
34.
35.
 
36.
?> 
37.
 
38.
 
39.
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> 
40.
<p>IP Lookup: <input type="text" name="ip" /></p> 
41.
<p><input type="submit" NAME="gesendet" value="Übertragen" /></p> 
42.
</form>
Dieser Code funktioniert bei mir. Vielleicht kommt Deine Installation nicht mit dem $_GET["ip"] zurecht versuche sonst mal mit $ip zuarbeiten.

HTH
MK
Bitte warten ..
Mitglied: xp-user
29.12.2010 um 15:58 Uhr
Also das Problem lag an dem Formular Input der sollte method="get" sein und nicht method="post"

Einen grossen Schritt weiter...
Bitte warten ..
Mitglied: xp-user
29.12.2010 um 16:29 Uhr
Ich krieg jetzt jedoch diese Fehlermeldung:
Notice: Undefined variable: listed in /test.php on line 33

Line 33:
$listed.=$dnsbl_check[$i]." ";

Jedoch gibt er mir korrekt an ob eine IP gelistet ist, oder eben nicht.
Bitte warten ..
Mitglied: thaenhusen
29.12.2010 um 18:12 Uhr
Moin.

Siehe letztes Posting von mir:

01.
function is_blacklisted($ip) { 
02.
$listed = "";
Dann ist der Fehler weg...
HTH
MK
Bitte warten ..
Mitglied: xp-user
30.12.2010 um 08:51 Uhr
Perfekt wär's, wenn man auch URL/Domains abfragen könnte. Nicht nur IP's

P.S: Sehr gut. Vielen Dank
Jetzt klappt alles bestens.
Bitte warten ..
Mitglied: thaenhusen
30.12.2010 um 10:42 Uhr
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...

01.
<?php 
02.
  $host = "www.google.de"; 
03.
  $ip = gethostbyname($host); 
04.
  echo $ip; 
05.
?>
... sollte Dir weiterhelfen.

HTH
MK
Bitte warten ..
Mitglied: xp-user
30.12.2010 um 11:42 Uhr
hab mir das Buch \"PHP für Dummies\" gekauft, ... also ich bin schon dabei.

Habe im Bereich PHP wirklich \"Baby-Status\" :-S

Also der Code gibt ja die IP von google.de aus. Wie kann ich das jetzt mit dem Eingabefeld verbinden, so dass ich domain.xy eingeben kann?
Bitte warten ..
Mitglied: thaenhusen
30.12.2010 um 12:02 Uhr
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
Bitte warten ..
Mitglied: xp-user
30.12.2010 um 12:57 Uhr
Also mit zwei Formularen krieg ich das schon hin, jedoch das weitergeben nicht. Also das es nur ein Eingabefeld benötigt.
01.
<?php  
02.
// Die Abfrage der IP von der Domain 
03.
  if(isset($_GET["host"])){ 
04.
  $host = $_GET["host"]; 
05.
  $iphost = gethostbyname($host);  
06.
  echo $iphost;  
07.
08.
?>
Bitte warten ..
Mitglied: thaenhusen
30.12.2010 um 13:49 Uhr
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
Bitte warten ..
Mitglied: xp-user
30.12.2010 um 14:39 Uhr
ja mit zwei Formularen funktioniert es einwandfrei. Nur ist das nicht so schick

Ich habe mir folgenden Weg ausgedacht.

Ein Feld. IP / Host
Egal ob eine IP oder eine Domain eingegeben wurde, nach
01.
<?php  
02.
// Die Abfrage der IP von der Domain 
03.
  if(isset($_GET["host"])){ 
04.
  $host = $_GET["host"]; 
05.
  $iphost = gethostbyname($host);  
06.
  echo $iphost;  
07.
08.
?>
erhalte ich $iphost und diese würde ich dann als $ip definieren.
01.
$iphost = $ip;
... aber es klappt nicht
Bitte warten ..
Mitglied: Guenni
07.01.2011 um 22:00 Uhr
Hi xp-user,

. . . 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[0];

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
Bitte warten ..
Mitglied: xp-user
08.01.2011 um 06:57 Uhr
Danke für die Ausführliche Antwort.


Ich habe das ganze nun anders gelöst. Die Schwachstellen dieses Scriptes wurden mir mit der Zeit auch klar. Wobei die "Zeit" welche es braucht um so eine IP / Host abzufragen schlichtweg zu lange dauert.

Nun nutze ich eine API für ein RBL. Einfach sauber schnell.

Besten Dank

/* gelöst */
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...