Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2011, 15:01   #1
quarty
Форумчанин
 
Аватар для quarty
 
Регистрация: 09.10.2010
Сообщений: 124
По умолчанию скрипт получает post запросы и логирует в лог файл

Прошу помощи, сам слабо понимаю как это сделать, нужна ваша помощь Уважаемые Программисты.
Есть скрипт:


PHP код:
<?php
/* 
        Пример на PHP обработчика одиночных уведомлений (для реестра платежей аналогично)
        Принимает и логирует уведомления , но ничего с ними не делает
        Поставщик осуществляет обработку уведомлений 
        в соответствии с особенностями своей работы
*/
 
$logfilepath    'notify.log'//путь к файлу логирования
$web_key        'llhmjh9h9fsllfdhfJdf'//ключ, участвующий в электронной подписи сообщения 
 
//Если у Вас нет ключа, то обратитесь в службу технической поддержки
 
$post_params = array (
        
'order_mer_code' => 
                isset(
$_POST['order_mer_code']) ? $_POST['order_mer_code'] : '',        
        
'sum' => 
                isset(
$_POST['sum']) ? $_POST['sum'] : '',      
        
'mer_no' => 
                isset(
$_POST['mer_no']) ? $_POST['mer_no'] : '',        
        
'card' => 
                isset(
$_POST['card']) ? $_POST['card'] : '',    
        
'purch_date' => 
                isset(
$_POST['purch_date']) ? $_POST['purch_date'] : '',        
        
'notify_signature' => 
                isset(
$_POST['notify_signature']) ? $_POST['notify_signature'] : '',    
);
 
main ($logfilepath$web_key$post_params);
 
function 
main($logfilepath$web_key$post_params) {
        
//вычисляем электронную подпись и сравниваем с переданной
        
$notify_signature CreateAuthorizationKey ($web_key$post_params);
        if(
$notify_signature == $post_params['notify_signature']) {
                
//осуществляем обработку уведомления и логирование в качестве примера
                
$processed ProcessNotify($post_params);
                if (
$processed) { //уведомление обработано
                        
$status 'OK'// статус обработки
                        
header("HTTP/1.0 200 OK"); // генерация HTTP-заголовка
                        
print $status// формирование контента
                
} else { //уведомление не обработано
                        
$status 'FAILED'
                        
header("HTTP/1.0 400 Bad Request");
                        print 
$status;
                }
        } else { 
//неверная электронная подпись
                
$status 'FAILED'
                
header("HTTP/1.0 400 Bad Request");
                print 
$status;
        }
        
//подготовка параметров для логирования
        
$params_line '';
        foreach (
$post_params as $key=>$value) {
                
$params_line .= "$key=$value; ";
        }
        
CreateLog($status$params_line); //логирование
}
 
function 
CreateAuthorizationKey ($web_key$post_params) {//функция вычисления эл. подписи
        // правило вычисления: 
        // notify_signature = md5(order_mer_code. sum. mer_no. card. purch_date. web_key) 
        
        
$hash md5($post_params['order_mer_code'].$post_params['sum'].
        
$post_params['mer_no'].$post_params['card'].$post_params['purch_date'].$web_key);
        
        return 
$hash;
}
 
function 
ProcessNotify($post_params) { // функция реализует логику обработки уведомлений
        // Поставщик осуществляет обработку уведомлений
        // в соответствии с особенностями своей работы
        // 1 - уведомление обработано, 0 - уведомление не обработано
        
return 1;
}
 
function 
CreateLog ($status$request) { //функция добавления записи в логфайл
        
global $logfilepath;
        
$str $status."\t".$request."\n";
        
$log fopen($logfilepath'a');
        
fwrite($log$str);
        
fclose($log);
}
 
?>

Этот код получает пост запросы со стороннего сервера и записывает информацию в файл notify.log
каждое такое уведомление (пост запрос) приносит в файл лога следующие строчки:
если операция прошла успешно

PHP код:
OK      order_mer_code=12956756751sum=100.00mer_no=ok0753card=13598799purch_date=2011-01-30 09:34:55notify_signature=7284ded717436d73fed6a6f51e3e1795
если операция не завершена

PHP код:
FAILED  order_mer_code=; sum=; mer_no=; card=; purch_date=; notify_signature=; 

Мне нужно добиться того, чтоб эта информация записывалась в базу данных:
назовем например таблицу notify
в таблице ячейки:
status
code
sum
date
signature

mer_no не нужна вообще

Как это можно реализовать?
Помогите пожалуйста, буду весьма благодарен.
quarty вне форума Ответить с цитированием
Старый 01.02.2011, 15:38   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Как это можно реализовать?
пиши еще один скрипт или прогу которая будет парсить твой notify.log и вносить в таблицу
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 01.02.2011, 17:39   #3
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

зачем? можно сразу вставить данные в бд
конечно зависит от субд
пример для mysql
Код:
mysql_query("INSERT INTO notify VALUES (/*значения параметров post*/)");
NiCola999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GET/POST запросы SsdD Работа с сетью в Delphi 1 08.09.2010 20:24
Post запросы Скарам Общие вопросы .NET 9 08.08.2010 19:46
Post запросы ElectroMyStyle Фриланс 1 17.12.2009 17:23
Проверка прокси на POST запросы (php скрипт) artem81 PHP 0 04.06.2009 09:31
idHTTP GET и POST запросы FAiver Работа с сетью в Delphi 64 15.05.2008 13:22