SMS aus Formular senden
26.08.2021
Support Wissensdatenbank
SMS mit einem Formular senden
Mit diesem Skript können SMS anhand beliebiger GET(Beispiel xy.ch?key1=wert1….) und POST (Aus einem Formular) versendet werden.
Schritt 1: Klicke hier um “sms.zip” herunterzuladen.
Schritt 2: Entpacke das Archiv und lade die beiden Skripte “sms.php” und “sms_gw.php” auf deine Website hoch.
Hier ist noch der Code für “sms.php”.
<?php require_once('sms_gw.php'); // SMS Settings $sender = "Absendername"; $recipients = ["079 254 33 22"]; $sms_userkey = "XXX"; $sms_password = "XXX"; // Get Request switch($_SERVER['REQUEST_METHOD']) { case 'GET': $fields = &$_GET; break; case 'POST': $fields = &$_POST; break; } // Fields Settings $allowed_fields = []; $required_fields = []; $sms = ""; foreach( $fields as $key => $field ) { if(!empty($allowed_fields)){ if(!in_array($key, $allowed_fields)){ continue; } } $sms .= $key . ": " . $field . "\r\n"; if(!empty($required_fields)){ if(in_array($key, $required_fields)){ $_key = array_search($key, $required_fields); unset($required_fields[$_key]); } } } if(!empty($required_fields)){ echo "Error! Some fields are missing: " . implode(",",$required_fields); exit; } $sms_gateway = new SMS_GW( "json.server2sms.com" , true ); $sms_gateway->auth( $sms_userkey, $sms_password ); $sms_gateway->sendSMS( $sender, $recipients, $sms ) ?>
“sms_gw.php”.
<?php class SMS_GW { private $api_host; private $api_protocol; private $userkey; private $password; public function __construct($api_host, $api_secure){ $this->api_host = $api_host; if($api_secure) { $this->api_protocol = "https://"; } else { $this->api_protocol = "http://"; } } public function auth($userkey, $password){ $this->userkey = $userkey; $this->password = $password; } public function getCredits() { $data = array(); $response = $this->callAPI("CheckCredits", $data); if($response['StatusCode'] == "1" || $response['StatusCode'] == "StatusCode:1") { return $response['Credits']; } else { throw new \Exception($response['StatusInfo']); } } public function sendSMS($originator, $recipients, $message) { $data = array(); $data['Originator'] = $originator; $data['Recipients'] = $recipients; $data['MessageText'] = $message; $data['ForceGSM7bit'] = true; $response = $this->callAPI("SendTextSMS", $data); if($response['StatusCode'] == "1" || $response['StatusCode'] == "StatusCode:1") { return true; } else { throw new \Exception($response['StatusInfo']); } } private function callAPI($path, $json) { $curl = curl_init(); if (is_array($json)) { $json['UserName'] = $this->userkey; $json['Password'] = $this->password; $json = json_encode($json); curl_setopt($curl, CURLOPT_POSTFIELDS, $json); } curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_URL, $this->api_protocol . $this->api_host . "/" . $path); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); if(curl_errno($curl)) echo 'Curl error: '.curl_error($curl); curl_close($curl); return json_decode($result, JSON_OBJECT_AS_ARRAY); } }
Wichtig:
- Die Variablen nach “// SMS Settings” müssen korrekt sein. Als Absender kannst du einen beliebigen Namen wählen. Bei der Variabel “recipients” kannst du mehrere Empfänger durch Kommas getrennt eingeben.
- Die Variablen nach “// Field Settings” können gesetzt werden wenn du möchtest:
- “Allowed_fields” = Nur diese GET / POST Felder werden im SMS mit einbezogen (Egal wie viele mehr Felder mit GET oder POST mit gesendet werden).
- “Required_fields” = Diese Felder müssen einen Wert haben. Sollten diese Felder nicht oder Leer mit gesendet werden so wird ein Fehler angezeigt.