Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как принять POST запрос?
 
 автор: rtland   (26.01.2009 в 00:41)   письмо автору
 
 

Здравствуйте.
Меня сильно мучает один вопрос.
Можно както записать входящий ПОСТ запрос?.
Вот например ГЕТ запрос я принимаю с помощью такой функции:
$get = base64_encode("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);

А как принять ПОСТ запрос?. С помощью этой функции, так она его не принимает.
Кто знает? подскажите пожалуйста.

  Ответить  
 
 автор: SteAlzzer   (26.01.2009 в 00:55)   письмо автору
 
   для: rtland   (26.01.2009 в 00:41)
 

$name = $_POST['name'];
где в скобочках - имя передаваемого параметра (строки, чекбокса, кнопки и т.д. из формы)

  Ответить  
 
 автор: rtland   (26.01.2009 в 01:02)   письмо автору
 
   для: SteAlzzer   (26.01.2009 в 00:55)
 

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

  Ответить  
 
 автор: Николай2357   (26.01.2009 в 01:26)   письмо автору
 
   для: rtland   (26.01.2009 в 01:02)
 

Вам нужно знать откуда он поступил, или содержимое массива $_POST ?

  Ответить  
 
 автор: rtland   (26.01.2009 в 01:40)   письмо автору
 
   для: Николай2357   (26.01.2009 в 01:26)
 

От куда он поступил это я уже все умею, а вот содержимое масива пост не как выхватить не могу.
у меня с постом все обрезаеться что дальше ?.

  Ответить  
 
 автор: sim5   (26.01.2009 в 01:51)   письмо автору
 
   для: rtland   (26.01.2009 в 01:40)
 

print_r($_POST) и смотрите, что вам приходит, те значения которые будут указаны как array(), это массив, обрабатывать в цикле. А вот само понятие POST, совсем еще не означает, что вам нужно массив обрабатывать, проще обратиться к конкретной переменной.

  Ответить  
 
 автор: Trianon   (26.01.2009 в 01:53)   письмо автору
 
   для: rtland   (26.01.2009 в 01:02)
 

>Во мне интересно, или я задаю вопрос всегда, что в него не кто вьехать не может.
>или просто всем лень полностью его прочитать.
>может я забыл сказать, я не знаю какие запросы на мой сайт прийдут.

Вам лень его понятно сформулировать.
И то, что Вы не один такой, Вас, увы, не извиняет.

К моменту запуска php-скрипта тело POST-запроса уже разобрано самим интерпретатором,
Наполнение структурно разложено в масссивах $_POST и $_FILES.
Доступ к сырому телу (RAW_POST_DATA), как правило, потерян, исключая некоторые (довольно редкие) случаи.
Содержимое массивов $_POST и $_FILES в полном Вашем распоряжении.

  Ответить  
 
 автор: rtland   (26.01.2009 в 02:18)   письмо автору
 
   для: Trianon   (26.01.2009 в 01:53)
 

Все верно, если бы мы еще правельно вопросы формулировали, то поверте, небыло бы форума.
Мы пишем как мы понимаем, а уже по мере умственного развитее в этом направлении и вопросы понятней становяться и в принципе и спрашивать уже нечего.
Так что если кого обидел прошу извенить.

Я конечно понял что с пост запросом мароки ох как много но ради собственного интереса я его буду добивать до конца.

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

Хотя странно что не придумали функции для такой цели.

  Ответить  
 
 автор: sim5   (26.01.2009 в 02:24)   письмо автору
 
   для: rtland   (26.01.2009 в 02:18)
 

>Я конечно понял что с пост запросом мароки ох как много

Никакой мороки, по крайней мере ни чуть не сложнее обработки GET. А какую вам функцию придумать должны били разработчики - универсальную? Увы, запрос может содержать какое угодно число передаваемых данных в каком угодно представлении. Вам лучше знать, что вы предлагаете пользователю, и что от него получаете, а не разработчику.

  Ответить  
 
 автор: rtland   (26.01.2009 в 02:30)   письмо автору
 
   для: sim5   (26.01.2009 в 02:24)
 

Все спасибо. уже разобрался сложного не чего нет.
Просто испугался сначала.
думал на пол страницы вся функция займет, а заняла всего две строчки.
Большое спасибо что на путь истенный поставили.

А еще вопрос.
Ну а тогда зачем для ГЕТ запроса функцию придумали.

  Ответить  
 
 автор: sim5   (26.01.2009 в 10:03)   письмо автору
 
   для: rtland   (26.01.2009 в 02:30)
 

>А еще вопрос.
>Ну а тогда зачем для ГЕТ запроса функцию придумали.

Какую функцию?

  Ответить  
 
 автор: rtland   (26.01.2009 в 20:00)   письмо автору
 
   для: sim5   (26.01.2009 в 10:03)
 

REQUEST_URI

  Ответить  
 
 автор: Loki   (26.01.2009 в 22:01)   письмо автору
 
   для: rtland   (26.01.2009 в 20:00)
 

А при чем тут гет? Вас не интересует что означает URI?

  Ответить  
 
 автор: rtland   (26.01.2009 в 23:35)   письмо автору
 
   для: Loki   (26.01.2009 в 22:01)
 

Притом что приходящий ГЕТ запрос можно узнать при помощи REQUEST_URI, а вот чтоб узнать приходящий ПОСТ запрос нет не чего, кроме того что сам придумаешь.

  Ответить  
 
 автор: Trianon   (26.01.2009 в 23:48)   письмо автору
 
   для: rtland   (26.01.2009 в 23:35)
 

зачем его узнавать?
URI - строка относительно короткая. Ничего не мешает её хранить в переменной всё время выполнения.
Тело POST-запроса может быть размером ... каким угодно. В том числе и больше объема оперативной памяти.
И из-за чьей-то прихоти его держать не станут, тем более, что вся полезная информация уже переброшена в разобранном виде в массивы и файлы.

  Ответить  
 
 автор: rtland   (27.01.2009 в 00:35)   письмо автору
 
   для: Trianon   (26.01.2009 в 23:48)
 

Ну это вам его не зачем знать. А мне очень нужно знать каким образом хакеры отакуют мой сервис чтоб потом ставить защиту против их отак. Ну и самому охота узнать чтож за злобный код они посылают.
Потому что все что пишут на форумах хакерских не года не работает, сколько на своем сайте не испытывал все бесталку.

  Ответить  
 
 автор: rtland   (26.01.2009 в 20:04)   письмо автору
 
   для: rtland   (26.01.2009 в 00:41)
 

Долго думая, сделал вот так:
$qwe_key = array_keys($_POST);
$qwe_val = array_values($_POST);
$qwe_con = count($_POST);
$qwe_vop = "?";
$qwes = "&";
$qwer = "=";
$val_0 = $qwe_vop.$qwe_key[0].$qwer.$qwe_val[0];
$qwe_var = $qwe_con - 1;
$qwe_num = 0;
while(++$qwe_num <= $qwe_con){
$val_0 .= $qwes.$qwe_key[$qwe_num].$qwer.$qwe_val[$qwe_num];
}

И всеже гдето запутался.

  Ответить  
 
 автор: sim5   (27.01.2009 в 05:53)   письмо автору
 
   для: rtland   (26.01.2009 в 20:04)
 

А вы не пробовали весь POST-массив вывести на экран? Может быть тогда вы (с удивлением) узнаете, что нет в нем ? и & как разделителей.

  Ответить  
 
 автор: HaJIuBauKa   (27.01.2009 в 08:52)   письмо автору
 
   для: rtland   (26.01.2009 в 20:04)
 

Однако
Вы пытаетесь, пост-данные представить в виде строки запроса чтоли? (видимо затем, чтобы хакеру потом обратно отсылать :) )
дак вот есть замечательная функция: http_build_query
http://www.php.net/manual/ru/function.http-build-query.php

Она из любого массива ключ-значение вернет вам строку типа: key1=v1&key2=v2&key3=v3...

вопрос: зачем вам это?
Ах да, записать вам его надо. Куда записать? Если в лог файл в виде строки, тогда так:

<?php

$log 
"";

$postdata serialize($_POST);

$log .= date("d.m.Y H:i:s")." - START POST >>>>>>\n\n";
$log .= $postdata;
$log .= date("d.m.Y H:i:s")." - END POST <<<<<<\n\n";

// запись в лог
if (@filesize("post.log") < 2000000$fl fopen("post.log""a");
    else 
$fl fopen("logs/events.log""w");
fwrite($fl$log);
fclose($fl);

?>


Только учтите, что пост-данные могут быть ооочень большими. В скрипте моем есть ограничение размера файла в 2 мб. потом он будет перезаписан.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования