Whois -- Domaincheck Problem

Conex

Grünschnabel
Hallo Leute!

Wie im Titel schon geschrieben, hab ich ein Problem mit nem Domaincheck Script in php.

Gleich mal vorweg: Kennt zufällig jemand ein anderes Script dieser Art? Wenn ja, dann bitte auch mal posten!

Jedenfalls, nun zum Problem.
An sich funktioniert das Script blendend. Ich will nur jetzt noch eine Überprüfung einbauen ob erstens das Feld leer ist und zweitens keine Sonderzeichen wie z.B. @!"§$%&/()=? in der Domain vorkommen. Kurz gesagt, es sollten nur A-Z und 0-9 - . enthalten sein.

Das hab ich nun schon mal versucht in der Datei whois-ueberpruefung.php:
PHP:
<?
  $domainok = preg_match("/^[a-z0-9-.]$/i", $domain); 
  
  if (empty($domainok))
  {
  echo "Ung&uuml;ltige Zeichen!";
  }
?>

In der wohis.php hab ich diese Datei eingebunden:
PHP:
include("whois-ueberpruefung.php");

Nun zum eigentlichen Problem..... und zwar kommt, egal ob ich nur Buchstaben und Zhalen oder Sonderzeichen schreibe 'Ungültige Zeichen' und eine Fehlermeldung:
Code:
Warning: preg_match() expects parameter 2 to be string, object given in /home/www/web26/html/cfz-webspace/2-hosting/whois-ueberpruefung.php on line 2

Kann mir bei der ganzen Geschichte jemand helfen?


Danke, Conex
 
Zuletzt bearbeitet:
Also erstmal hast du in deinem regulären Ausdruck ein "+" vergessen:
PHP:
$domainok = preg_match("/^[a-z0-9-.]$/i", $domain); 

//wird zu:
$domainok = preg_match("/^[a-z0-9-.]+$/i", $domain);
Außerdem kann man in der Fehlermeldung erkennen, das es sich bei der Variablen $domain nicht um einen String handelt. Wenn $domain per Formular übergeben wurde, versuche es einmal mit $_POST['domain'], bzw. $_GET['domain'] wenn method = "get" ist.
 
Okay, das hab ich getan und noch mal bisschen umgeschrieben!

PHP:
<?
  $domain = $_POST['domain'];
  if (preg_match('#[a-zA-Z0-9.-]+#', $domain))
    {
      // gülitig
    }
  else
    {
      echo "Ung&uuml;ltige Zeichen!";
    }
?>

Jetzt kommt aber folgende Meldung:
Code:
Fatal error: Call to a member function on a non-object in /home/www/web26/html/cfz-webspace/2-hosting/whois.php on line 41

Zeile 41+-4 Zeilen in der whois.php:
PHP:
$domain = new domain($_POST['domain']);
          
include("whois-ueberpruefung.php");
          
if($domain->is_available())
  {
    echo "<b>Ihre Domain ist noch frei!</b><br><br>";
  }
else
 
Hmm, kannst du mal die Klasse "domain" (zumindest die Funktion is_available() sowie den Konstruktor der Klasse) posten?
 
Ich hab gleich mal die ganze whois.php gepostet:

PHP:
<html>

<head>
<title>Domaincheck</title>
<style type="text/css">
	body	{ color : #7A5659;
		   font-family: Verdana;
		   font-size : 10px;
	
		   scrollbar-face-color: #F1E6E7;
		   scrollbar-track-color: #FFFFFF;
		   scrollbar-arrow-color: #A78A8C;
		   scrollbar-3dlight-color: #7A5659;
		   scrollbar-shadow-color: #FFFFFF;
		   scrollbar-highlight-color: #FFFFFF;
		   scrollbar-darkshadow-color: #7A5659; }
	
	td	{ color : #7A5659;
		   font-family : Verdana;
		   font-size : 10px; }
</style>
</head>

<body bgcolor="#FBF7F8">

&nbsp;<p>

<table width="500" align="center" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center">
      
      <?
      if($doit == "yes")
        {
          include("whois.class.php");
          // Initializing class
          $domain = new domain($_POST['domain']);
          
          include("whois-ueberpruefung.php");
          
          if($domain->is_available())
            {
              echo "<b>Ihre Domain ist noch frei!</b><br><br>";
            }
          else
            {
              echo "<b>Ihre Domain ist leider bereits registriert oder beantragt!</b><br><br>";
            }
            
            // Printing out whois data
            echo '<form><textarea style="color: #7A5659; font-family: Verdana; font-size: 10px; border: 1px solid #7A5659; background-color: #FBF7F8" name="data" cols="80" rows="20">';
            echo $domain->info();
            echo '</textarea></form>';
            echo '<a href="whois.php">...zur&uuml;ck</a>';
            
            // Printing out whois data in HTML format
            #echo $domain->html_info()."<br><br><hr>";
            
            // Printing out whois host of domain
            #echo "Whois Server: ".$domain->get_whois_server()."<br>";
            
            // Printing out name of domain without tld
            #echo "Domain: ".$domain->get_domain()."<br>";
            
            // Printing out tld name of domain
            #echo "Tld: ".$domain->get_tld()."<br>";
            
            // Checking if domain name is valid
            #if($domain->is_valid())
            #  {
            #    echo "Domain name is valid!<br>";
            #  }
            #else
            #  {
            #    echo "Domain name isn't valid!<br>";
            #  }
            
        }
      else
        {
          echo 'Schauen Sie, ob ihre Domain noch frei ist!';
          echo '<form method="post" action="whois.php?doit=yes">http://www.<input style="color: #7A5659; font-family: Verdana; font-size: 10px; border: 1px solid #7A5659; background-color: #FBF7F8" name="domain" size="40" maxlength="80"><p>';
          echo '<input style="color: #7A5659; font-family: Verdana; font-size: 10px; border: 1px solid #7A5659; padding-left: 6px; padding-right: 6px; padding-top: 1px; padding-bottom: 1px; background-color: #FBF7F8" type="submit" value="Domain pr&uuml;fen"></form>';
        }
      ?>
      
    </td>
  </tr>
</table>

</body>
</html>
 
Hier ist auch mal die ganze whois.class.php -- ggf. in php umbenennen!

Wie gesagt, wenn jemand ein einfacheres/besseres Script findet, bitte posten ;)
 

Anhänge

Den ganzen PHP-Code legst du in eine weitere If-Schleife:
PHP:
[...]
<td align="center">
<?php
    if(isset($_POST['domain']) AND preg_match("/^[a-z0-9-.]+$/i", $_POST['domain'])) {
        //Hier kommt dein alter PHP-Code rein
    }
    else {
        echo "Die Domain ist ungültig!";
    }
?>
</td>
[...]
Die Klasse hab ich mir jetzt nicht angesehen, aber wenn es sich um eine ungültige Domain handelt, kommt diese sowieso nicht zum Einsatz.

PS: Wenn du ein anderes Script suchst, dann schau dich mal bei http://www.php-resource.de/ um.
 
Zurück