Скрипт отправки СМС через Goip4 шлюз

Приведу пример скрипта написанного на PHP, для отправки СМС сообщений через Goip4 шлюз.
Скрипт получает данные из базы SQL запросом и поочередно отправляет СМС на каждый номер, а также заносит запись об отправке в специальную таблицу sms.

#!/usr/bin/php

<?php

include("config/config.inc.php");
include("config/connect.inc.php");


$Result = mysqli_query($db,
"
SELECT
    abon.first_name,
    abon.second_name,
    abon.id as id,
    abon.depozit as balance,
    abon.id,
    abon.otkl,
    abon.mobile,
    abon.tarif,
    new_tarif.cost_day,
    new_tarif.cost as cost_month,
    new_tarif.dayORmonth as period
FROM
    abon, new_tarif
WHERE
    abon.tarif = new_tarif.id AND abon.state=1 AND abon.killed='' AND abon.tarif=114
"
);


while($Row = mysqli_fetch_array($Result))
{
$user = $Row[id];
$balance =$Row[balance];
$phone = $Row[mobile];

$phone_length=strlen($phone);

if($phone_length==10)
{
$mess_ = "Текст сообщения. На вашем счету $balance";
$mess =  rawurlencode($mess_);

print("$phone           $mess_\n");

//test phone
//$phone = "0670000000";
$r = file_get_contents("http://192.168.22.10/goip/en/dosend.php?USERNAME=ЛОГИН&PASSWORD=ПАРОЛЬ&smsprovider=3&goipname=lifecell&smsnum=$phone&method=2&Memo=$mess");
mysqli_query($db, "INSERT INTO sms VALUES(NULL, '$user', '$phone', NOW(), '$mess_', '$balance')");
//print($r);
//exit();

}
}
?>

Содержимое config.inc.php:

<?php
$mysql_host="localhost";
$mysql_user="ЛОГИН";
$mysql_password="ПАРОЛЬ";
$mysql_base="БАЗА";
?>

Содержимое connect.inc.php:

<?php
$db=mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_base);
mysqli_query($db, "SET NAMES 'utf8'");
?>

PHP скрипт «ТОП должников АСРМ «Ника»»

Приведу пример PHP кода отображающего список должников из базы данных АСРМ «Ника»:

<?php
// данные доступа к базе данных
$db_host="192.168.1.1";
$db_user="user";
$db_password="password";
$db_name = "base";
$table_name = "abon";

// соединение с БД
mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());
mysql_select_db($db_name) or die (mysql_error());
mysql_query("SET NAMES 'utf8'");

// запрос
$query = 'SELECT * FROM `'.$table_name.'` WHERE `depozit`<0 ORDER BY `depozit` ASC LIMIT 100;';
$sql = mysql_query($query);

// обрабатываем полученный результат
// количество
$num_rows = mysql_num_rows($sql);
echo $num_rows.' должников показано:<br />';

// выводим данные
while ($sql_data = mysql_fetch_array($sql)) {
    echo '<table cellpadding="5" cellspacing="3" border="0"><tr><td>';
    echo '<tr><td>'.$sql_data['depozit'].'</td><td>'.$sql_data['id'].'</td><td>'.$sql_data['first_name'].'</td><td>'.$sql_data['second_name'].'</td></tr>';
    echo '</tr></td></table>';
}
?>

Смотрите также:
Простое кеширование страниц

PHP. Перенаправление на другую страницу (Redirect)

Приведу пример перенаправления на другую страницу:

<?php
  header("Location: http://www.example.com/");
  exit;
?>

Пример перенаправления через указанное количество секунд:

<?php
  header('Refresh: 5; URL=http://www.example.com/');
  echo 'Через 5 секунд Вы будете автоматически перенаправлены на другую страницу.';
  exit;
?>

Пример Redirect в JavaScript (это может работать не у всех):

<script type="text/javascript">
  location.replace("http://www.example.com/");
</script>

Пример Redirect в JavaScript через 5 секунд (это может работать не у всех):

<script type="text/javascript">
  setTimeout('location.replace("http://www.example.com/")', 5000);
</script>

Пример Redirect в HTML через 5 секунд (если указать 0, то будет переадресовывать сразу):

<meta http-equiv="refresh" content="5; url=http://www.example.com/">

Комментарии в PHP

В PHP комментарии могут быть трех типов.

Приведу пример первого (однострочный в стиле C++):

<?php
echo "ТЕКСТ"; // Комментарий
?>

Второй в стиле Unix:

<?php
echo "ТЕКСТ"; # Комментарий
?>

Третий многострочный:

<?php
     /* Комментарий
        Комментарий
        Комментарий */
     echo "ТЕКСТ";
?>

Решение ошибки «PDOException «could not find driver»»

Заметил как-то следующую ошибку:

PDOException «could not find driver»

Причиной может быть не активированный pdo_mysql либо не установлено php5-mysql.
Посмотрим информацию о PDO:

php -i|grep PDO

В php.ini или подключенных файлах конфигурации должны быть строки:

extension=pdo.so
extension=pdo_mysql.so

Посмотрим информацию о php5-mysql:

dpkg --get-selections | grep php5-mysql

Если не установлен, то установим, в Ubuntu это можно сделать например так:

sudo apt-get install php5-mysql
sudo apt-get install php-mysql
sudo /etc/init.d/apache2 restart
sudo service apache2 restart

Как установить PHP 5.6 в Ubuntu 16

В Ubuntu 16 при установке PHP командой apt-get install php устанавливается PHP версии 7, по этому чтобы установить PHP 5.6, можно добавить сторонний репозиторий.

Если в системе установлен PHP 7, то удалить все его компоненты можно например так:

sudo apt-get purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`

Теперь добавим сторонний источник:

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php

И установим из него PHP 5.6:

sudo apt-get update
sudo apt-get install php5.6

Аналогично можно установить модули, например:

sudo apt-get install php5.6-mysql php5.6-mcrypt php5.6-mbstring php5.6-xml

Для проверки установленной версии PHP выполним:

sudo php -v

Как включить короткие теги PHP?

Понадобилось недавно включить короткие теги PHP так как код сайта который я переносил на другой сервер был написан с их использованием.
По умолчанию они отключены.
Например обычные теги выглядят так:

<?php  код  ?>

А короткие так:

<? код ?>

Чтобы включить короткие необходимо в файле конфигурации php.ini найти параметр short_open_tag и указать его значение в On, например:

short_open_tag=On

php.ini обычно находится в директории /etc/php5/, если используется cpanel, то в /usr/local/lib/php.ini.

Необходимо перезагрузить веб сервер чтобы применить изменение, в Ubuntu apache2 перезагружается командой:

sudo service apache2 restart

Решение ошибки «Расширение mysqli|mysql не найдено»

Заметил как-то на одном из новых Ubuntu серверов ошибку при открытии phpMyAdmin — «Расширение mysqli|mysql не найдено».

Решается она естественно установкой расширения следующей командой:

sudo apt-get install php5-mysql

После чего перезагрузим веб-сервер чтобы применить изменения:

sudo service apache2 restart

Все.

Как понизить версию PHP?

На примере буду понижать версию PHP в Ubuntu.

Если PHP установлен в системе, то полностью удалим его:

sudo apt-get remove php5-gd php5-curl php5-common
sudo apt-get remove --purge php5*

Обновим систему и установим необходимые компоненты чтобы в дальнейшем можно было вручную скомпилировать любую версию PHP:

sudo apt-get update
sudo apt-get install build-essential openssl libssl-dev openssl-blacklist-extra bison autoconf automake libtool libmysqlclient-dev re2c libxslt1-dev libxml2-dev flex libssl-dev libsqlite0-dev libdb5.1-dev libncurses5-dev libbz2-dev libldap2-dev libjpeg-dev libt1-dev libc-client2007e-dev libXpm-dev libfreetype6-dev libcurl4-openssl-dev libgmp3-dev libmcrypt-dev libmhash-dev libt1-dev libsnmp-dev freetds-dev libpcre3-dev zlib1g-dev libmysqlclient-dev openssl-blacklist git unixODBC-dev libpng12-dev libaspell-dev libreadline6-dev librecode-dev libtidy-dev

Теперь скачем архив с нужной версией PHP с официального сайта <noindex><a href="http://in1.php.net/releases/" target="_blank" rel="nofollow">http://in1.php.net/releases/</a></noindex>, распакуем его, и перейдем в директорию с распакованными файлами:
sudo -i
wget http://museum.php.net/php5/php-5.3.4.tar.bz2
tar -xvf php-5.3.4.tar.bz2
cd php-5.3.4

Ну и собственно сконфигурируем, скомпилируем и установим:

./configure
make
make install

Конфигурировать также можно с дополнительными параметрами, например:

./configure --with-config-file-path=/etc/php5/apache2 -with-pear=/usr/share/php -with-bz2=/usr -with-mysqli -with-mysql

После установки добавим в конфигурационный файл /etc/apache2/apache2.conf следующую строку:

AddType application/x-httpd-php .php

И подключим PHP к apache2 выполнив команду:

sudo a2enmod php5
sudo service apache2 restart

Если при выполнении команды make возникнет ошибка следующего вида:

/root/php-5.3.3/php-5.3.4/ext/dom/node.c:1903:21: error: dereferencing pointer to incomplete type
    ret = buf->buffer->use;
                     ^
In file included from /root/php-5.3.3/php-5.3.4/main/php.h:38:0,
                 from /root/php-5.3.3/php-5.3.4/ext/dom/node.c:26:
/root/php-5.3.3/php-5.3.4/ext/dom/node.c:1905:40: error: dereferencing pointer to incomplete type
     RETVAL_STRINGL((char *) buf->buffer->content, ret, 1);
                                        ^
/root/php-5.3.3/php-5.3.4/Zend/zend_API.h:545:20: note: in definition of macro ‘ZVAL_STRINGL’
   const char *__s=(s); int __l=l;  \
                    ^
/root/php-5.3.3/php-5.3.4/ext/dom/node.c:1905:5: note: in expansion of macro ‘RETVAL_STRINGL’
     RETVAL_STRINGL((char *) buf->buffer->content, ret, 1);
     ^
make: *** [ext/dom/node.lo] Ошибка 1

то нужно применить патч php_patch, файл из архива положим в директорию с исходниками PHP /ext/patch.patch, перейдем в директорию ext и применим патч (после чего команда make должна будет выполнится без этой ошибки):

cd /ext/
git apply -v patch.patch 
cd ..

Решение ошибки «PHP Deprecated: Function split() is deprecated in»

Данная ошибка может возникнуть после обновления PHP на более новую версию.

Собственно функция split() является устаревшей с PHP 5.3.x и её необходимо заменить в коде на preg_split()

Все.