# UstID Nr check mit php?



## vedam (15. Oktober 2007)

Hallo, 
kann mir jemand helfen?
Ich muss für einen Steuerberaer eine Umsatzsteuer nachfrage in die Seite einbauen.
Habe aber null Ahnung wie.
Beim Finanzamt (http://evatr.bff-online.de/eVatR/xmlrpc/) giebt es zwar eine Art Anweisung (für Python), aus der ich aber nicht schlau werde.

Kann mir jemand ganz dringend weiterhelfen!!

bye
vedam


----------



## cheetah (16. Oktober 2007)

ich hab mal ein Beispiel gemacht:


```
<?php
	if(isset($_POST['submit'])) {
		function info($UstId_1,$UstId_2,$Firmenname,$Ort,$PLZ,$Strasse,$Druck) {
			$url = 'http://evatr.bff-online.de/evatrRPC?UstId_1='.$UstId_1.'&UstId_2='.$UstId_2.'&Firmenname='.$Firmenname.'&Ort='.$ort.'&PLZ='.$PLZ.'&Strasse='.$Strasse.'&Druck='.$Druck;
			$content = file_get_contents($url);
			return $content;
		}
		$UstId_1=$_POST['UstId_1'];
		$UstId_2=$_POST['UstId_2'];
		$Firmenname=$_POST['Firmenname'];
		$Ort=$_POST['Ort'];
		$PLZ=$_POST['PLZ'];
		$Strasse=$_POST['Strasse'];
		$Druck=$_POST['Druck'];
		
		if(empty($UstId_1) || empty($UstId_2)) {
			die('Ihre und die gesuchte Umsatzsteuernummer muss angegeben werden');
		}
		
		$infos = info($UstId_1,$UstId_2,$Firmenname,$Ort,$PLZ,$Strasse,$Druck);
	}
?>
```

Schaus dir einfach mal an, dann wirst dus schon verstehn...es muss allerdings in der php.ini allow_url_fopen gesetzt sein. Falls es das nicht ist, musst du fsockopen() verwenden.

Im Ergebnis (hier $infos) kannst du die Informationen das mit preg_match() oder ereg() heraussuchen.


----------



## vedam (16. Oktober 2007)

Hi danke für Deine Hilfe

der Code den Du geschrieben hast leuchtet mir ein.
Nur das mit dem fsockopen() , wie man es benutzt ist mir nicht ganz klar.
Auch was mit dem preg_match() oder ereg() gemeint ist.
(Anfänger versteht sich).
Denn ich habe nun folgenden code aber keine Antwort.


```
form method="post" action="<?php print $_SERVER['PHP_SELF']; ?>">
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr>
    <td width="120px;">Firmenname</td>
    <td><input type="text" class="border_reserve1" name="Firmenname" style="width:140px;"></td>
   </tr>
   <tr>
    <td width="120px;">Ort</td>
    <td><input type="text" class="border_reserve1" name="Ort" style="width:140px;"></td>
   </tr>
   <tr>
    <td width="120px;">PLZ</td>
    <td><input type="text" class="border_reserve1" name="Firmenname" style="width:140px;"></td>
   </tr>
   <tr>
    <td width="120px;">Strasse</td>
    <td><input type="text" class="border_reserve1" name="Strasse" style="width:140px;"></td>
   </tr>
   <tr>
    <td width="120px;">Druck</td>
    <td><input type="text" class="border_reserve1" name="Druck" style="width:140px;"></td>
   </tr>
   <tr>
    <td width="120px;">Eigene USt-ID</td>
    <td><input type="text" class="border_reserve1" name="UstId_1" style="width:140px;"></td>
   </tr>
   <tr><td colspan="2">&nbsp;</td></tr>
   <tr>
    <td width="120px;">Zu prüfende USt-ID</td>
    <td>
     <select name="ustidland" class="border_reserve1" style="width:140px;">
      <OPTION value="BE">Belgien BE</OPTION>
      <OPTION value="EE">Estland EE</OPTION>
      <OPTION value="DK">Dänemark DK</OPTION>
      <OPTION value="FI">Finnland FI</OPTION>
      <OPTION value="FR">Frankreich FR</OPTION>
      <OPTION value="EL">Griechenland EL</OPTION>
      <OPTION value="GB">Großbritannien GB</OPTION>
      <OPTION value="IE">Irland IE</OPTION>
      <OPTION value="IT">Italien IT</OPTION>
      <OPTION value="LV">Lettland LV</OPTION>
      <OPTION value="LT">Litauen LT</OPTION>
      <OPTION value="LU">Luxemburg LU</OPTION>
      <OPTION value="MT">Malta MT</OPTION>
      <OPTION value="NL">Niederlande NL</OPTION>
      <OPTION value="AT">Österreich AT</OPTION>
      <OPTION value="PL">Polen PL</OPTION>
      <OPTION value="PT">Portugal PT</OPTION>
      <OPTION value="SE">Schweden SE</OPTION>
      <OPTION value="SK">Slowakische Republik SK</OPTION>
      <OPTION value="SI">Slowenien SI</OPTION>
      <OPTION value="ES">Spanien ES</OPTION>
      <OPTION value="CZ">Tschechische Republik CZ</OPTION>
      <OPTION value="HU">Ungarn HU</OPTION>
      <OPTION value="CY">Zypern CY</OPTION>
     </select>
     <input type="text" class="border_reserve1" name="ustidabfrage" style="width:140px;">
    </td>
   </tr>
   <tr>
    <td colspan="2">&nbsp;</td>
   </tr>
   <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="submit" value="Prüfen" class="bg_reserve2 border_reserve1 weiss bold" style="width:140px;"></td>
   </tr>
  </table>
 </form>
```


```
if(isset($_POST['submit'])) {
        function info($UstId_1,$UstId_2,$Firmenname,$Ort,$PLZ,$Strasse,$Druck) {
            $url = 'http://evatr.bff-online.de/evatrRPC?UstId_1='.$UstId_1.'&UstId_2='.$UstId_2.'&Firmenname='.$Firmenname.'&Ort='.$ort.'&PLZ='.$PLZ.'&Strasse='.$Strasse.'&Druck='.$Druck;
            $content = file_get_contents($url);
            return $content;
        }
        $UstId_1=$_POST['UstId_1'];
        $UstId_2=$_POST['ustidland'].$_POST['ustidabfrage'];
        $Firmenname=$_POST['Firmenname'];
        $Ort=$_POST['Ort'];
        $PLZ=$_POST['PLZ'];
        $Strasse=$_POST['Strasse'];
        $Druck=$_POST['Druck'];

        if(empty($UstId_1) || empty($UstId_2)) {
            die('Ihre und die gesuchte Umsatzsteuernummer muss angegeben werden');
        }

        $infos = info($UstId_1,$UstId_2,$Firmenname,$Ort,$PLZ,$Strasse,$Druck);
        echo $infos;
    }
```


----------



## cheetah (16. Oktober 2007)

also hier mal ein Beispiel (für das fsockopen):


```
<?php 
function PostToHost($host, $path) { 
  $fp = fsockopen($host, 80);
  fputs($fp, "GET $path HTTP/1.1\r\n"); 
  fputs($fp, "Host: $host\r\n"); 
  fputs($fp, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 \r\n");
  fputs($fp, "Server: Apache/1.3.27 (Unix)\r\n");
  fputs($fp, "Referer: http://www.microsoft.com/ms.htm\r\n"); 
  fputs($fp, "Connection: close\r\n\r\n");
  while(!feof($fp)) { 
      $res .= fgets($fp, 128); 
  }
  fclose($fp);
  return $res; 
}
$data = PostToHost( "evatr.bff-online.de", "/evatrRPC?UstId_1=DE123456789&UstId_2=AB1234567890&Firmenname=&Ort=&PLZ=&Strasse=&Druck=");
preg_match_all('/<string>(.*)<\/string>/i',$data,$found);
print_r($found);
?>
```

für das preg_match musst du regukäre Ausdrücke nutzen...wobei es so eigentlich schon ganz gut geht, musst nurnoch das array auswerten...


----------



## siroliver74 (25. Oktober 2007)

Bei dem Script kommt immer ein Error 400 Bad Request zurück, sobald man bei Firmenname,Ort,PLZ,Strasse,Druck auch Parameter übergibt... Was nun?
(wenn man die Zeile, die aufgerufen wird in den Browser eingibt kommt ein Ergebniss zurück)


----------



## siroliver74 (25. Oktober 2007)

Für alle die, die einen Error 400 -> Bad Request zurück bekommen die sollten in den Variablen das Leerzeichen mit %20 austauschen (Kreuzhügel 23 -> Kreuzhügel%2023)
Dann klappts auch mit dem BFF


----------

