Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запуск скрипта на другом сервере
 
 автор: orsk   (27.10.2008 в 11:05)   письмо автору
 
 

Добрый день всем! Столкнулся с такой проблемой:
На одном сайте заполняется анкета, данные должны передаться на чужой сайт в php-скрипт, но пользователь должен остаться на том же сайте, где и заполнял анкету.

если прикреплять скрипт-обработчик через
require "http://www.sait.ru/zak.php"
- он запускается, но ему переменные не передаются.

Передавать переменные таким образом:
require "http://www.sait.ru/zak.php?d=1&h=15" не хочется, так как переменных много и много из них текстовых.

Не посоветуете как можно это сделать?

  Ответить  
 
 автор: Trianon   (27.10.2008 в 11:14)   письмо автору
 
   для: orsk   (27.10.2008 в 11:05)
 

Используйте CURL для формирования запроса к чужому серверу.

  Ответить  
 
 автор: orsk   (27.10.2008 в 11:16)   письмо автору
 
   для: Trianon   (27.10.2008 в 11:14)
 

извините, не в курсе, что такое CURL... спрошу у яндекса...
а проще ничего нет? чтоб не устанавливать всякие там библиотеки?

  Ответить  
 
 автор: Trianon   (27.10.2008 в 11:39)   письмо автору
 
   для: orsk   (27.10.2008 в 11:16)
 

http://ru.php.net/curl
Здесь установка по шагам.
http://softtime.ru/forum/read.php?id_forum=5&id_theme=35196


Можно работать через сокеты, но это сложнее, а не проще. И куда больше вероятность наляпать ошибок.

  Ответить  
 
 автор: orsk   (27.10.2008 в 12:01)   письмо автору
 
   для: Trianon   (27.10.2008 в 11:39)
 

ой, большое спасибо!

а то замучился уже :) понакачал библиотеки, а все равно не работает

  Ответить  
 
 автор: orsk   (27.10.2008 в 12:35)   письмо автору
 
   для: Trianon   (27.10.2008 в 11:14)
 

ну настрою я себе этот curl, этот скрипт будет использоваться на куче всевозможных серверах, им придется тоже настраивать этот curl?

  Ответить  
 
 автор: Trianon   (27.10.2008 в 12:57)   письмо автору
 
   для: orsk   (27.10.2008 в 12:35)
 

настраивать его не требуется. Требуется поставить, если не стоит.
Обычно он как раз таки стоит.

  Ответить  
 
 автор: orsk   (27.10.2008 в 13:56)   письмо автору
 
   для: Trianon   (27.10.2008 в 11:14)
 

не понял я как с помощью curl работать.
как мне с его помощью передать php-скрипту на чужой сервер все данные массива $_POST?

  Ответить  
 
 автор: orsk   (27.10.2008 в 14:01)   письмо автору
 
   для: Trianon   (27.10.2008 в 11:14)
 

т.е. не понятно что писать сюда:

curl_setopt($ch, CURLOPT_POSTFIELDS, "сюда");

  Ответить  
 
 автор: ddhvvn   (27.10.2008 в 14:06)   письмо автору
 
   для: orsk   (27.10.2008 в 14:01)
 

передаваемые данные!

curl_setopt($ch, CURLOPT_POSTFIELDS, "param1=value1&param2=value2...&paramN=valueN");

  Ответить  
 
 автор: orsk   (27.10.2008 в 14:10)   письмо автору
 
   для: ddhvvn   (27.10.2008 в 14:06)
 

хотел убежать от этого, а опять к этому вернулись....
тогда совсем не вижу смысла в этом curl.
таким образом параметры можно передать и так:
require "http://www.site.ru/zak.php?param1=value1&param2=value2...&paramN=valueN"

вся загвоздка в том, нельзя ли избежать перечисления этих параметров?

  Ответить  
 
 автор: orsk   (27.10.2008 в 14:24)   письмо автору
 
   для: orsk   (27.10.2008 в 14:10)
 

оказывается в строке:
curl_setopt($ch, CURLOPT_POSTFIELDS, "param1=value1&param2=value2...&paramN=valueN");


value1, value2 и др. могут быть текстовыми (на русском и с пробелами)!!!

Усем спасибо!

  Ответить  
 
 автор: ddhvvn   (27.10.2008 в 14:45)   письмо автору
 
   для: orsk   (27.10.2008 в 14:24)
 

>оказывается в строке:

>value1, value2 и др. могут быть текстовыми (на русском и с пробелами)!!!

и Вы, узнав это, так резко поменяли свое мнение? однако...

  Ответить  
 
 автор: orsk   (27.10.2008 в 14:53)   письмо автору
 
   для: ddhvvn   (27.10.2008 в 14:45)
 

просто думал что мне трудно придется с передачей текстовых переменных...

  Ответить  
 
 автор: Trianon   (27.10.2008 в 15:20)   письмо автору
 
   для: orsk   (27.10.2008 в 14:24)
 

>оказывается в строке:
>
curl_setopt($ch, CURLOPT_POSTFIELDS, "param1=value1&param2=value2...&paramN=valueN");

>value1, value2 и др. могут быть текстовыми (на русском и с пробелами)!!!

Не могут. Они точно также должны быть закодированы.

Существенная разница состоит в том, что таким образом Вы можете создать POST-запрос, а не только GET.

  Ответить  
 
 автор: ddhvvn   (27.10.2008 в 15:33)   письмо автору
 
   для: Trianon   (27.10.2008 в 15:20)
 

Ну я думаю, если человек нашел такую инфу, то знает о кодировании =)
Интересно только почему это его "обрадовало" ?..

  Ответить  
 
 автор: Trianon   (27.10.2008 в 16:13)   письмо автору
 
   для: ddhvvn   (27.10.2008 в 15:33)
 

>Ну я думаю, если человек нашел такую инфу, то знает о кодировании =)

Что-то знает. Чего-то не знает.

>Интересно только почему это его "обрадовало" ?..

Лень разбираться. Увидел, что работает, и решил что всё в порядке.

  Ответить  
 
 автор: ddhvvn   (27.10.2008 в 15:33)   письмо автору
 
   для: Trianon   (27.10.2008 в 15:20)
 

Ну я думаю, если человек нашел такую инфу, то знает о кодировании =)
Интересно только почему это его "обрадовало" ?..

... надоело!..

  Ответить  
 
 автор: orsk   (27.10.2008 в 15:58)   письмо автору
 
   для: Trianon   (27.10.2008 в 15:20)
 

значит кодируются автоматически!

я через цикл в строку записал все значения массива POST, прописал эту с троку

curl_setopt($ch, CURLOPT_POSTFIELDS, "здесь")

и у меня на другом сервере в скрипте был массив POST в котором всё было замечательно, не смотря на то, что есть переменные с большим русским текстом :)

  Ответить  
 
 автор: Trianon   (27.10.2008 в 16:11)   письмо автору
 
   для: orsk   (27.10.2008 в 15:58)
 

не кодируются они автоматически.
Вы просто криво оформили запрос, и Вам повезло ,что он прошел.
На первом же нетривиальном символе ( к примеру & ) встретившемся в тексте, Вас ждет удар поддых.

  Ответить  
 
 автор: orsk   (28.10.2008 в 10:11)   письмо автору
 
   для: Trianon   (27.10.2008 в 16:11)
 

естественно, что перед отправкой запроса, все символы в POST проверяются на различные нетривиальные символы, в том числе отдельно на & и =.
а как можно закодировать строчку? :) если чесно я в этом не особо в курсе... обычной строковой функцией... или целый скрипт писать надо... в общем тоже интересно.

Ещё раз спасибо!

  Ответить  
 
 автор: Trianon   (28.10.2008 в 10:26)   письмо автору
 
   для: orsk   (28.10.2008 в 10:11)
 

Символы не должны проверяться. Проверка может пройти , а может и не пройти.
Текст должен преобразовываться из одного языка в другой.
Присутствие в тексте любого символа, в т.ч. и & - это не повод к тому, чтобы запрещать такой текст.
см RFC 1738 и функцию rawurlencode()

  Ответить  
 
 автор: ddhvvn   (27.10.2008 в 14:44)   письмо автору
 
   для: orsk   (27.10.2008 в 14:10)
 

>таким образом параметры можно передать и так:
>require "http://www.site.ru/zak.php?param1=value1&param2=value2...&paramN=valueN"

нельзя!

во-первых, так вы не передадите, а влючите в текущий файл результат работы того скрипта.
хотя в принципе параметры то передадутся, но будет чушь.
а во-вторых, это будут не POST данные, а GET!

  Ответить  
 
 автор: orsk   (27.10.2008 в 14:58)   письмо автору
 
   для: ddhvvn   (27.10.2008 в 14:44)
 

curl тоже, можно сказать, включает в текущий файл результат работы того скрипта, разве не так?

единственное различие этого curl от require (учитывая 2 часа изучения работы с curl) это то, что в первом случае можно передать POST параметры, а во втором случае только GET. и всё!

с передачей файлов через curl не пробовал, может тут закопана собака :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования