Forum Webscript.Ru
Программирование => PHP => Тема начата: Shelya от 30 Ноября 2001, 20:21:41
-
Вот наткнулся на проблемку, не знаю как ее поправильнее решить.
Конкретно надо из скрипта1 переслать данные скрипту2 (и запустить его), как будто на скрипт2 сделали submit какой-то формы. Знаю как это сделать через exec("curl ... Есть ли другие способы?
Да, и еще: как отослать на клиентскую машину файл, который генерируется на лету? То есть результатом выполнения скрипта является файл, который пользователь может сохранить на диске.
Заранее спасибо за ответы!
-
вызвать подобно методу GET
header("Location:call_me.php?value1=$data1&value2=$data2");
-
1)
Каким методом ты передаешь данные гет или пост?
Если гет - то элементарно делаешь ссылку типа
или например через header
Header("Location:http://www.blabla.com/script.php?param1=value1¶m2=value2");
Если пост - то используй сокеты:
$url = "www.blabla.com";
$path = "/script.php";
$query_1 = "param1=".urlenocde($value1)."¶m2=".urlencode($valu2);
$query = "POST $path HTTP/1.0\\r\\n".
"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\\r\\n".
"Referer: ".$referer."\\r\\n".
"Accept-Language: en\\r\\n".
"Content-Type: application/x-www-form-urlencoded\\r\\n".
"User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98;)\\r\\n".
"Host: ".$url."\\r\\n".
"Content-Length: ".strlen($query_1)."\\r\\n".
"Connection: Keep-Alive\\r\\n".
"\\r\\n".
"$query1[$i]\\r\\n";
$fp = fsockopen($url, 80/* или тот на котором висит сервер*/);
$puts = fputs($fp, $query);
fpassthru($fp);/*выдает что после этого запроса выдаст сервер*/
2)
Как я понял тебе нужно выдать окошко сохранения файла на клиентской машине, так? Если да то воть:
header("Content-Disposition: attachment; filename=$filename\\r\\n");
header("Content-Type: application/octet-stream\\r\\n");
header("Content-Type: application/force-download\\r\\n");
header("Content-Type: application/download\\r\\n");
header("Content-Transfer-Encoding: binary\\r\\n");
$fp = fopen(\'$filename\',\'r\');
fpassthru($fp);
fclose($fp);
-
Со вторым вопросом спасибо - все понятно.
А вот с первым объясню поподробнее. Мне не подходит метод с header, потому что мне надо из одного скрипта за одно выполнение вызвать много разных других скриптов. И при этом я не могу использовать кучу функций (ftp_connect, exec, system, passthru, openlog, socket_get_status, socket_set_blocking, socket_set_timeout, syslog, fsockopen, pfsockopen,accept_connect, bind, close, connect, lten, read, socket, strerror, write) - поэтому-то я и не могу сделать через exec, или fsockopen, как предложил DaBugi.
Так есть ли методы без использования этих функций?
-
Ну если у тебя еще и fopen(), file(), virtual() для удаленных ресурсов не работают и cURL не подключен то помоему никак