104394
Goto Top

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

Content-Key: 183228

Url: https://administrator.de/contentid/183228

Printed on: April 25, 2024 at 23:04 o'clock

Member: MrNetman
MrNetman Apr 07, 2012 at 12:37:21 (UTC)
Goto Top
Hi Mondsüchtiger,

Links zu https Seiten machen nur mit dem Passwort Sinn.
Aber wie wäre es mit selbst lesen und lernen. Wenn du schon ein Handbuch vor dir hast.
Außerdem fehlen Milliarden von Informationen:
Intranetserver / Webserver ?
Geschützter Benutzerkreis ?
Wie weit bist du gekommen ?

Gruß
Netman
Mitglied: 104394
104394 Apr 08, 2012 at 06:56:46 (UTC)
Goto Top
Hallo!
1. Wo findest du eine https Seite?
2. Wenn ich mich in diesem Handbuch auskennen würde, hätte ich die Frage hier nicht gestellt.
3. Webserver wird auch von Edis verwendet.
4. Ich habe die SMS Schnittstelle und benötige Hilfe bei der Erstellung eines Skriptes, da meines aus irgendeinen Grund nicht funktioniert.
Member: EvilMoe
EvilMoe Apr 08, 2012 at 07:27:08 (UTC)
Goto Top
Morgen,

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.
Member: Guenni
Guenni Apr 08, 2012 at 08:17:29 (UTC)
Goto Top
Hi Apollo0815,

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
Mitglied: 104394
104394 Apr 08, 2012 at 12:12:43 (UTC)
Goto Top
Hallo!
Danke für Euere Antworten und Bemühungen es klappt!
Danke und frohe Ostern!
lg
Member: filippg
filippg Apr 09, 2012 at 22:43:17 (UTC)
Goto Top
Hallo,

<form action="http://edis.at/sms.php3&quot; method="get" name="smsform" onsubmit="return hinweis()">
Ergibt z.B.: Zieladresse im Browser: http://edis.at/sms.php3?id=123&amp;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.

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
Member: Guenni
Guenni Apr 11, 2012 at 19:09:21 (UTC)
Goto Top
Hi Fillipp,

Das

$return = file_get_contents("http://www.edis.at/sms.php3?id=XXX&amp;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
Member: EvilMoe
EvilMoe Apr 11, 2012 at 19:18:20 (UTC)
Goto Top
Hallo,

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,

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
Member: Guenni
Guenni Apr 12, 2012 at 20:46:30 (UTC)
Goto Top
Hi Evil,

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
Member: fachspezi
fachspezi Mar 28, 2014 at 12:36:03 (UTC)
Goto Top
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!