opendir() geht nicht? ...

Hallo,

die AB- Nachrichten speicher ich deshalb extra wieder ab, weil wenn Anrufe für meine Freundin eingehen, diese dann selber wieder abhören kann. (Falls ich sie zuerst abhöre). Bin ab und an vergesslich. :smiley: Deswegen hab ich das so gemacht.
Ich lasse mir nur die letzten 5 Anrufe im Designer anzeigen. Das reicht mir bis her. So sieht das dann bei mir aus.
Hab die Nachnamen in dem Bild alle rausgelöscht. Unten links bekomme ich dann immer die Anzahl der anrufe Angezeigt die auf dem Anrufbeantworter liegen würden. Dann erscheint auch rechts daneben ein Button hören und ich kann sie mir dann nach und nach anhören.

Gruß

Hallo Hollowman, das sieht ja prima aus.

Habe mir den Post von Jens vom August durchgelesen, komme aber nicht weiter.

Welche DLL’s muss man denn einbinden, damit ich den PHP-Befehl http_post_fields usw. benutzen kann.

Habe bisher die ssleay32.dll, libeay32.dll, php4ts.dll in den Ip-Symcon - Ordner kopiert, bekomme aber immer noch den Fehler"Call to undefined function http_post_fields() ".
Habe auch alles was ich in meinem Xampp.Ordner an PECL-Dateien gefunden habe in den Ips-Symcon-Ordner kopiert. Das gleich Ergebnis.

Irgendwie komme ich nicht weiter.
Gibt es dafür eine Anleitung, oder wie habt ihr das gemacht?

Vielen Dank René

Hallo Rene

Das funktioniert so auch nicht, weil du die ssleay32.dll, libeay32.dll und libssl32.dll in den System32 Ordner von Windows kopieren mußt.
Dann noch die php_http.dll in den IPS Ordner kopieren und über die php.ini einbinden um die php_http Befehle zu nutzen.
Wenn du auch noch CURL einsetzen willst, dann auch noch die php_curl.dll in den IPS Ordner und ebenfalls über die php.ini einbinden.

@Boris: Sieht ganz nett aus … abspielen steht bei mir im Hintergrund, da ich keine Soundverbindung zum TS habe … müßte ich evtl. noch mal nachrüsten.

Gruß
Jens

Mit Ausgabe der Dateien im Verzeichnis.

$ftp_server = "192.168.178.1"; // Verbindung zur Fritzbox
$ftp_user_name = "ftpuser ";   //  Username
$ftp_user_pass = "12345678";   //  Passwort

// Verbindungsaufbau
$conn_id = ftp_connect($ftp_server);

// Login mit Username und Passwort
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Verbindung überprüfen
if ((!$conn_id) || (!$login_result))
{
 echo "FTP Verbindung ist fehlgeschlagen!";
 echo "Verbindungsaufbau zu $ftp_server mit Username $ftp_user_name versucht.";
return;
}
else
{
 echo "Verbunden zu $ftp_server mit Username $ftp_user_name"."
";
}

// Ins Verzeichnis wechseln
if (ftp_chdir($conn_id, "USBDISK2-0-01/FRITZ/voicebox/rec/"))
{
 echo "Aktuelles Verzeichnis: " . ftp_pwd($conn_id) . "
";
}
else
{
 echo "Verzeichnis-Wechsel ist fehlgeschlagen.
";
}

// Dateiliste erstellen und ausgeben
function rawlist_dump() {
  global $conn_id;
  $ftp_rawlist = ftp_rawlist($conn_id, ".");
  foreach ($ftp_rawlist as $v) {
    $info = array();
    $vinfo = preg_split("/[\s]+/", $v, 9);
    if ($vinfo[0] !== "total") {
      $info['chmod'] = $vinfo[0];
      $info['num']   = $vinfo[1];
      $info['owner'] = $vinfo[2];
      $info['group'] = $vinfo[3];
      $info['size']  = $vinfo[4];
      $info['month'] = $vinfo[5];
      $info['day']   = $vinfo[6];
      $info['time']  = $vinfo[7];
      $info['name']  = $vinfo[8];
      $rawlist[$info['name']] = $info;
    }
  }
  $dir = array();
  $file = array();
  foreach ($rawlist as $k => $v) {
    if ($v['chmod']{0} == "d") {
      $dir[$k] = $v;
    } elseif ($v['chmod']{0} == "-") {
      $file[$k] = $v;
    }
  }
  foreach ($dir as $dirname => $dirinfo) {
      echo "[ $dirname ] " . $dirinfo['chmod'] . " | " . $dirinfo['owner'] . " | " . $dirinfo['group'] . " | " . $dirinfo['month'] . " " . $dirinfo['day'] . " " . $dirinfo['time'] . "<br>";
  }
  foreach ($file as $filename => $fileinfo) {
      echo "$filename " . $fileinfo['chmod'] . " | " . $fileinfo['owner'] . " | " . $fileinfo['group'] . " | " . $fileinfo['size'] . " Byte | " . $fileinfo['month'] . " " . $fileinfo['day'] . " " . $fileinfo['time'] . "<br>";
  }
}
rawlist_dump();

// FTP Verbidung schließen
ftp_close($conn_id);

Hallo Rainer,

mit so etwas hatte ich auch schon experimentiert. War für meinen Geschmack etwas überdimensioniert, funktioniert aber auch … bis auf das Datum, das man nur in der Form: Monat , Tag bekommt. Das Jahr wird nur angezeigt wenn das Datum älter als 12 Monate ist, dafür fehlt dann aber die Uhrzeit.

Gruß
Jens

Hallo Jens,

habe alle genannten DLL’s im System32-Ordner und die php_http.dll in den extensions-Ordner kopiert und in der php-ini eingebunden, bekommen trotzdem den oben genannten Error. Muss ich mich wohl noch etwas belesen.

Vielen Dank und Grüße
René

Hallo Jens,

funktioiert aber auch … bis auf das Datum, das man nur in der Form: Monat , Tag bekommt. Das Jahr wird nur angezeigt wenn das Datum älter als 12 Monate ist, dafür fehlt dann aber die Uhrzeit.

Das funktioniert einwandfrei. Es zeigt das an so wie es auf dem FTP-Server vorhanden ist, nicht mehr und nicht weniger.

Hallo Rene,

ich würde sagen du postest mal den Inhalt deiner php.ini und den Code vom Script … vielleicht finden wir den Fehler :wink:

Gruß
Jens

Hallo Jens,

hier kommt der Inhalt meiner PHP.ini:


extension_dir = "C:\IP-SYMCON\extensions\"
zend_extension = ixed.5.1.win
max_execution_time = 150
enable_dl=on
extension = php_mysql.dll
extension = ixed.5.1.win
extension = php_gd2.dll
extension = php_imap.dll
extension= php_http.dll
extension= php_curl.dll

[Session]
session.save_handler = "files"
session.save_path = "c:\ip-symcon\session"
session.auto_start = 0
session.use_trans_sid = 1
session.name = "pt"

Im Prinzip scheitert schon der Ausfruf von folgendem Php - befehl:

$response = http_post_fields("http://fritz.box/cgi-bin/webcm", array('wlan:settings/ap_enabled' => '0'));

Hier sind noch die Dateiversionen:
21.09.2007 00:23 249.856 ssleay32.dll
21.09.2007 00:22 1.249.280 libeay32.dll
09.10.2008 19:24 465.141 libssl32.dll

Beim Starten von IPS bekomme ich die Meldung"Prozedureinsprungpunkt"inflateCopy"wurde in der DLL php5ts.dll nicht gefunden.

Tausch ich die DLL gegen eine andere Version habe ich im Scripteditor kein Outputfenster mehr.:mad:

Gruss René

Versuch mal die .dll in „“ zu setzen :wink:

extension = "php_http.dll"

Hallo Jens,
das bringt keine Veränderung, die Dll’s im extensionsordner werden ja auch gefunden, der Befehl läßt sich trotzdem nicht ausführen.

Gruss René

Bei der php_http.dll auch nicht? Der Fehler scheint bei der Datei zu liegen, da keine andere Fehlermeldung auftaucht :confused:

Ich hänge dir mal meine Dateien an.

http.zip (866 KB)

Guten Morgen Jens,

danke schön, mit deinen Dateien funktioniert es.:slight_smile:
Wie wertest die die Antwort denn aus, bzw. wie schaltest du das WLAN ?
Die Anmeldung an der FB geht auch per Script?

Danke und Gruss René

Oha … Frühaufsteher :wink:

Vom Prinzip her kann man mit der richtigen Kombination alle Seiten auf der Fritzbox aufrufen … oder auch Daten an die Box senden.
Der Aufruf, also der von dir gepostete Code, schaltet das WLan aus … mit einer 1 an Stelle der 0 würde du es wieder einschalten, oder was meinst du mit der Frage wie ich das WLan schalte??
Ich habe die Nachtschaltung in der Fritzbox aktiviert, schalte also das WLan Nachts aus. Falls ich aber mal spät (oder früh :wink: ) nach Hause komme, aktiviere ich über den Touchscreen (Designer) das WLan wieder bzw. schalte es dann auch wieder ab.

Die Antwort werte ich gar nicht aus … ich werte den Status der FB aus und stelle an Hand eines Icons den Zustand dar.

Den Status frage ich ab, in dem ich mich einlogge und dann die Abfrage starte:

Einloggen:

   
$password = "xxxxxx";
$response = http_post_fields("http://fritz.box/cgi-bin/webcm", array('login:command/password' => $password));

Statusabfrage:

   
$url = "http://fritz.box/cgi-bin/webcm?getpage=../html/query.txt&var:cnt=1&var:n0=wlan:settings/ap_enabled";

Gruß
Jens

Hallo Jens,

vielen Dank für deine Hilfe und ein schönes Wochenende.:slight_smile:

Gruss René

Gern geschehen!

Übrigens … bei der Statusabfrage kommt entweder eine 1 oder eine 0 zurück, je nach Status und wenn noch mehr Fragen auftauchen … einfach fragen :wink:

Gruß
Jens

Na dann.:wink:

Wie genau machst du die Statusabfrage. Mit dieser einzelnen Zeile bekomme ich doch nichts zurück?
PHP ist nicht grade meine starke Seite. Hast du etwas mehr Code für mich, den ich anpassen kann? Ich steh wie vor ner Wand :confused:

Vielen Dank und Grüße René

:eek:…

Klar kannst du den Code bekommen!
Ich finde es nämlich schade, dass hier relativ wenige Member ernsthaft bereit sind einem an ihren Ergebnissen teilhaben zu lassen bzw. mit Code weiter zu helfen. Meistens kommt nur ein Verweis auf die PHP-Referenz Seite … andererseits hätte ich ohne Eigeninitiative dieses Script und auch andere nie fertig gestellt bekommen. :wink:

Ich bin erst seit Dez. letzten Jahres hier dabei und konnte auch nix mit PHP anfangen, mußte dann aber erkennen das es ohne Eigeninitiative nix wird.

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Fritzbox_Wlan_Status.ips.php
Trigger  : 
Interval : 
*/

   
   $password = "xxxxxx";
   $response = http_post_fields("http://fritz.box/cgi-bin/webcm", array('login:command/password' => $password));
   //echo $response;
   
   IPS_sleep(1000);
   
   $url = "http://fritz.box/cgi-bin/webcm?getpage=../html/query.txt&var:cnt=1&var:n0=wlan:settings/ap_enabled";

   $Ausgabe = fopen("$url", "r");
   if (!$Ausgabe){
      echo("ERROR : Kann URL nicht öffnen : '$url'
");  // Kann URL nicht öffnen
   }

    $buffer = fgets($Ausgabe);
    
    if ($buffer == 1)
      {SetValueBoolean("WLAN", TRUE);}
   else
      {SetValueBoolean("WLAN", FALSE);}
      
    //echo $buffer;

?>

Dazu dann eine globale Variable „WLAN“ angelegt. Die Intervalzeit für die Abfrage kann beliebig sein. Ich mache eine Abfrage nur beim Neustart von IPS bzw. 3min nach WLan Abschaltung durch die FB.
Ansonsten über ein Timerscript nach dem Manuellen Ändern des Status. Die Frage ist eben wann und wie oft das Sinn macht.

Jens

Hallo Jens,

Ich finde es nämlich schade, dass hier relativ wenige Member ernsthaft bereit sind einem an ihren Ergebnissen teilhaben zu lassen bzw. mit Code weiter zu helfen. Meistens kommt nur ein Verweis auf die PHP-Referenz Seite … andererseits hätte ich ohne Eigeninitiative dieses Script und auch andere nie fertig gestellt bekommen.

Wenn Profis Code einstellen, würden wir ihn doch nicht verstehen.

Als Beispiel Olli mit seinen //\.? usw. Dann lieber doch Eigeniniative und ich verstehe was ich mache. Geholfen wird einem ja immer, wenn´s mal klemmt :slight_smile:

Ich sehe darin auch immer den Lerneffekt. Wobei es bei mir halt auch immer dauert bei größeren Scripten bis sie so funktionieren wie sie sollen. Aber dann weiss ich auch warum. :wink:

Hallo Jens,

vielen Dank für deine Hilfe.
Ich bekomme in der Variablen $Ausgabe den String „Resource id #3“ während die nachfolgende Variable $buffer aber leer ist.

Wenn ich, wie in deinem Code mit fgets die erste Zeile aus der Variablen $Ausgabe hole, müsste doch zumindest dieses „Resource id #3“ drin sein, oder?

Grusss René