104394
07.04.2012
6852
10
0
SMS Schnittstelle mit php
Hallo!
In meiner Firma haben wir seit einiger Zeit eine SMS Schnitstelle zum versenden von SMS gemietet.
Nun möchte soll auf der Homepage ein PHP Seite z.B. sms.php integriert werden - welche aus einem Formular für Telefonnummer und Empfänger besteht.
Mit einem klick auf senden soll dann das SMS versendet werden.
Die SMS Schnittstelle ist "http2sms.at/sms".
Die Nachricht wird wie folgend übermittelt http://edis.at/sms.php3?id=XXX&pw=XXX&dnr=%2BXXXXXXXX&snr=X ...
id: User-ID
pw: Passwort
dnr: Zielrufnummer (Im URL statt +43 -> %2B43)
snr: Absender; 11 Zeichen Text oder 16stellige Nummer
mit + vorangestellt ('+' als %2B übergeben!)
msg: Textnachricht bis 160 Zeichen
Kann mir bitte bitte bitte jemand weiterhelfen wie ich das am besten realisieren kann. Auf diesem Gebiet habe ich noch fast keine Erfahrung.
Eine Beschreibung zur Übermittlung der Nachrichten gibts unter "http://www.edis.at/download-manual_42.htm"
Danke
Apollo0815
In meiner Firma haben wir seit einiger Zeit eine SMS Schnitstelle zum versenden von SMS gemietet.
Nun möchte soll auf der Homepage ein PHP Seite z.B. sms.php integriert werden - welche aus einem Formular für Telefonnummer und Empfänger besteht.
Mit einem klick auf senden soll dann das SMS versendet werden.
Die SMS Schnittstelle ist "http2sms.at/sms".
Die Nachricht wird wie folgend übermittelt http://edis.at/sms.php3?id=XXX&pw=XXX&dnr=%2BXXXXXXXX&snr=X ...
id: User-ID
pw: Passwort
dnr: Zielrufnummer (Im URL statt +43 -> %2B43)
snr: Absender; 11 Zeichen Text oder 16stellige Nummer
mit + vorangestellt ('+' als %2B übergeben!)
msg: Textnachricht bis 160 Zeichen
Kann mir bitte bitte bitte jemand weiterhelfen wie ich das am besten realisieren kann. Auf diesem Gebiet habe ich noch fast keine Erfahrung.
Eine Beschreibung zur Übermittlung der Nachrichten gibts unter "http://www.edis.at/download-manual_42.htm"
Danke
Apollo0815
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 183228
Url: https://administrator.de/contentid/183228
Ausgedruckt am: 26.11.2024 um 03:11 Uhr
10 Kommentare
Neuester Kommentar
Morgen,
wenn du es ganz einfach machen willst:
Dann den "$return" angucken ob alles erfolgreich ankam und fertig ;)
Ich finde es etwas riskant ein Passwort unverschlüsselt zu übertragen.
EDIT: Du kannst bei edis.at eine IP Firewall einstellen. Das würde ich auf jeden Fall auch machen.
wenn du es ganz einfach machen willst:
$return = file_get_contents("http://www.edis.at/sms.php3?id=XXX&pw=XXX&dnr=%252BXXXXXXXX&snr=XXXXXXX&msg=Das+ist+ein+Test");
Dann den "$return" angucken ob alles erfolgreich ankam und fertig ;)
Ich finde es etwas riskant ein Passwort unverschlüsselt zu übertragen.
EDIT: Du kannst bei edis.at eine IP Firewall einstellen. Das würde ich auf jeden Fall auch machen.
Hi Apollo0815,
dafür kannst du ein einfaches Formular verwenden, mit der Methode get, dann werden die Formulardaten
automatisch an die Zieladresse angehangen:
Ergibt z.B.: Zieladresse im Browser: http://edis.at/sms.php3?id=123&pw=456&dnr=%2B491721234569&s ...
Wird das Formular gesendet, onsubmit, wird die Funktion hinweis() aufgerufen. Wenn die Nachricht
länger als 160 Zeichen ist, gibt die Funktion false zurück und das Formular wird nicht gesendet.
Dazu muß allerdings JavaScript aktiviert sein.
Gruß
Günni
dafür kannst du ein einfaches Formular verwenden, mit der Methode get, dann werden die Formulardaten
automatisch an die Zieladresse angehangen:
<form action="http://edis.at/sms.php3" method="get" name="smsform" onsubmit="return hinweis()">
Ergibt z.B.: Zieladresse im Browser: http://edis.at/sms.php3?id=123&pw=456&dnr=%2B491721234569&s ...
Wird das Formular gesendet, onsubmit, wird die Funktion hinweis() aufgerufen. Wenn die Nachricht
länger als 160 Zeichen ist, gibt die Funktion false zurück und das Formular wird nicht gesendet.
Dazu muß allerdings JavaScript aktiviert sein.
<?php
/*
* Testausgabe
*/
echo '<pre>';
print_r($_GET);
echo '</pre>';
echo '<b>Query-String:</B> '.$_SERVER['REQUEST_URI'];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>SMS-Versand</title>
<script type="text/javascript">
<!--
/*
* Prüfen, ob JavaScript aktiviert ist.
*/
function is_java(){
if (!navigator.javaEnabled()) {
alert('Bitte JavaScript aktivieren!');
window.location.href="http://server";
}
}
/*
* Zum Ausführen der Funktion muß JavaScript aktiviert sein.
*/
function hinweis(){
if(document.smsform.msg.value.length > 160){
alert('Maximale Zeichenanzahl erreicht/überschritten!');
return false;
}
return true;
}
// -->
</script>
</head>
<body onload="is_java()">
<!--
Bei action="" die richtige Adresse eintragen. z.B.: action="http://edis.at/sms.php3"
Die Formulardaten werden automatisch angehangen.
//-->
<form action="" method="get" name="smsform" onsubmit="return hinweis()">
<p><label for="userid">UserId: </label><input type="text" name="id" id="userid"/></p>
<p><label for="userpass">Passwort: </label><input type="password" name="pw" id="userpass"/></p>
<p><label for="empf">Empfänger: </label><select name="dnr" id="empf">
<option>Empfänger</option>
<option>+491721234569</option>
<option>+4917212345611</option>
</select></p>
<p><label for="sender">Absender: </label><select name="snr" id="sender">
<option>Absender</option>
<option>+491721234567</option>
<option>+491721234568</option>
</select></p>
<p><label for="usermsg">Nachricht(max. 160 Zeichen): </label></p>
<p><textarea name="msg" id="usermsg" cols="40" rows="10"></textarea></p>
<p><input type="submit"/></p>
</form>
</body>
</html>
?>
Gruß
Günni
Hallo,
Das
Gruß
Filipp
<form action="http://edis.at/sms.php3" method="get" name="smsform" onsubmit="return hinweis()">
Ergibt z.B.: Zieladresse im Browser: http://edis.at/sms.php3?id=123&pw=456 ...
Hat nur den Nachteil, dass die Anfrage vom Browser ausgeführt wird - dieser muss also das Kennwort kennen, und die von EvilMoe genannte IP Firewall kann nicht genutzt werden.Ergibt z.B.: Zieladresse im Browser: http://edis.at/sms.php3?id=123&pw=456 ...
Das
$return = file_get_contents("http://www.edis.at/sms.php3?id=XXX&pw=XXX&dnr=%252BXXXXXXXX&snr=XXXXXXX&msg=Das+ist+ein+Test");
von Evil Moe läuft serverseitig, ist also halbwegs sicher, weil das Kennwort nicht an den Client übergeben wird.Gruß
Filipp
Hi Fillipp,
Die Funktion file_get_contents gibt einen Dateiinhalt als String zurück. Sie erwartet als Parameter einen Dateinamen,
und wenn man sms.php?id=123&pw=456 . . . angibt, gibt's eine Fehlermeldung.
Und ich wüsste auch nicht, wie man sich damit an einem Server verifizieren soll. Die Funktion liefert außerdem auch nur den
vom PHP-Parser durchgelassenen bzw. produzierten HTML-Text. PHP-Code wird nicht ausgegeben, also ist auch nicht zu sehen,
wie das Array $_GET ankommt.
Zu . . .
. . . noch folgende Frage:
Ich kann ja wohl kaum die Webseite des Dienstanbieters modifizieren. Wo soll denn dann die Funktion file_get_contents
ausgeführt werden? Das kann doch nur nach Absenden des Forms auf einem eigenen Webserver geschehen.
Das kannst du ja mal ausprobieren und deine Ergebnisse posten. Bin gespannt.
Wenn der Dienst keinen sicheren Kanal anbietet, dann muß man sich eben überlegen, ob man diesen Dienst nutzen will.
Und das hat Apollo0815 ja für sich entschieden.
Gruß
Günni
Das
$return = file_get_contents("http://www.edis.at/sms.php3?id=XXX&pw ...;
von Evil Moe läuft serverseitig, ist also halbwegs sicher, weil das Kennwort nicht an den Client übergeben wird.
$return = file_get_contents("http://www.edis.at/sms.php3?id=XXX&pw ...;
von Evil Moe läuft serverseitig, ist also halbwegs sicher, weil das Kennwort nicht an den Client übergeben wird.
Die Funktion file_get_contents gibt einen Dateiinhalt als String zurück. Sie erwartet als Parameter einen Dateinamen,
und wenn man sms.php?id=123&pw=456 . . . angibt, gibt's eine Fehlermeldung.
Und ich wüsste auch nicht, wie man sich damit an einem Server verifizieren soll. Die Funktion liefert außerdem auch nur den
vom PHP-Parser durchgelassenen bzw. produzierten HTML-Text. PHP-Code wird nicht ausgegeben, also ist auch nicht zu sehen,
wie das Array $_GET ankommt.
Zu . . .
von Evil Moe läuft serverseitig, ist also halbwegs sicher, weil das Kennwort nicht an den Client übergeben wird.
. . . noch folgende Frage:
Ich kann ja wohl kaum die Webseite des Dienstanbieters modifizieren. Wo soll denn dann die Funktion file_get_contents
ausgeführt werden? Das kann doch nur nach Absenden des Forms auf einem eigenen Webserver geschehen.
Das kannst du ja mal ausprobieren und deine Ergebnisse posten. Bin gespannt.
Wenn der Dienst keinen sicheren Kanal anbietet, dann muß man sich eben überlegen, ob man diesen Dienst nutzen will.
Und das hat Apollo0815 ja für sich entschieden.
Gruß
Günni
Hallo,
mit file_get_contents lassen auch auch URL''s öffnen, vorausgesetzt das es die Config erlaubt.
Verifizieren tut man sich über die Parameter der URL. Das mit dem String ist schon richtig, nur nach dem Dokument für deren Schnittstelle liefern die auch nur einen String zurück... natürlich ist das nicht eine schöne Möglichkeit. Lieber wäre es natürlich das man eine XML oder JSON whatever bekommen würde wo detaillierte Informationen drin stehen über den genaue Fehler etc.
Sven
mit file_get_contents lassen auch auch URL''s öffnen, vorausgesetzt das es die Config erlaubt.
Mit dieser Funktion können Sie eine URL als Dateinamen verwenden, falls Sie fopen wrappers ermöglicht haben. Mehr Details dazu, wie Sie den Dateinamen angeben müssen finden Sie bei fopen(). Eine <Liste der unterstützten URL Protokolle, die Fähigkeiten der verschiedenen Wrapper, Hinweise zu deren Verwendung und Informationen zu den eventuell vorhandenen vordefinierten Variablen finden Sie unter <Supported Protocols and Wrappers.
Und ich wüsste auch nicht, wie man sich damit an einem Server verifizieren soll. Die Funktion liefert außerdem auch nur den
vom PHP-Parser durchgelassenen bzw. produzierten HTML-Text. PHP-Code wird nicht ausgegeben, also ist auch nicht zu sehen,
vom PHP-Parser durchgelassenen bzw. produzierten HTML-Text. PHP-Code wird nicht ausgegeben, also ist auch nicht zu sehen,
Verifizieren tut man sich über die Parameter der URL. Das mit dem String ist schon richtig, nur nach dem Dokument für deren Schnittstelle liefern die auch nur einen String zurück... natürlich ist das nicht eine schöne Möglichkeit. Lieber wäre es natürlich das man eine XML oder JSON whatever bekommen würde wo detaillierte Informationen drin stehen über den genaue Fehler etc.
Wenn der Dienst keinen sicheren Kanal anbietet, dann muß man sich eben überlegen, ob man diesen Dienst nutzen will.
Mich wundert es das ein Anbieter sowas nicht per HTTPS anbietet. Zumal der SMS Anbieter nicht mal günstig ist.Ich kann ja wohl kaum die Webseite des Dienstanbieters modifizieren. Wo soll denn dann die Funktion file_get_contents
Aber das Formular kann er modifizieren?Sven
Hi Evil,
Dem habe ich auch nicht widersprochen. Ich habe nur ge(sagt)schrieben, dass kein PHP-Code
zurückgeliefert wird.
Jein!! Aber wenn du die Variablen kennst, die das Zielscript verarbeitet, kannst du ein eigenes Formular
an die Adresse senden. Und das hat ja nach Aussage von Apollo wohl funktioniert.
Gruß
Günni
mit file_get_contents lassen auch auch URL''s öffnen, vorausgesetzt das es die Config erlaubt.
Dem habe ich auch nicht widersprochen. Ich habe nur ge(sagt)schrieben, dass kein PHP-Code
zurückgeliefert wird.
Aber das Formular kann er modifizieren?
Jein!! Aber wenn du die Variablen kennst, die das Zielscript verarbeitet, kannst du ein eigenes Formular
an die Adresse senden. Und das hat ja nach Aussage von Apollo wohl funktioniert.
Gruß
Günni
Ist eine ganz schöne Sache, aber so viel Aufwand würde ich persönlich nicht betreiben.
Weißt du was du an Zeit in die Entwicklung der Schnittstelle gesteckt hast?
Denn wenn man sich mal die Angebote hier (http://www.textanywhere.de/sms-services/text-online.aspx) ansieht, dann gibt es hier schon fertige Lösungen für kleines Geld. Die laufen dann komplett losgelöst vom eigenen Netzwerk und können auch nach Bedarf aktiviert und wieder abgeschalten werden.
Wenn man im eigenen System eine Schnittstelle schafft, dann baut man das System ja wieder um und kann andere Probleme hervorrufen!
So einfach den Browser öffnen und SMS verschicken. Egal wo man sich befindet!
Weißt du was du an Zeit in die Entwicklung der Schnittstelle gesteckt hast?
Denn wenn man sich mal die Angebote hier (http://www.textanywhere.de/sms-services/text-online.aspx) ansieht, dann gibt es hier schon fertige Lösungen für kleines Geld. Die laufen dann komplett losgelöst vom eigenen Netzwerk und können auch nach Bedarf aktiviert und wieder abgeschalten werden.
Wenn man im eigenen System eine Schnittstelle schafft, dann baut man das System ja wieder um und kann andere Probleme hervorrufen!
So einfach den Browser öffnen und SMS verschicken. Egal wo man sich befindet!