erison 63 Denunciar post Postado Outubro 30, 2012 estou dando um include da certo; include 'pasta/pagina.php'; ; mas estou precisando passar um post para ela ex: $cURL = curl_init('pasta/pagina.php'); $cURL = curl_setopt(CURLOPT_RETURNTRANSFER,true); curl_setopt(CURLOPT_POST,TRUE); curl_setopt(CURLOPT_POSTFIELDS,array('param'=>123)); $Result = curl_exec($cURL); curl_close($cURL); echo $Result; e da erro Warning: curl_setopt() expects exactly 3 parameters, 2 given in Compartilhar este post Link para o post Compartilhar em outros sites
David Santana Costa 8 Denunciar post Postado Outubro 30, 2012 Bom, não sei bem qual a sua dificuldade mas pelo que vi no seu código deu para deduzir. Vou lhe mostrar um pedaço de um código que eu uso. //==== INICIANDO E INFORMANDO A URL $curl = curl_init("XXX URL DO LUGAR XXX"); //==== CAMPOS $XXXCAMPOSXXX = "parametro1=12312¶metro2=123123"; //==== CONFIGURANDO O CURL curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, TRUE); curl_setopt($curl, CURLOPT_POSTFIELDS, $XXXCAMPOSXXX); $returno_final = curl_exec($$curl); echo $returno_final Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Outubro 30, 2012 Nas suas chamadas a curl_setopt, você esqueceu de informar o resource cURL que vai ter a opção alterada... você usa: curl_setopt(CURLOPT_POST,TRUE) você deve usar: curl_setopt($cURL, CURLOPT_POST, TRUE) Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Outubro 30, 2012 Rapaz tentei aqui e não deu certo não. Compartilhar este post Link para o post Compartilhar em outros sites
David Santana Costa 8 Denunciar post Postado Outubro 30, 2012 Tentou fazer da forma do que eu apresentei? Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Outubro 30, 2012 rapaz tentei aqui e não deu certo não. Mas continua dando o mesmo erro?? Compartilhar este post Link para o post Compartilhar em outros sites
David Santana Costa 8 Denunciar post Postado Outubro 30, 2012 Mas continua dando o mesmo erro?? fiz uns testes aqui e descobrir unas coisas interessantes: //==== INICIANDO E INFORMANDO A URL $curl = curl_init("XXX URL DO LUGAR XXX") Se você colocar uma url relativa percebi que não da certo, se você colocar por exemplo uma url tipo imasters.com.br vai funcionar, a questão tem haver com isso, coloca tipo assim agora define('SITEROOT', getcwd() . "/"); $g_url_cur = SITEROOT . "pasta/pagina.php"; $curl = curl_init($g_url_cur); [...] Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Peperaio 20 Denunciar post Postado Novembro 3, 2012 tente usar true em vez de TRUE Compartilhar este post Link para o post Compartilhar em outros sites
David Santana Costa 8 Denunciar post Postado Novembro 7, 2012 tente usar true em vez de TRUE acho que isso não tem nada haver... Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Novembro 7, 2012 O problema inicial, do número de argumentos informados já foi respondida pelo Evandro no post #3. Se ainda não funcionou, você deveria prestar mais informações para nós, informações estas obtidas com curl_error() Se você colocar uma url relativa percebi que não da certo, se você colocar por exemplo uma url tipo imasters.com.br vai funcionar, a questão tem haver com isso, coloca tipo assim agora Você conseguiu fazer funcionar acessando o arquivo local? Eu só consegui acessando na forma de URL: $ch = curl_init( 'http://localhost/benchmark.php' ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); $data = curl_exec( $ch ) or die( curl_error( $ch ) ); curl_close( $ch ); print $data; // Isso seria desnecessário se não tivéssemos o RETURNTRANFER o.O acho que isso não tem nada haver... Ainda não :rolleyes: Compartilhar este post Link para o post Compartilhar em outros sites
David Santana Costa 8 Denunciar post Postado Novembro 8, 2012 O problema inicial, do número de argumentos informados já foi respondida pelo Evandro no post #3. Se ainda não funcionou, você deveria prestar mais informações para nós, informações estas obtidas com curl_error() Você conseguiu fazer funcionar acessando o arquivo local? Eu só consegui acessando na forma de URL: $ch = curl_init( 'http://localhost/benchmark.php' ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); $data = curl_exec( $ch ) or die( curl_error( $ch ) ); curl_close( $ch ); print $data; // Isso seria desnecessário se não tivéssemos o RETURNTRANFER o.O Ainda não :rolleyes: não entendi muito bem o que você quis me dizer.. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Novembro 8, 2012 Perguntei se conseguiu fazer funcionar da forma que disse no post #7. Eu não consegui, aqui dizia que o wrapper file não existia ou havia sido desabilitado na libcurl. Como no Windows temos poucas opções de customização, talvez seja por isso. Compartilhar este post Link para o post Compartilhar em outros sites
David Santana Costa 8 Denunciar post Postado Novembro 8, 2012 Fiz uns testes aqui, realmente não funcionou, depois de fazer alguns teste cheguei a seguinte constatação: O Caso 1 funciona porque é colocando uma url com HTTP e por isso funciona. O Caso 2 não funciona mesmo o arquivo estando na mesma pasta. A solução é usar uma url absoluta do arquivo. Estou dizendo isso até que provem o contrário. $g_url_cur = "http://localhost/dir/teste2.php";//==== CASO 1 $g_url_cur = "teste2.php";//==== CASO 2 $curl = curl_init($g_url_cur); //==== CAMPOS $XXXCAMPOSXXX = "parametro1=12312¶metro2=123123"; //==== CONFIGURANDO O CURL curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, TRUE); curl_setopt($curl, CURLOPT_POSTFIELDS, $XXXCAMPOSXXX); $returno_final = curl_exec($curl); echo curl_error($curl); echo $returno_final Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Novembro 8, 2012 Queridos, há dois erros na implementação: 1. Estão pecando em não passar o protocolo // Aqui, assumimos que "teste2.php" esteja em "getcwd()", // ou seja, o diretório atual. $handler = curl_init('file://teste2.php'); echo curl_exec($handler); 2. O segundo erro, é esperar que um arquivo php processe os parâmetros por si só cURL vai fazer ago similar a você abrir o arquivo/caminho no seu editor (bloco de notas, textmate, sublime, etc) O que acontece se você abrir teste2.php no editor??? R. Vai aparecer o código fonte. O que acontece se você abrir teste2.php?parametro1=12312¶metro2=123123 no seu editor???? R. Se você conseguir, vai aparecer o código fonte. Como eu tenho certeza ABSOLUTA que não é isso que você deseja, vou propor a solução: 1º passo: Encontre o caminho executável do interpretador PHP Dependendo da forma de instalação, é possível que ele já esteja no seu PATH. Abra um interpretador de comandos (terminal, prompt do DOS, powershell) e simplesmente digite php -v Seguido de <ENTER> Caso você veja informações sobre a versão do PHP, a coisa fica mais fácil. Se a saída for um erro, será necessário localizá-lo. Crie um arquivo .php com o seguinte conteúdo: <?php echo PHP_BINDIR; Abra o arquivo no navegador. Neste caminho haverá um arquivo php ou php-cli.exe. Este é o caminho do executável. 2º No arquivo que usa o cURL, trocaremos por popen. ficaria assim: <?php $resource = popen('php teste2.php parametro1 parametro2', 'r') or die('Não foi possível executar o arquivo'); while(!feof($resource)) { echo fgets($resource); } fclose($resource); Algumas modificações deverão ser feitas em teste2. 1. Não haverão as variáveis de servidor $_SERVER, $_REQUEST 2. Não haverão as variáveis de método $_GET, $_POST 3. Para pegar os parâmetros, é necessário usar a variável $argv Exemplo funcional: 2 arquivos: index.php e teste.php index.php será acessada pelo navegador e acessará output.php index.php <!DOCTYPE html> <html lang="pt-BR"> <head> <title>Exemplo</title> <meta charset="utf-8"> </head> <body> <?php if (array_key_exists('nome', $_POST)) { try { $exec = sprintf('%s/php', PHP_BINDIR); if (!file_exists($exec)) { $exec .= '-cli.exe'; } if (!is_executable($exec)) { throw new RuntimeException('Executável PHP não encontrado.'); } $handler = popen("{$exec} teste.php {$_POST['nome']}", 'r'); if (!$handler) { throw new UnexpectedValueException('Impossível executar!'); } echo sprintf("<p>%s</p>", fgets($handler)); fclose($handler); } catch (Exception $e) { echo sprintf(' <p style="background: #f66; color: #f00; font-weight: bold">%s</p>', $e->getMessage() ); } } ?> <form action="" method="post"> <fieldset> <legend>Teste</legend> <p> <label for="nome"> <span>Digite seu nome:</span> <input id="nome" type="text" name="nome" required="required"> </label> </p> <p> <button>Executar!</button> </p> </fieldset> </form> </body> </html> teste.php <?php echo sprintf('Olá, %s!', ucfirst($argv[1])); Compartilhar este post Link para o post Compartilhar em outros sites