|
|
|
| Здравствуйте.
Меня сильно мучает один вопрос.
Можно както записать входящий ПОСТ запрос?.
Вот например ГЕТ запрос я принимаю с помощью такой функции:
$get = base64_encode("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
|
А как принять ПОСТ запрос?. С помощью этой функции, так она его не принимает.
Кто знает? подскажите пожалуйста. | |
|
|
|
|
|
|
|
для: rtland
(26.01.2009 в 00:41)
| | $name = $_POST['name'];
где в скобочках - имя передаваемого параметра (строки, чекбокса, кнопки и т.д. из формы) | |
|
|
|
|
|
|
|
для: SteAlzzer
(26.01.2009 в 00:55)
| | Во мне интересно, или я задаю вопрос всегда, что в него не кто вьехать не может.
или просто всем лень полностью его прочитать.
может я забыл сказать, я не знаю какие запросы на мой сайт прийдут. | |
|
|
|
|
|
|
|
для: rtland
(26.01.2009 в 01:02)
| | Вам нужно знать откуда он поступил, или содержимое массива $_POST ? | |
|
|
|
|
|
|
|
для: Николай2357
(26.01.2009 в 01:26)
| | От куда он поступил это я уже все умею, а вот содержимое масива пост не как выхватить не могу.
у меня с постом все обрезаеться что дальше ?. | |
|
|
|
|
|
|
|
для: rtland
(26.01.2009 в 01:40)
| | print_r($_POST) и смотрите, что вам приходит, те значения которые будут указаны как array(), это массив, обрабатывать в цикле. А вот само понятие POST, совсем еще не означает, что вам нужно массив обрабатывать, проще обратиться к конкретной переменной. | |
|
|
|
|
|
|
|
для: rtland
(26.01.2009 в 01:02)
| | >Во мне интересно, или я задаю вопрос всегда, что в него не кто вьехать не может.
>или просто всем лень полностью его прочитать.
>может я забыл сказать, я не знаю какие запросы на мой сайт прийдут.
Вам лень его понятно сформулировать.
И то, что Вы не один такой, Вас, увы, не извиняет.
К моменту запуска php-скрипта тело POST-запроса уже разобрано самим интерпретатором,
Наполнение структурно разложено в масссивах $_POST и $_FILES.
Доступ к сырому телу (RAW_POST_DATA), как правило, потерян, исключая некоторые (довольно редкие) случаи.
Содержимое массивов $_POST и $_FILES в полном Вашем распоряжении. | |
|
|
|
|
|
|
|
для: Trianon
(26.01.2009 в 01:53)
| | Все верно, если бы мы еще правельно вопросы формулировали, то поверте, небыло бы форума.
Мы пишем как мы понимаем, а уже по мере умственного развитее в этом направлении и вопросы понятней становяться и в принципе и спрашивать уже нечего.
Так что если кого обидел прошу извенить.
Я конечно понял что с пост запросом мароки ох как много но ради собственного интереса я его буду добивать до конца.
Попробуем разобрать масив и вытянуть из него все что в нем есть.
Хотя странно что не придумали функции для такой цели. | |
|
|
|
|
|
|
|
для: rtland
(26.01.2009 в 02:18)
| | >Я конечно понял что с пост запросом мароки ох как много
Никакой мороки, по крайней мере ни чуть не сложнее обработки GET. А какую вам функцию придумать должны били разработчики - универсальную? Увы, запрос может содержать какое угодно число передаваемых данных в каком угодно представлении. Вам лучше знать, что вы предлагаете пользователю, и что от него получаете, а не разработчику. | |
|
|
|
|
|
|
|
для: sim5
(26.01.2009 в 02:24)
| | Все спасибо. уже разобрался сложного не чего нет.
Просто испугался сначала.
думал на пол страницы вся функция займет, а заняла всего две строчки.
Большое спасибо что на путь истенный поставили.
А еще вопрос.
Ну а тогда зачем для ГЕТ запроса функцию придумали. | |
|
|
|
|
|
|
|
для: rtland
(26.01.2009 в 02:30)
| | >А еще вопрос.
>Ну а тогда зачем для ГЕТ запроса функцию придумали.
Какую функцию? | |
|
|
|
|
|
|
|
для: sim5
(26.01.2009 в 10:03)
| | REQUEST_URI | |
|
|
|
|
|
|
|
для: rtland
(26.01.2009 в 20:00)
| | А при чем тут гет? Вас не интересует что означает URI? | |
|
|
|
|
|
|
|
для: Loki
(26.01.2009 в 22:01)
| | Притом что приходящий ГЕТ запрос можно узнать при помощи REQUEST_URI, а вот чтоб узнать приходящий ПОСТ запрос нет не чего, кроме того что сам придумаешь. | |
|
|
|
|
|
|
|
для: rtland
(26.01.2009 в 23:35)
| | зачем его узнавать?
URI - строка относительно короткая. Ничего не мешает её хранить в переменной всё время выполнения.
Тело POST-запроса может быть размером ... каким угодно. В том числе и больше объема оперативной памяти.
И из-за чьей-то прихоти его держать не станут, тем более, что вся полезная информация уже переброшена в разобранном виде в массивы и файлы. | |
|
|
|
|
|
|
|
для: Trianon
(26.01.2009 в 23:48)
| | Ну это вам его не зачем знать. А мне очень нужно знать каким образом хакеры отакуют мой сервис чтоб потом ставить защиту против их отак. Ну и самому охота узнать чтож за злобный код они посылают.
Потому что все что пишут на форумах хакерских не года не работает, сколько на своем сайте не испытывал все бесталку. | |
|
|
|
|
|
|
|
для: 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];
}
|
И всеже гдето запутался. | |
|
|
|
|
|
|
|
для: rtland
(26.01.2009 в 20:04)
| | А вы не пробовали весь POST-массив вывести на экран? Может быть тогда вы (с удивлением) узнаете, что нет в нем ? и & как разделителей. | |
|
|
|
|
|
|
|
для: 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 мб. потом он будет перезаписан. | |
|
|
|