SMS mit eigenem Webportal

nick81

Neuer User
Mitglied seit
18 Okt 2006
Beiträge
66
Punkte für Reaktionen
0
Punkte
6
Hallo zusammen,

meine Frage bezieht sich vielleicht etwas auf php, aber vielleicht kann mir ja trotzdem jemand weiterhelfen. Ich habe auf der Fritzbox einen Apache laufen. Um die kosten vom Festnetz ins Handynetz zu reduzieren habe ich mir ein Guthaben bei SMSdiscount.com gekauft. Die bieten auch an, direkt per Webseite SMS zu verschicken. Diese Möglichkeit möchte ich als kleine Webseite auf meiner Fritzbox laufen lassen. Ich habe mir bereits einige Infos zusammengesucht, aber ich habe leider nicht viel Ahnung von php und skripten.

Die SMS wird mit folgendem Link generiert:
https://myaccount.smsdiscount.com/c...from=xxxxxxxxxx&to=xxxxxxxxxx&text=xxxxxxxxxx

username: Benutzername
password: wird wohl klar sein ;)
from: Absendenummer/Kontoname
to: Empfängernummer (muss international sein, also so +4901701231231)
text: Der Text mit 160 Zeichen. Es werden hier auch Leerzeichen akzeptiert

Die php:
[Edit frank_m24: Bitte benutzt CODE Tags für solche Ausgaben.]
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>SMS Dienst</title>
</head>
<body>


<?php

// https://myaccount.smsdiscount.com/clx/sendsms.php?username=xxxxxxxxxx&password=xxxxxxxxxx&from=xxxxxxxxxx&to=xxxxxxxxxx&text=xxxxxxxxxx

$maxSizeSms = 160;
DEFINE('user', 'meinbenutzername');
DEFINE('password', 'meinpw');
DEFINE('nummer', '01701234567');

$filename = "string.ini";

if( isset($_GET['mobile']) && isset($_GET['sms']) ){
	
	$sms = urlencode(substr($_GET['sms'], 0, $maxSizeSms));
	preg_match_all('/[\d]{11}/', $_GET['mobile'], $mobile);	
	$Url  = 'https://myaccount.smsdiscount.com/clx/sendsms.php?';
    $Url .= 'username='.user.'&password='.password.'&from='.nummer;
    $Url .= '&to='.$mobile[0][0].'&text='.$sms;
	
	$handle = fopen($filename, "wb");
	fwrite($handle, $Url);
	fclose($handle);
	
	
	shell_exec('./send.sh');
}


?>


<form method="get" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">

Handy Nummer<br />
<input type="text" name="mobile" size="15" maxlength="15" value="" /><br />

Nachricht (maximal <?php echo $maxSizeSms ?> Zeichen)<br />
<input type="text" name="sms" size="30" maxlength="<?php echo $maxSizeSms ?>" value="" /><br />

<input type="submit" value="Senden" />

</form>

</body>
</html>

Die send.sh:
#!/bin/ash

cat string.ini | curl

Wenn ich was eintrage erscheint in der Adresszeile so etwas:

http://sms.meinedomain.net/sms.php?mobile=+491702182581&sms=test+test+nick+text

in der datei string.ini

Probleme:

1. In der Datei string.ini wird das "+" vor der Handynummer nicht übernommen
2. In der Datei string.ini wird ein "+" zwischen jedes Wort gesetzt
3. Die Datei send.sh scheint nicht zu funktionieren.

Vielen Dank im Vorraus.

Gruß nick81
 
+ ist %2B
Leerzeichen sollte %20 oder + sein.

siehe hier.
 
bezgl send.sh

es heißt #!/bin/bash und nicht #!/bin/ash
 
@snokkers,

bei allen Skripten von Fritzload steht #!/bin/ash. Auf der Fritzbox werkelt doch nur die Busybox, die nutzt wohl ash:
BusyBox v1.1.2 (2008.02.14-10:20+0000) Built-in shell (ash)

@bodega

Ja, du hast schon recht, das "+" und Leerzeichen so interpretiert werden, aber das ist keine Lösung für mein Problem, da ja auch nicht das "+" als "%2B" in die string.ini geschrieben wird. Ich habe gerade gesehen, das ich zu dem Problem ein schlechtes Beispiel geschrieben habe.

Neue string.ini
https://myaccount.smsdiscount.com/clx/sendsms.php?username=benutzer&password=test&from=handynummer&to=49170123123&text=test+test+test
Was mir gerade dabei auffällt ist, das die Handynummer hinten abgeschnitten wird. Da fehlt eine Zahl.
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,936
Beiträge
2,221,196
Mitglieder
371,706
Neuestes Mitglied
nbkRT
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.