Send SMS from form
26.08.2021
Support Wissensdatenbank
Send SMS with a form
With this script, SMS can be sent using any GET(example xy.ch?key1=value1….) and POST (From a form).
Step 1: Click here to download “sms.zip”
Step 2: Unpack the archive and upload the two scripts “sms.php” and “sms_gw.php” to your website.
Here is the code for “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); } }
Important:
- The variables after “// SMS Settings” must be correct. You can choose any name as sender. In the variable “recipients” you can enter several recipients separated by commas.
- The variables after “// Field Settings” can be set if you want:
- “Allowed_fields” = Only these GET / POST fields are included in the SMS (no matter how many more fields are sent with GET or POST).
- “Required_fields” = These fields must have a value. If these fields are not sent or are sent empty, an error is displayed.