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

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

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2017, 19:32   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию Отправить POST запрос из PHP

Здравствуйте!

Пытаюсь отправить POST запрос PHP средствами..., но почему-то в result приходит вес код страницы, к которой делается запрос, а не результат выполнения этого кода.


$url = '../reg/send_rec_pass_sms.php';
$params = array(
'sendsms' => 'sendsms', // в '../reg/send_rec_pass_sms.php' это будет $_POST['param1'] == '123'
'phone' => '$email_phone', // в http://localhost/post.php это будет $_POST['param2'] == 'abc'
'name' => $name,
'newpass' => $newpass,
);
$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)
)
)));

echo $result;
Женя32 вне форума Ответить с цитированием
Старый 11.08.2017, 19:34   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Значит сервер не настроен на исполнение php, вот и отдает текст страницы.
p51x на форуме Ответить с цитированием
Старый 11.08.2017, 19:40   #3
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Значит сервер не настроен на исполнение php, вот и отдает текст страницы.
Как настроить?.....
Женя32 вне форума Ответить с цитированием
Старый 11.08.2017, 20:03   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вбить в гугл или доку: имя_вашего_веб_сервера php
p51x на форуме Ответить с цитированием
Старый 11.08.2017, 21:35   #5
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Почему пишет, Неверный запрос!?....

$hostname = 'localhost';
$path = '../reg/send_rec_pass_sms.php';
$content = '';
// Устанавливаем соединение с сервером $hostname
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) die('<p>'.$errstr.' ('.$errno.')</p>');

// Данные HTTP-запроса
$data = 'sendsms='.urlencode($sendsms).'&ph one='.urlencode($email_phone);
// Заголовок HTTP-запроса
$headers = 'POST '.$path." HTTP/1.1\r\n";
$headers .= 'Host: '.$hostname."\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= 'Content-Length: '.strlen($data)."\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers.$data);
// Получаем ответ
while ( !feof($fp) ) $content .= fgets($fp, 1024);
// Закрываем соединение
fclose($fp);
// Выводим ответ в браузер
echo $content;
}





HTTP/1.1 400 Bad Request Date: Fri, 11 Aug 2017 18:10:34 GMT Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 Vary: accept-language,accept-charset Accept-Ranges: bytes Connection: close Content-Type: text/html; charset=iso-8859-1 Content-Language: en
Bad request!
Your browser (or proxy) sent a request that this server could not understand.
If you think this is a server error, please contact the webmaster.
Error 400
localhost
08/11/17 23:10:34
Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
Женя32 вне форума Ответить с цитированием
Старый 12.08.2017, 03:22   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Сделайте нормальную форму, добьетесь, чтобы сервер её глотал.
Потом сравнивайте запрос от формы с самодельным.
Тут же как в программировании - какая-нибудь запятая пропущена, и уже ошибка
Black Fregat вне форума Ответить с цитированием
Старый 12.08.2017, 12:11   #7
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Ниже приведенный код работает отлично! Но, скажите пожалуйста, почему в ответе приходит много лишнего? Ответ должен быть: smssend, а приходит:

HTTP/1.1 200 OK Date: Sat, 12 Aug 2017 08:15:46 GMT Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 X-Powered-By: PHP/5.3.8 Content-Length: 10 Content-Type: text/html smssend



Код, который посылает POST:

$hostname = 'localhost';
$path = "https://localhost/shop/reg/send_rec_pass_sms.php";
$content = '';
// Устанавливаем соединение с сервером $hostname
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) die('<p>'.$errstr.' ('.$errno.')</p>');

// Данные HTTP-запроса
$data = 'sendsms='.urlencode($sendsms).'&ph one='.urlencode($email_phone);
// Заголовок HTTP-запроса
$headers = 'POST '.$path." HTTP/1.1\r\n";
$headers .= 'Host: '.$hostname."\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= 'Content-Length: '.strlen($data)."\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers.$data);
// Получаем ответ
while ( !feof($fp) ) $content .= fgets($fp, 1024);
// Закрываем соединение
fclose($fp);
// Выводим ответ в браузер
echo $content;
}
Женя32 вне форума Ответить с цитированием
Старый 12.08.2017, 12:15   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Это HTTP... вы хоть основы почитайте. Игнорируйте заголовки и будет вам только smssend
p51x на форуме Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправить POST запрос nibufep PHP 9 30.09.2015 17:26
Отправить POST запрос на текущую страницу в webbrowserе nibufep Общие вопросы Delphi 48 07.07.2015 20:15
Отправить POST-запрос на сервер sarmat84 Работа с сетью в Delphi 4 21.08.2012 10:44
PHP CURL AJAX POST-запрос SLASH_CyberPunk PHP 0 28.11.2011 16:07
POST запрос с XML структурой (php) ExHang Помощь студентам 0 07.01.2011 20:42