[Gelöst] XML Directory

Du meinst die Konfiguration von MySQL/PHPMyAdmin?
Keine Ahnung, schon möglich.
Den eigentlich beschäftige ich mich lieber mit dem Serverlosen und daher vergleichsweise unkomplizierteren SQLite.
Bei dir tipp ich halt irgendwie auf eine fehlerhaft importierte Datenbank, ohne "unique"* Spalten.

Mein SQL Export ist aber (bei mir) in Ordnung.
Hab extra die Datenbank gelöscht und anschliessend importiert,
auch ohne extra Benutzerzuweisung von admin/admin,
denn der bleibt als im System angelegter PHPMyAdmin Benutzer erhalten.
...mit den Rechten auf die Datenbanken.
Dem könnte/sollte auch wieder welche entzogen werden.
...aber erst wenn alles klappt. ;)

User-Agent
Hab eine PHP gebastelt, welches von IP-Telefonseite aufgerufen, dessen User-Agent
auf Telefondisplay anzeigt und diesen auch in eine Textdatei (xml/ua.txt) schreibt.

xml/ua_cisco.php
PHP:
<?php
error_reporting(0);
shell_exec('echo '.$_SERVER["HTTP_USER_AGENT"].' > ua.txt');
cisco_ip_phone();
function cisco_ip_phone()
{
header("Content-Type: text/xml");
echo "<CiscoIPPhoneText>\n";
echo "\t<Title>User-Agent</Title>\n";
echo "\t<Text>".$_SERVER["HTTP_USER_AGENT"]."</Text>\n";
echo "\t<Prompt>OK</Prompt>\n";
echo "</CiscoIPPhoneText>\n";
if ($AvoidPhoneBug) workaround();
}
function workaround()
{
for ($i = 1; $i <= 5; $i++) {
echo "                                                              \n";
}
}
?>
...wenn du auch so neugierig bist wie ich...


xml/ua_snom.php
PHP:
<?php
error_reporting(0);
shell_exec('echo '.$_SERVER["HTTP_USER_AGENT"].' > ua.txt');
snom_ip_phone();
function snom_ip_phone()
{
header("Content-Type: text/xml");
echo "<SnomIPPhoneText>\n";
echo "\t<Title>User-Agent</Title>\n";
echo "\t<Text>".$_SERVER["HTTP_USER_AGENT"]."</Text>\n";
echo "\t<Prompt>OK</Prompt>\n";
echo "</SnomIPPhoneText>\n";
if ($AvoidPhoneBug) workaround();
}
function workaround()
{
for ($i = 1; $i <= 5; $i++) {
echo "                                                              \n";
}
}
?>
...die SNOM Version.


* Wieder keine Ahnung, aber unique bedeutet soviel wie: Eindeutig identifizierbar
 
Zuletzt bearbeitet:
Ganz normal mit Button, statt "http://192.168.178.21/directory/xml/index.php?name=SEP00260BXXXXXX"
eben "http://192.168.178.21/directory/xml/ua_cisco.php" ohne Parameter.

Bei meinen SNOMs: "Mozilla/4.0 (compatible; snom320-SIP 8.7.5.13 1.1.3-m SNOMMAC)"
...wobei SNOMMAC die MAC des jeweiligen Snom ist, also es sich da schon unterscheidet.
 
Zuletzt bearbeitet:
Ist die Nutzung von SQLite einfach oder braucht man da spezielle Kenntnisse? Wie sieht es mit dem Aufwand aus?

Vielleicht kann so überprüfen, ob was mit der Datenbank nicht stimmt?
 
PHP muss SQLite als PDO Erweiterung unterstützen.
Das sieht in PHP etwas anders aus.

Beispiel für einen Datenbankhandle...
db.php
PHP:
<?php
date_default_timezone_set('Europe/Berlin');
$strDatenbank = 'sqlite:/var/www/sas4/tmp/snom.db3';
$dbh = new PDO($strDatenbank);
?>
...wie du siehst, wird hier eine Datei anstatt eines Servers angegeben.
Auf die wird dann mit SQL geschrieben/gelesen.
Beispiel (Auszug)
psgSNOM_1.php
PHP:
<?php // Schalter speichert/liest/liefert Schaltzustand aus SQLite3 Datenbank, Tabelle: pseudodevice
error_reporting(0);
require_once("../db.php");// SQLite3 Datenbankoeffner
require_once("../include/psg.php");
$p_id=1;// Diese id aus der Datenbank gehoert diesen Schalter
try {// Dann versuchen wir es mal...
$count = $dbh->exec("CREATE TABLE IF NOT EXISTS pseudodevice (id INTEGER PRIMARY KEY, active VARCHAR(255), type VARCHAR(255), temp VARCHAR(255), watt VARCHAR(255), command VARCHAR(255), command0 VARCHAR(255), command1 VARCHAR(255))");
$sth = $dbh->prepare('SELECT id FROM pseudodevice WHERE id = '.$p_id.'');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
...
?>
Wenn die Datenbank (Datei) nicht existiert wird sie einfach mit den richtigen Werten erstellt. :mrgreen:
...das ist wirklich nur ein kleiner Teil vom Skript, also nicht zum Ausprobieren.
 
Zuletzt bearbeitet:
ok, ist mir glaube ich zu kompliziert.
 
Genau das denke ich von MySQL :D

Nichtsdestotrotz hab ich vor eine SQLite Version für die Fritz!Box und/oder Rasspberry Pi zu machen.
...dann braucht man sich wegen der Datenbank keine grauen Haare mehr wachsen zu lassen.

Die Skripte wissen ja welche Datenbankstruktur sie brauchen.
Und eine SQLite DB Datei ist easy erstellt oder es wird auf einer Kopie eines Backups gearbeitet.
 
Zuletzt bearbeitet:
Ich wollte ja eigentlich das vorliegende Skript dazu benutzen, dass mir auch der Name des Anrufes angezeigt wird, sofern dieser im Telefonbuch gespeichert ist und nicht nur die Nummer. Aber das werde ich wohl so schnell nicht realisieren können. :(
 
Soweit gehen diese PHP Skripte nicht.
...aber theoretisch, wäre es möglich.
Dazu ist aber mehr Kommunikation nötig.
Zum Beispiel sollte das IP-Telefon schon im Telefonbuch nachsehen wenn es klingelt.
...und nicht erst irgendwann später mal, oder gar erst auf Knopfdruck.

Bei Anschluss an eine TK mit eigenen oder Onlinetelefonbüchern geht sowas.
...wohl auch mit/an LDAP Servern, aber dass hab ich noch nie gemacht.
 
Zuletzt bearbeitet:
Das soll wohl mit Asterisk und der "get_callername.php" aus dem agi-Ordner realisiert werden können.
 
OK, das würde ich mir dann auf dem Raspberry Pi mal angucken.
...da läuft nämlich mein Asterisk, die SNOMs sind an dem registriert.
 
Sehr gerne, wenn Du Lust und Zeit hast, das mal zu testen.

Ich schätze aber für mich ist das zu kompliziert. Vor allem, weil der Rest bei mir ja schon nicht so läuft, wie es laufen soll. Warum auch immer.

Aber vielleicht hilft es ja anderen weiter, die das hier lesen.
 
Kannst Du mir mal die Datenbank zur Verfügung stellen, aber ohne Einträge, vielleicht bringt das ja etwas?
 
Wobei ich mich frage, wenn ich einen Eintrag hinzufügen (bei Verzeichnis) will und diese Meldung bekomme:

1.jpg

Ist das ein Problem der .php Datei oder von der Datenbank?

Telefone kann ich problemlos hinzufügen. Daten löschen ist auch nirgends ein Problem. Nur das hinzufügen geht nicht.
 
Nimm mal das SQL aus Post #9, der Code ist OK, das muss klappen.
Die Alte Datenbank vorher löschen.

1. PHPMyAdmin --> Home -Reiter-> SQL
2. SQL Code dort einfügen, OK drücken.
...was passiert?
 
Zuletzt bearbeitet:
Die Datenbank wird eingelesen, aber ich kann keine Änderungen erkennen, daher Verweise ich mal auf #114
 
Post #114 bezieht sich PHP mässig auf die...
add_entry.inc.php
Code:
<form action="index.php?action=insert_update_entry<? if (isset($entry_id)) echo "&entry_id=$entry_id"; ?>" method="post">
<table>
<tr>
<td align="right"><? echo $_SESSION['lang']['firstname']; ?>:</td>
<td><input name="name" type="text" size="30" maxlength="255" value="<? echo $name; ?>"></td>
</tr>
<tr>
<td align="right"><? echo $_SESSION['lang']['lastname']; ?>:</td>
<td><input name="lastname" type="text" size="30" maxlength="255" value="<? echo $lastname; ?>"></td>
</tr>
<tr>
<td></td>
<td align="right"><input type="submit" value=" <? echo $_SESSION['lang']['enter']; ?> "></td>
</tr>
</table>
</form>
...extra als Code gepostet. Probier die mal aus.

Kodierung als: UNIX/ANSI
...oder UTF-8 ohne BOM
 
Zuletzt bearbeitet:
Ist das nicht der gleiche Code, der auch schon im Original benutzt wird?

Eine Veränderung gibt es nicht.
 
Scheinbar schon, denn der funktioniert eigentlich.
Ist die Textdatei aber z.B. UTF-8 mit BOM kodiert,
dann passieren "komische" Dinge.
:doktor:
wikipedia schrieb:
Wird ein BOM verwendet, kann es jedoch auch zu Problemen mit Programmen kommen, die kein Byte Order Mark erwarten oder kennen. So wird in Unix-artigen Umgebungen oft in Skriptdateien der Shebang-Mechanismus verwendet, bei dem die Zeichenfolge "#!" ebenfalls am Dateianfang stehen muss. Steht hier ein unerwartetes BOM, gibt es Probleme. Auch melden Compiler wie z. B. gcc bei Verwendung eines BOM überschüssige Zeichen am Dateianfang, und in PHP mit Standardeinstellungen[SUP][1][/SUP] führt die BOM zur Ausgabe von Zeichen an den Browser, so dass ohne „output buffering“ keine HTTP-Header mehr geändert werden können.
Auch solltest du die mal komplett neu erstellen.
Es kann auch sein, dass die aufrufende Datei (index.php)
diese Macke hat.

Deswegen sollten alle Dateien die identische Kodierung haben,
nämlich UNIX/ANSI oder UTF-8 ohne BOM.
 
Zuletzt bearbeitet:
Werde mir die Dateien mal vornehmen und alle neu kodieren. Werde dann hier mitteilen, ob das was gebracht hat.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.