Auswertung Fritzbox per Datenbank

das selbe, nur einfacher in der Handhabung.

//**************************************************************************
// eindimensionales, assoziatives Array mit internen Nummern anlegen, kann beliebig erweitert werden
$NummernIntern = array( "06043xxxxxxxx"  => "Rainer",
                        "06043xxxxxxxxxxxxxxxx" => "Gabi",
                        "0151xxxxxxxxxxxxxxxxx" => "Rainer Handy",
                        "0161xxxxxxx"  => "Rainer Firma",
                        "           "  => "Unbekannt");

$Fritzbox = GetValueString("Fritzbox");
$daten    = explode(";", $Fritzbox);
switch($daten[1])
{
 case "RING":
  $Rufnummer = $daten[3];                           // übermittelte Rufnummer extrahieren
  if (array_key_exists($Rufnummer, $NummernIntern)) // prüfen ob Rufnummer als "key" im Array $NummernIntern enthalten ist
  {                                                 // ja, Nummer ist intern
   $Anrufer = $NummernIntern[$Rufnummer];           // Name des internen Anrufers extrahieren
   COMPort_SendText(50814, chr(27). "ZV". chr(5));
   COMPort_SendText(50814, chr(27). "ZL". chr(5). chr(32). "Anruf von ". $Anrufer. ".". chr(0));
   return;
  }
  else
  {                                                 // nein, Nummer ist extern
   $Rufnummer = SucheNummer($Rufnummer);            // externen Anrufer ermitteln
  }
 break;

 case "DISCONNECT":
  //SetValueString("Fritzbox","");
  return;
 break;
}

Hmmm … reden wir mal wieder aneinander vorbei? :wink:

Ich rede von deiner Funktion „SucheNummer“, welche ja auch eigeständig funktionieren sollte, oder etwa nicht??

Wenn ich die Funktion in ein eigenes Script packe und dann vorher noch die Variable mit der Rufnummer fülle und dann das Script ausführe, dann kommt nur ein „unbekannt“ zurück … wenn ich aber direkt auf der Webseite die Rufnummer eingebe, dann kommt ein Eintrag!
Mir gehts hier auch nicht um das ganze Script, sondern nur um die Reversesuche :wink:

Nö reden wir nicht.

Was Du selbst machst musst Du auch selbst anpassen.

Scripte auseinander reissen geht meist in die Hose, weil der Zusammenhang fehlt.

Die Webseite hat damit weng zutun, nur gewisse Inhalte. :confused:

Sorry, das Script funktioniert.

Ansonsten lass mal Code sehen was Du vorhast, willst.

Hier sind auch einige Codeschnippsel von anderen Usern miteingebaut.

Zumal es nicht meine Funktion ist, sondern angepasst.

Hmmm … das auseinandergerissener Code oft nicht hin haut oder da noch etwas angepaßt werden muss ist mir schon klar, aber die Funktion muss doch so auch ein Ergebnis liefern … oder es fehlt von vorn herein etwas … oder ich seh mal wieder den Wald vor lauter Bäumen nicht :rolleyes:


$Rufnummer = 04256xxx;  // Variable mit Beispielnummer gefüllt
$url_orig = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   $url = str_replace("#TEL#","$Rufnummer",$url_orig);
   //$url = $url_orig.$Rufnummer;
   $Ausgabe = fopen("$url", "r");
   if (!$Ausgabe){
      echo("ERROR : Kann URL nicht öffnen : '$url'
");  // Kann URL nicht öffnen
   }
   $lineNb     = 0;
   $searchTag0 = '&Name=';
   $searchTag1 = '&Vorname=';
   $searchTag2 = '&Strasse';
   $gefunden   = 0;
   while(!$gefunden && !feof($Ausgabe))
   {
    $lineNb++;
    $buffer = fgets($Ausgabe);
      if (strpos($buffer, $searchTag0) !== false)
        {
        $gefunden = 1;
        $startLN  = (strpos($buffer, $searchTag0)+6);
        $endeLN   =  strpos($buffer, $searchTag1);
        $Nachname = substr($buffer, $startLN, ($endeLN-$startLN));
        $startFN  = (strpos($buffer, $searchTag1)+9);
        $endeFN   =  strpos($buffer, $searchTag2);
        $Vorname  = substr($buffer, $startFN, ($endeFN-$startFN));
        $Name = $Vorname." ".$Nachname."
\r";
        $Name = str_replace('+', ' ',$Name);
        $Name = str_replace("Ä","Ä",$Name);
        $Name = str_replace("ä","ä",$Name);
        $Name = str_replace("Ö","Ö",$Name);
        $Name = str_replace("ö","ö",$Name);
        $Name = str_replace("%F6","ö",$Name);
        //$Name = str_replace("%FC","ü",$Name);
        $Name = str_replace("%FC","\x81",$Name); //Auflösung Edip
        $Name = str_replace("Ãœ","Ü",$Name);
        $Name = str_replace("ü","ü",$Name);
        $Name = str_replace("ß","ß",$Name);
        //SetValueString("Teststring", $Name);

        }
         else {$Name = "Unbekannt";}

       }
   fclose($Ausgabe);
   echo $Name;
} // Klammer zu
 

Script Klammer gesetzt.

Das stimmet doch eh nicht.

Du hast die ganze Funktion zerissen.

Mom ich pass es dir an

Wieso … wo ist das Problem?
Die Ausgabe aufs Edip benötige ich nicht , daher sind die Zeilen gelöscht und der Rest ist so wie vorher … außer das die Klammer der Funktion fehlt und ich die Übergabe der Rufnummer zum Testen manuell gemacht habe und das unten an Stelle von „return“ ein „echo“ steht.
Der Rest ist so geblieben … und sollte doch funktionieren!

Edit: ok, hat sich überschnitten … dann versuch aber bitte mal zu erklären wo mein Denkfehler ist/war …

Gruß
Jens

ungetestet, so muss es aber funktionieren.

$Rufnummer = 04256xxx;  // Variable mit Beispielnummer gefüllt
$Rufnummer = SucheNummer($Rufnummer);
function SucheNummer($Rufnummer)
{
   $url_orig = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   $url = str_replace("#TEL#","$Rufnummer",$url_orig);
   //$url = $url_orig.$Rufnummer;
   $Ausgabe = fopen("$url", "r");
   if (!$Ausgabe){
      echo("ERROR : Kann URL nicht öffnen : '$url'
");  // Kann URL nicht öffnen
   }
   $lineNb     = 0;
   $searchTag0 = '&Name=';
   $searchTag1 = '&Vorname=';
   $searchTag2 = '&Strasse';
   $gefunden   = 0;
   while(!$gefunden && !feof($Ausgabe))
   {
    $lineNb++;
    $buffer = fgets($Ausgabe);
    echo $buffer;
      if (strpos($buffer, $searchTag0) !== false)
        {
        $gefunden = 1;
        $startLN  = (strpos($buffer, $searchTag0)+6);
        $endeLN   =  strpos($buffer, $searchTag1);
        $Nachname = substr($buffer, $startLN, ($endeLN-$startLN));
        $startFN  = (strpos($buffer, $searchTag1)+9);
        $endeFN   =  strpos($buffer, $searchTag2);
        $Vorname  = substr($buffer, $startFN, ($endeFN-$startFN));
        $Name = $Vorname." ".$Nachname."
\r";
        $Name = str_replace('+', ' ',$Name);
        $Name = str_replace("Ä","Ä",$Name);
        $Name = str_replace("ä","ä",$Name);
        $Name = str_replace("Ö","Ö",$Name);
        $Name = str_replace("ö","ö",$Name);
        $Name = str_replace("%F6","ö",$Name);
        //$Name = str_replace("%FC","ü",$Name);
        $Name = str_replace("%FC","\x81",$Name); //Auflösung Edip
        $Name = str_replace("Ãœ","Ü",$Name);
        $Name = str_replace("ü","ü",$Name);
        $Name = str_replace("ß","ß",$Name);
        SetValueString("Teststring", $Name);
        XBee_SendBuffer(49578, chr(27)."ZV".chr(5));
        XBee_SendBuffer(49578, chr(27)."ZL".chr(5).chr(32)."Anruf von " .$Name.chr(0));
        }
   }
   fclose($Ausgabe);
   return $Name;
}

Was hat dasdamit zutun ?

Dein Fehler sollte ersichtlich sein.

Mal ein kleiner Tip.

Lasst euch mal die Adresse ausgeben. Dann versteht man auch die Auflösung, wo nach was gesucht wird.

Sorry, aber das ist in meinen Augen genau das Gleiche … außer das du die else Schleife mit dem unbekannt weggelassen hast und den Aufruf wieder als Funktion laufen läßt … das Ergebnis ist allerdings das Gleiche.

Am Ende kommt jetzt folgende Fehlermeldung: <b>Notice</b>: Undefined variable: Name in <b>C:\Programme\IP-SYMCON\scripts.currentscript</b> on line <b>57</b><br />

Was scheinbar dadurch entsteht, das in der Seite kein Treffer gelandet wird und durch die fehlende Else Anweisung der Varaible $Name nix zugeordnet wird … ich bin jetzt leider nicht der Spezi in Sachen Code um den Fehler zu erkennen … aber irgendetwas paßt noch nicht :frowning:

Wenn ich mir den Inhalt von $Buffer ausgeben lasse, dann findet das Programm auch nix … also angeblich keinen Eintrag zu der Nummer … daher ist unbekannt ja scheinbar das richtige Ergebnis der Suche … bei manueller Eingabe auf der Webseite ist das Ergebnis aber da!

Jens

Könnte ich, nur ist wieder alles aus dem Zusammenhang gerissen.

Leider verstehe ich dein Problem immer noch nicht.

Zumal ich geschrieben habe

Lasst euch mal die Adresse ausgeben. Dann versteht man auch die Auflösung, wo nach was gesucht wird

Sorry, Help Google :smiley:

Wenn ich mir den Inhalt von $Buffer ausgeben lasse, dann findet das Programm auch nix … also angeblich keinen Eintrag zu der Nummer … daher ist unbekannt ja scheinbar das richtige Ergebnis der Suche … bei manueller Eingabe auf der Webseite ist das Ergebnis aber da!

???

Ich glaub der Fehler liegt da, das ich bei der manuellen Zuweisung der Telefonnummer die „“ nicht drin habe … jetzt kommt zumindest ein Ergebnis!

$Rufnummer = "04256xxx" ;

:rolleyes:

Also das klappt ja jetzt und ich glaub ich weiß auch wie es dann mit der Adresse weiter geht. Wie kann ich denn Vorname, Name und Adresse zurück bekommen, geht das als Array? Also über den Return Befehl hätte ich das gern komplett wieder, nicht nur den zusammengesetzten Namen oder muss ich das alles zusammensetzen und durch ein Trennzeichen trennen, um die Einzelheiten später auch einzeln weiter verwenden zu können ?

Danke und Gruß
Jens

Ich glaub eher, der(die) Fehler liegt an nicht lesen der Beiträge, weil zu schnell :smiley:

Dein Beitrag war ja weg, Die Namen usw. haben damit nix zutun. Siehe Beiträge oben. :stuck_out_tongue:

$Rufnummer = 04256xxx;  // Variable mit Beispielnummer gefüllt 
$Rufnummer = SucheNummer($Rufnummer);
$Rufnummer = "04256xxx"; //Variable feste Vorgabe

jo, so sollte es sein.

Hallo Rainer,

hast du bei der Rückwärtssuche schon mal Probleme gehabt? Ich hatte jetzt eine Rufnummer, die per Reverse nicht gefunden wird, aber Klicktel bietet einen Fund durch eine verkürzte Rufnummer an … das scheint irgendwie einen Fehler zu verursachen …

Gruß
Jens

Hallo Jens,

wie meinst Du das. Sollte eine Nummer nicht eindeutig sein, so werden Dir mehrere Nummern zur Auswahl angeboten. Wenn ja, habe ich das oben schon mal beschrieben, glaube ich :rolleyes:

Ansonsten kann ich das nicht nachvollziehen.

Ne,

hast du noch nicht beschrieben :wink:

Es geht darum, wenn ein Name in der Reversesuche gefunden wird, der aber nicht zu der eigentlichen Nummer gehört, dann verkürzt Klicktel die Nummer und „schwups“ hat man einen Namen, den man gar nicht will :wink:
Es kann kein „unbekannt“ gesetzt werden, da die Reversesuche ja einen Eintrag liefert.
Warum da jetzt bei mir ein direkter Fehler aufgetreten ist, kann ich noch nicht nachvollziehen, aber auf jeden Fall kommt da ein unerwünschtes Ergebnis.

Ich denke da könnte man mit dem Parser noch suchen und eine if Abfrage draus machen…

Eigentlich doch http://www.ipsymcon.de/forum/showpost.php?p=44109&postcount=10

Oder ?