В настоящее время я работаю над некоторым скриптом автоматизации в PHP (без HTML!). У меня есть два файла PHP. Один выполняет скрипт, а другой получает данные $ _POST и возвращает информацию. Вопрос в том, как из одного скрипта PHP отправить POST на другой скрипт PHP, получить возвращаемые переменные и продолжить работу над этим первым скриптом без HTML-формы и без перенаправления. Мне нужно делать запросы пару раз из первого файла PHP другому в разных условиях и возвращать разные типы данных, в зависимости от запроса. У меня есть что-то вроде этого:
<?php // action.php (first PHP script) /* doing some stuff */ $data = sendPost('get_info');// send POST to getinfo.php with attribute ['get_info'] and return data from another file $mysqli->query("INSERT INTO domains (id, name, address, email) VALUES('".$data['id']."', '".$data['name']."', '".$data['address']."', '".$data['email']."')") or die(mysqli_error($mysqli)); /* continue doing some stuff */ $data2 = sendPost('what_is_the_time');// send POST to getinfo.php with attribute ['what_is_the_time'] and return time data from another file sendPost('get_info' or 'what_is_the_time'){ //do post with desired attribute return $data; } ?>
Я думаю, мне нужна какая-то функция, которая будет вызываться с атрибутом, отправляя почтовый запрос и возвращая данные по запросу. И второй файл PHP:
<?php // getinfo.php (another PHP script) if($_POST['get_info']){ //do some actions $data = anotherFunction(); return $data; } if($_POST['what_is_the_time']){ $time = time(); return $time; } function anotherFunction(){ //do some stuff return $result; } ?>
Спасибо заранее, ребята.
Обновление: ОК. метод curl извлекает вывод php-файла. Как просто вернуть переменную $ data вместо всего вывода?
Вы должны использовать завиток . ваша функция будет такой:
function sendPost($data) { $ch = curl_init(); // you should put here url of your getinfo.php script curl_setopt($ch, CURLOPT_URL, "getinfo.php"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $result = curl_exec ($ch); curl_close ($ch); return $result; }
Тогда вы должны назвать это так:
$data = sendPost( array('get_info'=>1) );