Php отправить сообщение пользователю

PHP скрипт сообщений

При помощи php можно «отправлять сообщения» друг другу. Предположим что у на сайте есть пользователи и необходимо организовать систему личных сообщений. Для реализации этого нам потребуются: таблица в БД для сообщений, скрипт для отправки сообщений и скрипт для чтения сообщений. Идем по порядку-таблица. В таблице будут следующие поля: id, дата отправки, отправитель, получатель, содержимое сообщения и флаг. Код создания таблицы будет выглядеть так, назовем её messages.

Дамп таблицы

В поле data будет дата отправки сообщения,поле from-уникальный номер отправителя,to-номер получателя,message-само сообщение и поле flag-отметка о том-прочтено сообщение или ещё нет. Теперь займемся клиентской частью-напишем форму отправки сообщения и php обработчик формы отправки.

Форма отправки и обработчик

В форме отправки нам потребуется ввести сам текст сообщения и выбрать адресата. В форме укажем обработчик и метод передачи. Подробнее о формах в phpчитайте тут.

Форма ввода сообщения

Обработчик отправки сообщения

Вот таким образом можно отправить сообщение одному пользователю от другого. В моем скрипте сообщение отправляется от пользователя с В вашем случае адрес отправителя берется из массива $_SESSION или $_COOKIE, смотря как у вас устроен сайт. Теперь напишем скрипт, который выведет все сообщения,адресованные конкретному пользователю. Опять же подтягивайте номер пользователя из сессии или куки.

И наконец последний скрипт, предназначенный для чтения сообщения из базы и отображения его пользователю.

Чтение сообщения

Вот и всё. Если вы поняли как Всё это работает — вы сможете сами сделать список отправленных сообщений. С помощью поля flag можно подсвечивать новые/непрочитанные сообщения. Задавайте ваши вопросы. Все скрипты приаттачены к статье,качайте. На этом всё 🙂

Тэги материала

Источник

Отправка почты средствами PHP

Работая над проектом, мне пришлось создать специфичную «анкету соискателя» в котором надо была отправлять всю анкету на указные за ране e-mail адрес, и я сразу же вспомнил про PHP функцию mail().

bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]]) 
  • E-mail получателя
  • Заголовок письма
  • Текст письма
  • Дополнительные заголовки письма
  • Дополнительные параметры командной строки
  • true, если письмо было принято к доставке
  • false, в противном случае.
Простейший пример
Перейдем к более сложному примеру
Текст письма


1-ая строчка
2-ая строчка
'; $headers = "Content-type: text/html; charset=windows-1251 \r\n"; $headers . ; $headers .= "Reply-To: reply-to@example.com\r\n"; mail($to, $subject, $message, $headers); ?>

В начале мы определяем кому адресовано письмо, за это отвечает переменная &to, если же получателей несколько человек, то записываем через запятую адреса эл. почты.

Читайте также:  opacity

Переменные $subject и $message, не буду описывать, это и так понятно.

  • В первой строчке ми определяем ты отправляемого письма-HTML и кодировку windows-1251.
  • В 2-ом мы указываем от кого пришло письмо.
  • В 3-ем указываем e-mail адрес, для ответа на письмо.
А теперь самое интересное отправка письма c вложением (attachment)
$subject = "тема письма"; $message ="Текст сообщения"; // текст сообщения, здесь вы можете вставлять таблицы, рисунки, заголовки, оформление цветом и т.п. $filename = "file.doc"; // название файла $filepath = "files/file.doc"; // месторасположение файла //исьмо с вложением состоит из нескольких частей, которые разделяются разделителем $boundary = "--".md5(uniqid(time())); // генерируем разделитель $mailheaders = "MIME-Version: 1.0;\r\n"; $mailheaders .="Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n"; // разделитель указывается в заголовке в параметре boundary $mailheaders . ; $mailheaders .= "Reply-To: $user_email\r\n"; $multipart = "--$boundary\r\n"; $multipart .= "Content-Type: text/html; charset=windows-1251\r\n"; $multipart .= "Content-Transfer-Encoding: base64\r\n"; $multipart .= \r\n; $multipart .= chunk_split(base64_encode(iconv("utf8", "windows-1251", $message))); // первая часть само сообщение // Закачиваем файл $fp = fopen($filepath,"r"); if (!$fp) < print "Не удается открыть файл22"; exit(); >$file = fread($fp, filesize($filepath)); fclose($fp); // чтение файла $message_part = "\r\n--$boundary\r\n"; $message_part .= "Content-Type: application/octet-stream; name=\"$filename\"\r\n"; $message_part .= "Content-Transfer-Encoding: base64\r\n"; $message_part .= "Content-Disposition: attachment; filename=\"$filename\"\r\n"; $message_part .= \r\n; $message_part .= chunk_split(base64_encode($file)); $message_part .= "\r\n--$boundary--\r\n"; // второй частью прикрепляем файл, можно прикрепить два и более файла $multipart .= $message_part; mail($to,$subject,$multipart,$mailheaders); // отправляем письмо //удаляем файлы через 60 сек. if (time_nanosleep(5, 0)) < unlink($filepath); >// удаление файла 

Источник

Скрипт личных сообщений на PHP

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

Создания таблицы БД на PHP:

Начнем с базы данных для наших личных сообщения. Она представляет собой таблицу со следующими полями:

  1. ID
  2. Дата отправки
  3. Отправитель
  4. Получатель
  5. Содержимое
  6. Флаг сообщения

Мы назовем таблицу messages. Вот код создания такой таблицы БД:

CREATE TABLE IF NOT EXISTS `messages` ( `id` int(11) NOT NULL AUTO_INCREMENT, `data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `from` int(11) NOT NULL, `to` int(11) NOT NULL, `message` text NOT NULL, `flag` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  • data — дата отправки сообщения
  • from — уникальный номер отправителя
  • to — номер получателя
  • message — сообщение
  • flag — индикатор того, прочтено сообщение или еще нет
Читайте также:  Pivot table with javascript

После этого начнем работу над клиентской частью — напишем форму отправки сообщения и php-обработчик формы отправки.

Форма отправки сообщения PHP:

Форма отправки сообщения необходимо для ввода пользователем самого сообщения и адреса получателя. В форме требуется указать обработчик и метод передачи.

Форма ввода сообщения:

 
Адресат:
Текст сообщения:

Обработчик отправки сообщения:

Обработчик необходим для того, чтобы принять данные из формы ввода сообщения и сохранить их в базе данных.

/** * Принимаем постовые данные. Очистим сообщение от html тэгов * и приведем id получателя к типу integer */ $message= htmlspecialchars($_POST[‘message’]); $to=(int)$_POST[‘to’]; /** * Я использую библиотеку PDO */ $db_user=’db_username’; $db_name=’db_name’; $db_pass=’db_userpassword’; $db = new PDO(‘mysql:dbname=’.$db_name.’; host=localhost’,$db_user,$db_pass); $db->exec(«SET CHARACTER SET utf8″); $sql=»insert into messages (u_from,u_to,message,flag) values (:u_from,:u_to,:message,:flag)»; $sth=$db->prepare($sql); $sth->bindValue(‘:u_from’, 1);// 1 — ID отправителя $sth->bindValue(‘:u_to’, $to); $sth->bindValue(‘:message’, $message); $sth->bindValue(‘:flag’, 0); $sth->execute(); $error=$sth->errorInfo(); /** * Проверка результата запроса */ if($error[0]==0)< echo 'Сообщение успешно отправлено'; >else

В нашем случае сообщение отправляется от пользователя с в вашем же случае это может быть адрес, взятый из массивов $_SESSION либо $_COOKIE. Давайте напишем скрипт, который будет выводить все личные сообщения, отправленные посредством PHP определенному пользователю. Опять же, ID берите из уже обговоренных массивов $_SESSION либо $_COOKIE.

Чтение сообщений:

Последний скрипт направлен на чтение личных сообщений, которые он вытаскивает из БД.

/** * Номер пользователя */ $u_id=1; /** * Получаем номер сообщения. Приводим его типу Integer */ $id_mess=(int)$_GET[‘id’]; $db_user=’db_username’; $db_name=’db_name’; $db_pass=’db_userpassword’; $db = new PDO(‘mysql:dbname=’.$db_name.’; host=localhost’,$db_user,$db_pass); $db->exec(«SET CHARACTER SET utf8»); /** * Достаем сообщение. Помимо номера сообщения ориентируемся и на id пользователя * Это исключит возможность чтения чужого сообщения, методом подбора id сообщения */ $sql=»select * from messages where u_to = :u_to and * Установим флаг о прочтении сообщения */ $sql=»update messages set flag = 1 where u_to = :u_to and * Выводим сообщение с датой отправки */ if($res[‘id’]<>»)< echo '

‘.$res[‘message’].’

Дата отправки: ‘.$res[‘data’]; >else

Источник

Отправка сообщений через API VK средствами PHP для ленивых

Что мы будем делать: настроим отправку сообщений от имени конкретного пользователя в несколько чатов и другим пользователям используя HTTP запрос средствами PHP, с минимальными усилиями.

Собственно, одними сообщениями мы не ограничимся. Все будет работать через standalone приложение vk по тому принципу, что мы потенциально сможем делать все действия, которые будут доступны этому самому пользователю (точнее все то, на что мы выдадим сами себе права, но об этом чуть позже).

Сообщения рассматриваем именно по той причине, что с ними можно работать только в standalone-приложениях.

1. Создаем приложение

Этот пункт делать под тем аккаунтом, к которому будет привязано приложение (Не обязательно тот же, с которого будут идти сообщения).

Читайте также:  Cookie in javascript and php

image

Имя пишем какое угодно — фигурировать оно нигде не будет.
Тип — Standalone-приложение.

Далее потребуется ввести код с смс-ки которая придет на привязанный к аккаунту номер. После ввода кода ничего не меняем в полях, идем в настройки и копируем ID приложения.

image

Больше тут можно ничего не трогать.

2. Используя ID и secret_key из приложения получаем access_token

access_token — строка из некоторого количества символов, которая будет отправляться с POST запросом для выполнения каких то функций. Собственно, к ней привязано, от имени какого пользователя будем действовать и что нам можно будет делать.

Для этого создаем на сайте страничку вот с таким кодом:

$client_id — собственно, ID нашего приложения из пункта 1.

$scope — список прав, которые мы можем делать от имени нашего пользователя. Конктерно, для нашей задачи подходит именно такой: возможность доступа в любое время (offline), и доступ к сообщениям (messages). Если надо больше, полный список тут. Можно выставлять либо битовой маской, либо перечислить названия.

Далее, важный момент: Заходим на нашу страничку с кнопкой, будучи залогованы в ВК под тем пользователем, от имени которого будем работать, и жамкаем по кнопочке. Появится подобный запрос:

image

Помимо пункта доступ к общей информации, все остальные пункты будут соответствовать списку разрешений, которые были переданы в scope. Жмем далее и видим следующее:

image

Красным выделен acces_token, ради которого весь второй пункт и писался.

3. HTTP запросами, передавая через POST параметры отправляем сообщения или используем любые другие методы API

Для нетерпеливых, проверить что все работает можно так:

Заменяем нули в конце на наш acces_token и переходим по этой ссылке в браузере.

https://api.vk.com/method/messages.send?user_id=6269901&message=habrahabr&v=5.37&access_token=000000 

Что произойдет:
Сообщение с текстом из параметра message будет отправлено пользователю c указанным user_id. (Если оставить как есть — придет мне. Я не обижусь).

Параметры получателя:
  • user_id — id пользователя-адресата
  • domain — вместо user_id можно указать имя странички адресата (то, что в url-е после vk.com)
  • chat_id — сообщение уйдет в чат. Чтоб взять id чата, заходим в нужный чат, url будет иметь вид vk.com/im?peers=000000&sel=c888. Наш chat_id будет 888 (! не с888)

Полный список методов (при параметре scope=offline,messages) работать можно будет, соответственно только с разделом сообщений.

Ну и напоследок функция для отправки сообщения через POST. Простая, как автомат Калашникова — просто для наглядности:

function send($id , $message) < $url = 'https://api.vk.com/method/messages.send'; $params = array( 'user_id' =>$id, // Кому отправляем 'message' => $message, // Что отправляем 'access_token' => '0000000000000000000000000000', // access_token можно вбить хардкодом, если работа будет идти из под одного юзера 'v' => '5.37', ); // В $result вернется id отправленного сообщения $result = file_get_contents($url, false, stream_context_create(array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query($params) ) ))); > 

Источник

Оцените статью