Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

halfar

passando variavel de javascript para php

Recommended Posts

como esta questão envolve javascript e php, então resolvi postar neste forum mesmo., porque o problema não esta no codigo js e sim no php.

 

Não sei o que ocorre. Tenho um codigo javascript para pegar o conteudo que foi digitado na pesquisa do google.

 

O codigo javascript funciona direitinho.

 

Quando vou passar o codigo js para php, é passado o conteudo normalmente tambem, até aqui nenhum problema.

 

O problema começa agora, quando vou gravar no banco de dados o conteudo da palavra chave, ao inves de gravar o conteudo, grava o codigo javascript. Veja o codigo todo abaixo.

 

O problema está na parte em negrito no codigo abaixo. Ocorre que ao inves de gravar o conteudo da palavra chave, grava o proprio codigo, ou seja grava <script>document.write(palavrachave)</script>

 

<script>
keyword = function(){
alert("teste");
var dr=document.referrer,q,fq,goo='';
//se veio de uma busca google/yahoo/etc retorna qual a keyword
if(dr.match(/ogle\.c|ahoo\.c|bing.c|usca.uol/i)){
 if((q=dr.indexOf('q='))>0){
  fq = dr.indexOf('&',q);
  goo = dr.substring(q+2,(fq>q?fq:dr.length));
 }
}
return goo;
}
var palavrachave = keyword();
alert(palavrachave);
</script>



<?php
$x
palavra_chave = "<script>document.write(palavrachave)</script>";

 

aqui retorno o conteudo da palavra chave corretamente

echo "palavra chave" . $palavra_chave;

 

mas quando o conteudo da variavel $palavra_chave é gravado no banco de dados, grava o codigo

<script>document.write(palavrachave)</script>
$data_insercao = date("Y") . "-" . date("m") . "-" . date("d");

$referer = strip_tags($_SERVER["HTTP_REFERER"]);
$aux = preg_replace("#http://#","",$referer);
$pieces = explode ("/",$aux);
$url = $pieces[0];



$sql="insert into visitas_internas " ."(";
$sql=$sql."data,";
$sql=$sql."url,";
$sql=$sql."palavra_chave";

$sql=$sql.") values (";
$sql=$sql."'". $data_insercao ."', ";
$sql=$sql."'". $url ."', ";
$sql=$sql."'". $palavra_chave ."'";


$sql=$sql.")";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está atribuindo este valor "<script>document.write(palavrachave)</script>" à "$palavra_chave" então é o que ele vai gravar mesmo.

Faça o seguinte, envie o conteúdo da "palavrachave" via query string, exemplo:

document.location.href = "index.php?palavrachave=" + palavrachave;

 

Ai no PHP você recebe ela com $_GET[ 'palavrachave' ] e grava no banco.

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois e, eu tambem entendi dessa forma como voce diz, pois afinal está tudo dentro de aspas. Mas este exemplo peguei na net, e para falar a verdade, uns dias atrás havia testado e pelo o que me lembro havia funcionado...

 

A sua sugestão creio que não serve, pois estou pegando a palavra chave proveniente do google, quando usuario faz uma pesquisa, então chega no meu site, então recupero a palavra chave que o usuario digitou no google.

 

complementando, na realidade funciona sim, se voce der um echo na variavel palavra_chave é exibido o conteudo da variavel corretamente. Mas quando jogo este conteudo no banco de dados, ai grava o codigo ("<script>document.write(palavrachave)</script>") ao inves do conteudo da variavel.

 

Coisa de doido isso...to achando que o mysql nao interpreta...sei la...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que acontece eh que o php é server side e o js client side.

isto funciona: palavra_chave = "<script>document.write(palavrachave)</script>";

pq eh a mesma coisa que tu escrever diretamente dentro do html...

se tu quer gravar um valor pego através do javascript ou você envia para outra pagina os dados ou usa ajax...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leonardo,

 

conforme voce disse

 

isto funciona: $palavra_chave = "<script>document.write(palavrachave)</script>";

 

 

Vamos supor que dentro de $palavra_chave tenha o conteudo BOM DIA.

 

se eu escrever o codigo echo $palavra_chave, tudo bem, ele funciona corretamente, irá aparecer na tela BOM DIA.

 

Agora veja só, dentro de $palavra_chave não contem BOM DIA?

 

Mas quando vou gravar no bd o conteudo de $palavra_chave, ai ao inves de gravar BOM DIA, ele grava <script>document.write(palavrachave)</script>"

 

É esse absurdo que nao etendo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu havia dito: PHP é server-side...

Você atribui esta string "<script>document.write(palavrachave)</script>" à $palavra_chave, ao contrário do que você queria atribuir que é "BOM DIA", pq "BOM DIA" é o conteúdo da variável javascript (client-side) e por isso aparece na tela, pq você esta imprimindo um script (<script>document.write(palavrachave)</script>)...

 

Deu para entender?

 

Por isso para resolver ou você posta para outra pagina via QueryString ou usa AJAX, para poder utilizar com o PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leonardo,

 

ah...entendi...é um tipo de logica de programação que parece mais uma "pegadinha..."

 

é que quando o php envia para o provedor, como dentro da variavel tem um codigo js, o provedor não interpreta o codigo js...

 

bem, enfim, é mais ou menos isto...

 

é a tal historia do server-side que voce disse...

 

obrigado...vou ver se encontro uma solução...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia galera a tempos venho procurando esse código, que pega a palavra digitada pelo usuário na busca do Google. Estou tentando pegar o código acima para fazer alguns testes mas não estou conseguindo se alguém puder me passar o código completo eu ficaria grato. :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso ai mesmo laugh.gif

 

Qualquer coisa, se estiver dentro dos meus conhecimentos tentarei ajudar. happy.gif

 

como esta questão envolve javascript e php, então resolvi postar neste forum mesmo., porque o problema não esta no codigo js e sim no php.

 

Não sei o que ocorre. Tenho um codigo javascript para pegar o conteudo que foi digitado na pesquisa do google.

 

O codigo javascript funciona direitinho.

 

Quando vou passar o codigo js para php, é passado o conteudo normalmente tambem, até aqui nenhum problema.

 

O problema começa agora, quando vou gravar no banco de dados o conteudo da palavra chave, ao inves de gravar o conteudo, grava o codigo javascript. Veja o codigo todo abaixo.

 

O problema está na parte em negrito no codigo abaixo. Ocorre que ao inves de gravar o conteudo da palavra chave, grava o proprio codigo, ou seja grava <script>document.write(palavrachave)</script>

 

<script>
keyword = function(){
alert("teste");
 var dr=document.referrer,q,fq,goo='';
 //se veio de uma busca google/yahoo/etc retorna qual a keyword
 if(dr.match(/ogle\.c|ahoo\.c|bing.c|usca.uol/i)){
  if((q=dr.indexOf('q='))>0){
   fq = dr.indexOf('&',q);
   goo = dr.substring(q+2,(fq>q?fq:dr.length));
  }
 }
 return goo;
}
var palavrachave = keyword();
alert(palavrachave);
</script>



<?php
$x
palavra_chave = "<script>document.write(palavrachave)</script>";
aqui retorno o conteudo da palavra chave corretamente

echo "palavra chave" . $palavra_chave;
mas quando o conteudo da variavel $palavra_chave é gravado no banco de dados, grava o codigo

<script>document.write(palavrachave)</script>
$data_insercao = date("Y") . "-" . date("m") . "-" . date("d");

$referer = strip_tags($_SERVER["HTTP_REFERER"]);
$aux = preg_replace("#http://#","",$referer);
$pieces = explode ("/",$aux);
$url = $pieces[0];



$sql="insert into visitas_internas " ."(";
$sql=$sql."data,";
$sql=$sql."url,";
$sql=$sql."palavra_chave";

$sql=$sql.") values (";
$sql=$sql."'". $data_insercao ."', ";
$sql=$sql."'". $url ."', ";
$sql=$sql."'". $palavra_chave ."'";


$sql=$sql.")";

Bom dia galera a tempos venho procurando esse código, que pega a palavra digitada pelo usuário na busca do Google. Estou tentando pegar o código acima para fazer alguns testes mas não estou conseguindo se alguém puder me passar o código completo eu ficaria grato. :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.