Jag fick en förfrågan från Popkollo om hur man på ett enklet sätt kan ta emot bidrag/donationer via sms. Självklart så blev jag själv nyfiken på hur man göra detta och om det verkligen är så svårt som det låter. Det visade sig att det inte är det, nedan ska jag visa hur du enkelt kan sätta upp en donations tjänst via sms. För er som inte vet är Popkollo ett musikläger för tjejer som startades sommaren 2003 i Hultsfred. Popkollo drivs till stor del av bidrag och behöver all hjälp de kan få. Jag har tidigare hjälpt Popkollo med att sätta upp en blogg, denna är dock nu borta och utbytt mot en grym site byggd av Youwza!
Det finns ett antal olika tjänsteleverantörer som man kan använda sig av MO-SMS, Txting, Bahnhof, SMS Teknik; I nedanstående exemple så används MO-SMS. Fördelarna med MO-SMS är att tjänsten är gratis utan startavgifter och månadsavgifter, även att det finns utförlig dokumentation.
- Registrera ett gratis konto hos MO-SMS.
- Skriv/kopiera skriptet som behöves. Längre ner finns vidareutveckling av MO-SMS’s kodexempel.
- Lägg upp skriptet på er webbserver. Exempel skript finns nedan. http://lovemusic.se/sms/receive_sms.php
- Skapa en koppling mellan ert skript och MO-SMS konto under ”Hantera kopplingar”.

- Klart! Nu går det att skicka ”lovemusic donera” till 72550 och donera 5 kr.
- Överkurs: skapa databaskoppling och visa upp datan.
Exempel ta emot skript.
< ?php // Stäng av PHP:s felrapportering error_reporting(0); // Plocka ut avsändarnumret $nr = $_REQUEST['nr']; // Plocka ut SMS-meddelandet $sms = urldecode($_REQUEST['sms']); // Plocka ut priset slutanvändaren blev debiterad (för egen vinststatistik) $tariff = $_REQUEST['tariff']; // Plocka ut operatören SMS:et skickades in via (för egen vinststatistik) $operator = $_REQUEST['operator']; // Eka ut svaret som skickas tillbaka till slutanvändaren echo 'Tack för att du stödjer LoveMusic! http://lovemusic.se'; ?>
Nu när vi har satt upp denna enkla lösning kan vi ta ett steg till och spara den datan vi får i i en egen databas för senare användning. För att göra det använder jag en MySQL databas. Nedan finner ni sql syntaxen för att skapa exempel databasen sms med en tabell som också är döpt till sms.
CREATE TABLE `sms` ( `sms_id` int(4) NOT NULL auto_increment, `nr` int(10) default NULL, `sms` varchar(140) default NULL, `tariff` int(16) default NULL, `operator` varchar(64) default NULL, PRIMARY KEY (`sms_id`) );
Med hjälp utav denna databas uppsättning sparar vi nu ner avsändarnummret, sms-meddelandet, priset och operatören, vi lägger även in en unik id.
< ?php
// Stäng av PHP:s felrapportering
error_reporting(0);
// Plocka ut avsändarnumret
$nr = $_REQUEST['nr'];
// Plocka ut SMS-meddelandet
$sms = urldecode($_REQUEST['sms']);
// Plocka ut priset slutanvändaren blev debiterad (får egen vinststatistik)
$tariff = $_REQUEST['tariff'];
// Plocka ut operatören SMS:et skickades in via (får egen vinststatistik)
$operator = $_REQUEST['operator'];
// Kontakt MySQL databasen
$dbhost = 'localhost';
$dbuser = 'sms';
$dbpass = 'sms-test';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
$dbname = 'sms';
mysql_select_db($dbname) or die(mysql_error());
// Skicka datat till databasen
mysql_query("INSERT INTO sms
(nr, sms, tariff, operator) VALUES('" . $nr . "', '" . $sms . "', '" . $tariff . "', '" . $operator . "') ")
or die(mysql_error());
// Eka ut svaret som skickas tillbaka till slutanvändaren
echo 'Tack för att du stödjer LoveMusic! http://lovemusic.se';
?>
När vi nu har sparat datan i vår databas kan vi använda denna på väldigt många sett. Nedan är två kod exempel som 1. skicka tillbaka hur mycket användaren donerade samt från vilket telefonnummer samt 2. skriv ut på en webbplats hur många och hur mycket som har donerats totalt.
Skicka tillbaka hur mycket användaren donerade samt från vilket telefonnummer:
// Hämta raden som hör till telefonnummet från sms tabellen
$result = mysql_query("SELECT * FROM sms
WHERE nr='$nr'") or die(mysql_error());
$row = mysql_fetch_array( $result );
// Eka ut svaret som skickas tillbaka till slutanvändaren
echo "Tack för att du stödjer LoveMusic med ". $row['tariff']. " från nr 0". $row['nr']. " http://lovemusic.se";
Skriv ut hur många och hur mycket som har donerats totalt (exempel):
// Hämta antal rader som finns i tabellen sms
$query1 = mysql_query("SELECT * FROM sms");
$num_rows = mysql_num_rows($query1);
// Skriv ut antal rader
echo $num_rows;
echo " personer har totalt donerat ";
// Hämta summan från kolumnen tariff
$query2 = "SELECT SUM(tariff) FROM sms";
$result = mysql_query($query2) or die(mysql_error());
// Räkna ihop summan och skriv ut
while($row = mysql_fetch_array($result)){
echo $row['SUM(tariff)']. " kr";
}
Användningsområdena för detta är ju väldigt många och jag tänker genast på alla sms vaskar sidor som startade för inte så länge sedan, och som ni ser går det att med väldigt enkla medel sätta upp en sådan tjänst. Nu är det bara att testa sig fram och applicera detta på din idé.
Uppdatering: Jag vill förtydliga att jag inte satt upp denna tjänst för Popkollo utan bara förklarat hur man kan göra eftersom de inte ville betala för de arbetet, men min syn på gratis arbete får bli ett eget inlägg. Ella Blixt som arbetar för Popkollo har vädjat till Geek Girl Meetup för att någon ska hjälpa till. Om du känner dig träffat och vill ge en hjälpande hand så kan du kontakta Ella på ella.blixt@popkollo.se