|
|
|
| Добрый день всем! Столкнулся с такой проблемой:
На одном сайте заполняется анкета, данные должны передаться на чужой сайт в php-скрипт, но пользователь должен остаться на том же сайте, где и заполнял анкету.
если прикреплять скрипт-обработчик через
require "http://www.sait.ru/zak.php"
- он запускается, но ему переменные не передаются.
Передавать переменные таким образом:
require "http://www.sait.ru/zak.php?d=1&h=15" не хочется, так как переменных много и много из них текстовых.
Не посоветуете как можно это сделать? | |
|
|
|
|
|
|
|
для: orsk
(27.10.2008 в 11:05)
| | Используйте CURL для формирования запроса к чужому серверу. | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2008 в 11:14)
| | извините, не в курсе, что такое CURL... спрошу у яндекса...
а проще ничего нет? чтоб не устанавливать всякие там библиотеки? | |
|
|
|
|
|
|
|
для: orsk
(27.10.2008 в 11:16)
| | http://ru.php.net/curl
Здесь установка по шагам.
http://softtime.ru/forum/read.php?id_forum=5&id_theme=35196
Можно работать через сокеты, но это сложнее, а не проще. И куда больше вероятность наляпать ошибок. | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2008 в 11:39)
| | ой, большое спасибо!
а то замучился уже :) понакачал библиотеки, а все равно не работает | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2008 в 11:14)
| | ну настрою я себе этот curl, этот скрипт будет использоваться на куче всевозможных серверах, им придется тоже настраивать этот curl? | |
|
|
|
|
|
|
|
для: orsk
(27.10.2008 в 12:35)
| | настраивать его не требуется. Требуется поставить, если не стоит.
Обычно он как раз таки стоит. | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2008 в 11:14)
| | не понял я как с помощью curl работать.
как мне с его помощью передать php-скрипту на чужой сервер все данные массива $_POST? | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2008 в 11:14)
| | т.е. не понятно что писать сюда:
curl_setopt($ch, CURLOPT_POSTFIELDS, "сюда"); | |
|
|
|
|
|
|
|
для: orsk
(27.10.2008 в 14:01)
| | передаваемые данные!
curl_setopt($ch, CURLOPT_POSTFIELDS, "param1=value1¶m2=value2...¶mN=valueN");
|
| |
|
|
|
|
|
|
|
для: ddhvvn
(27.10.2008 в 14:06)
| | хотел убежать от этого, а опять к этому вернулись....
тогда совсем не вижу смысла в этом curl.
таким образом параметры можно передать и так:
require "http://www.site.ru/zak.php?param1=value1¶m2=value2...¶mN=valueN"
вся загвоздка в том, нельзя ли избежать перечисления этих параметров? | |
|
|
|
|
|
|
|
для: orsk
(27.10.2008 в 14:10)
| | оказывается в строке:
curl_setopt($ch, CURLOPT_POSTFIELDS, "param1=value1¶m2=value2...¶mN=valueN");
|
value1, value2 и др. могут быть текстовыми (на русском и с пробелами)!!!
Усем спасибо! | |
|
|
|
|
|
|
|
для: orsk
(27.10.2008 в 14:24)
| | >оказывается в строке:
>value1, value2 и др. могут быть текстовыми (на русском и с пробелами)!!!
и Вы, узнав это, так резко поменяли свое мнение? однако... | |
|
|
|
|
|
|
|
для: ddhvvn
(27.10.2008 в 14:45)
| | просто думал что мне трудно придется с передачей текстовых переменных... | |
|
|
|
|
|
|
|
для: orsk
(27.10.2008 в 14:24)
| | >оказывается в строке:
>
curl_setopt($ch, CURLOPT_POSTFIELDS, "param1=value1¶m2=value2...¶mN=valueN");
|
>value1, value2 и др. могут быть текстовыми (на русском и с пробелами)!!!
Не могут. Они точно также должны быть закодированы.
Существенная разница состоит в том, что таким образом Вы можете создать POST-запрос, а не только GET. | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2008 в 15:20)
| | Ну я думаю, если человек нашел такую инфу, то знает о кодировании =)
Интересно только почему это его "обрадовало" ?.. | |
|
|
|
|
|
|
|
для: ddhvvn
(27.10.2008 в 15:33)
| | >Ну я думаю, если человек нашел такую инфу, то знает о кодировании =)
Что-то знает. Чего-то не знает.
>Интересно только почему это его "обрадовало" ?..
Лень разбираться. Увидел, что работает, и решил что всё в порядке. | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2008 в 15:20)
| | Ну я думаю, если человек нашел такую инфу, то знает о кодировании =)
Интересно только почему это его "обрадовало" ?..
... надоело!.. | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2008 в 15:20)
| | значит кодируются автоматически!
я через цикл в строку записал все значения массива POST, прописал эту с троку
curl_setopt($ch, CURLOPT_POSTFIELDS, "здесь")
и у меня на другом сервере в скрипте был массив POST в котором всё было замечательно, не смотря на то, что есть переменные с большим русским текстом :) | |
|
|
|
|
|
|
|
для: orsk
(27.10.2008 в 15:58)
| | не кодируются они автоматически.
Вы просто криво оформили запрос, и Вам повезло ,что он прошел.
На первом же нетривиальном символе ( к примеру & ) встретившемся в тексте, Вас ждет удар поддых. | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2008 в 16:11)
| | естественно, что перед отправкой запроса, все символы в POST проверяются на различные нетривиальные символы, в том числе отдельно на & и =.
а как можно закодировать строчку? :) если чесно я в этом не особо в курсе... обычной строковой функцией... или целый скрипт писать надо... в общем тоже интересно.
Ещё раз спасибо! | |
|
|
|
|
|
|
|
для: orsk
(28.10.2008 в 10:11)
| | Символы не должны проверяться. Проверка может пройти , а может и не пройти.
Текст должен преобразовываться из одного языка в другой.
Присутствие в тексте любого символа, в т.ч. и & - это не повод к тому, чтобы запрещать такой текст.
см RFC 1738 и функцию rawurlencode() | |
|
|
|
|
|
|
|
для: orsk
(27.10.2008 в 14:10)
| | >таким образом параметры можно передать и так:
>require "http://www.site.ru/zak.php?param1=value1¶m2=value2...¶mN=valueN"
нельзя!
во-первых, так вы не передадите, а влючите в текущий файл результат работы того скрипта.
хотя в принципе параметры то передадутся, но будет чушь.
а во-вторых, это будут не POST данные, а GET! | |
|
|
|
|
|
|
|
для: ddhvvn
(27.10.2008 в 14:44)
| | curl тоже, можно сказать, включает в текущий файл результат работы того скрипта, разве не так?
единственное различие этого curl от require (учитывая 2 часа изучения работы с curl) это то, что в первом случае можно передать POST параметры, а во втором случае только GET. и всё!
с передачей файлов через curl не пробовал, может тут закопана собака :) | |
|
|
|