PHP skript pro posílání SMS z sms.sluzba.cz
Téměř identická služba ke KlikniaVolej.cz je i sms.sluzba.cz. Posílání SMS (na základě dokumentace z tohoto PDF) přes tuto bránu můžete v PHP zajistit třeba následovně:
$action = 'send';
$body = 'Text SMS zpravy';
$vars = array(
'msg' => $body,
'msisdn' => $telefon,
'act' => $action,
'login' => $username,
'auth' => md5(md5($passwd).$username.$action.substr($body,0,31))
);
$data = http_build_query($vars);
$url = '//smsgateapi.sluzba.cz/apipost10/sms';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 180);
curl_setopt($ch, CURLOPT_HEADER , false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER , true);
curl_setopt($ch, CURLOPT_VERBOSE , false);
curl_setopt($ch, CURLOPT_POST , true);
curl_setopt($ch, CURLOPT_POSTFIELDS , $data);
$response = curl_exec($ch);
curl_close($ch);
Pro stavbu post/get parametrů je naprosto vynikající `http_build_query`. Bere asociativní pole, automaticky první hodnotu předznačí otazníkem a zbytek preclíkem. A rovnou všechny hodnoty encoduje, přímo jako urlencode.
[1] no vida, nová funkce z PHP 5, kterou není potřeba suplovat svou. Díky, v příkladu jsem to upravil.
Nechu rejpat, ale proč bych nemohl curl rovnou předat array? Čili:
curl_setopt($ch, CURLOPT_POSTFIELDS , $vars);