Php страница вопрос ответ

Простейший сервис Вопрос/Ответ, используя Formspring

В данной статье я покажу, как можно использовать сервис анонимных вопросов Formspring для организации раздела «Вопрос/Ответ» на стороннем ресурсе на PHP.

Formpring API в природе существует (REST-like), но сейчас находится на стадии «беты», и полноценно им пользоваться могут, насколько я понял, лишь избранные. На странице для разработчиков пишут: «The API is currently limited to a select group of users and partners right now». Нужна регистрация, которая не тут же выплёвывает необходимые для работы ключи. Я уже посылал свою заявку какое-то время назад, но ответа так и не получил. Однако, некоторыми методами API можно пользоваться, не проходя аутентификации (банальное получение информации).

Вывод списка ответов

Для нашего сервиса ограничимся стандартной выдачей в 20 записей. Тут сложностей нет, поэтому воспользуемся функцией file_get_contents(). Запрос делаем по URL:

beta-api.formspring.me/answered/listВАШ_ЛОГИН

Такой запрос вернёт нам список ответов в формате JSON.
В итоге получим примерно такой код:

$data = json_decode(file_get_contents('http://beta-api.formspring.me/answered/list/ВАШ_ЛОГИН')); foreach ($data->response as $item) < echo ' '.$item->question.' ('.date('d.m', strtotime($item->time)).' #) 
'.$item->answer.'
'; >

Примечание: ещё запись содержит поле asked_by, которое будет не пустым, если вопрос задали не анонимно.

Отправка анонимного вопроса

Тут и начинается главное шаманство. Первым делом получим token, который позволит успешно осуществить задуманное. Для этого лучше всего выйти из учётной записи (разлогиниться), т.е. стать анонимом и зайти на вашу страничку:

www.formspring.meВАШ_ЛОГИН

Смотрим исходный код страницы (обычно используются клавиши Ctrl+U). Ищем там или «token», или «id=”ask”», внутри которого ищем скрытое поле token.
Теперь нужно узнать User-Agent вашего браузера. По моим наблюдениям, token генерируется с использованием значения User-Agent, поэтому нужно узнать это значения для браузера, в котором искали token. Сделать это можно разными способами. Например, для Firefox или Google Chrome можно открыть консоль JavaScript и ввести:

Например, для моего браузера это строка:
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0

Читайте также:  Php slim auth middleware

Теперь переходим непосредственно к кодированию. Создайте форму с полем для ввода текста вопроса. Обработчик отправки формы должен быть примерно следующим:

$ch = curl_init('http://www.formspring.me/profile/ask/ВАШ_ЛОГИН'); $data = array( 'token' => ПОЛУЧЕННЫЙ_ТОКЕН, 'question' => ТЕКСТ_ИЗ_ФОРМЫ, 'ajax' => 1 ); curl_setopt($ch, CURLOPT_URL, 'http://www.formspring.me/profile/ask/ВАШ_ЛОГИН'); curl_setopt($ch, CURLOPT_REFERER, 'http://www.formspring.me/ВАШ_ЛОГИН'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_USERAGENT, ПОЛУЧЕННЫЙ_USER-AGENT); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if (curl_exec($ch) !== FALSE) < echo 'Вопрос был успешно отправлен!'; >else < echo curl_error($ch); >curl_close($ch); 

Используем библиотеку cURL для имитации работы браузера и отправки формы на сервер Formspring.

Если всё было сделано правильно, ответить на вопрос можно будет со страницы профиля на Formspring (как и другое управление вопросами/ответами). Я не описывал всего подробно, не рассматривал обработку ошибок, сконцентрировавшись лишь на донесении основной идеи.

Пример работы скрипта также прилагается.

UPDATE:
По многочисленным просьбам залил исходники и примеры использования на github. Оформил всё в виде отдельного класса. Вероятно, в коде много Индии, поэтому об ошибках, неточностях и пожаланиях сообщайте!

UPDATE 2:
Также люди просили исходники самой страницы. Получите.

Источник

Как создать онлайн тест на php

Как создать онлайн тест на php

Иногда людям не знающим программирования, нужно создать онлайн тест на php для своего сайта, на самом деле все очень просто, постараюсь наглядно объяснить.

Для решения данной задачи мы будем использовать простую HTML форму и POST запросы. И так приступим.

1. Нам потребуется создать файл php, в общем по сути не важно, если вы используете CMS, то пишете там, где можно вставить php код.

2. Создадим простую форму с полями «radio», то есть для выбора вариантов ответа и кнопкой для результатов.

Тест на php

3. Отлично мы создали форму. Теперь в неё нужно внести изменения, чтобы она работала.

Читайте также:  Css align img centre

method=»POST» — метод отправки php форм.

action=»result.php» — файл, в который будут отправляться результаты формы.

4. Присвоим уникальное имя вариантам ответов, чтобы объединить их между собой, для одного вопроса — name = «имя»:

5. А теперь пропишем имя ответов к каждому варианту, например ‘value = «a»‘

6. Создадим файл result.php в том же каталоге, в котором создадим скрипт теста на php для обработки и вывода результата правильных и не правильных ответов.

   

Правильных ответов:

Неправильных ответов:

7. Перед html кодом добавим скрипт php:

Описание: Здесь все довольно просто, мы создаем простое условие для каждого вопроса. Если в вопросе [q1] вариант «a», то прибавляем к переменной «$ot» + 1 ($ot — количество правильных ответов), если другой вариант то записываем в переменную $not «неправильных ответов» + 1.

8. Теперь выводим на страницу в html коде правильные и неправильные ответы:

Правильных ответов:

Неправильных ответов:

Заключение. Теперь у вас есть простой тест на php и html, теперь можно и запустить его для онлайн. Вы можете добавить сколько угодно вариантов ответов по аналогии. Добавить стилей и улучшить код. Можно было все сделать намного грамотней, но проще этого не придумаешь. Работа у теста такая: выбрали варианты, нажали на кнопку «результат», нас перекидывает на вторую страницу, где выводится подсчет правильных и неправильных ответов. Удачи!

С помощью POST-запроса можно реализовать обратную форму, о том, как это делается читайте в статье — Форма обратной связи php без спама.

Источник

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