jpaulol Postado Junho 9, 2009 Denunciar Share Postado Junho 9, 2009 Bom eu estou usando QUERY STRING ou melhor tentano usar. Quando eu clico no link ele exibi :Fatal error: Call to undefined function int() in /home/hitbrasi/public_html/ouvinte.php on line 43 Meu codigo fonte e esse: <? include"cadastro/includes/pg_config.php"; $nome=(int($_GET['perfil'])); $sql = "SELECT * FROM $tabelaPerfil WHERE nome='$nome'"; $executar = mysql_query($sql); while ($exibir = mysql_fetch_array($executar)){; ?> <table width="596" border="0"> <tr> <td colspan="3"><span class="style8">Perfil Ouvinte<span class="style10">Hit</span></span></td> </tr> <tr> <td height="45" colspan="3"><span class="style16">- - - - - - - - - - - - - - - - - - - - - - - - - - - - - </span></td> </tr> <tr> <td width="275" rowspan="10"><span class="style5"><img border="0" src="cadastro/fotos/<?=$exibir['foto'];?>" width="236" height="201"></span></td> <td width="93"><span class="style17">Nome:</span></td> <td width="206"><span class="style5"><?=$exibir ['nome'];?></span></td> </tr> <tr> </tr> <tr> <td><span class="style17">Cidade:</span></td> <td><span class="style5"><?=$exibir ['cidade'];?></span></td> </tr> <tr> <td><span class="style17">Estado:</span></td> <td><span class="style5"><?=$exibir ['estado'];?></span></td> </tr> <tr> <td><span class="style17">MSN:</span></td> <td><span class="style5"><?=$exibir ['cep'];?></span></td> </tr> <?php } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fiote Postado Junho 9, 2009 Denunciar Share Postado Junho 9, 2009 Suponho que você não saiba ingles muito bem...Call to undefined function quer dizer que você está chamando uma função que não existe.No PHP não existe a função int(x).O que você está procurando é intval(x), ou até mesmo number_format(x,0), ou então round(x).Todas essas funções retornam o valor inteiro de um valor qualquer.Porém, se a sua intenção é converter o $_GET['perfil'] para int... Não precisa se preocupar. PHP é alto nível demais pra se preocupar com essas besteiras de tipo de varíavel, ROFL.xDDDMas.. olhando agora, porque você está tentando transformar o perfil pra int, sendo que na sua query você coloca ele entre aspas? Você está transformando ele de volta pra string denovo, lol.Resumindo, mude: $nome=(int($_GET['perfil'])); Para $nome = $_GET['perfil'];E seja feliz ^^ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 9, 2009 Denunciar Share Postado Junho 9, 2009 Ao meu ver o que ele quer é fazer um cast para garantir que o valor será numérico, nesse caso o correto é:$nome=(int)$_GET['perfil'];Se o $_GET['perfil'] não for numérico o nome terá valor zero. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fiote Postado Junho 9, 2009 Denunciar Share Postado Junho 9, 2009 E depois coloca entra aspas na query? lol acho que o problema não é esse...Mas caso seja, também existe a função is_numeric(x), que retorna true mesmo para strings numéricas (como "1234", entre aspas mesmo).Mas vamos esperar o OP responder ^^ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 9, 2009 Denunciar Share Postado Junho 9, 2009 E depois coloca entra aspas na query? lol acho que o problema não é esse...1 - Já ouviu falar de um negócio chamado sql injection? Se ele dá um cast no valor antes ele tem certeza do que vai chegar na query.2 - Não sei se você sabe, mas a função dos apóstrofes ali é só de delimitador, pois tudo que está entre mysql_query("TUDO QUE ESTÁ AQUI"), é jogado pro SGBD, e lá usado, logo, o teu raciocínio de que porque está entre apóstrofes vira string, não é válido, seria válido se fosse uma atribuição de valor a uma variável, coisa que não é.Mas caso seja, também existe a função is_numeric(x), que retorna true mesmo para strings numéricas (como "1234", entre aspas mesmo).Lembre-se que is_numeric vai retornar verdadeiro para valores numéricos, independentes de serem inteiros ou não, como ele deu um cast int, o correto seria usar ctype_digit, já que assim se testaria se é número e inteiro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jpaulol Postado Junho 9, 2009 Autor Denunciar Share Postado Junho 9, 2009 Eu q fui apreçado (aprendendo agora) e não notei q "in"t era valor numerico!! eu retorno e uma string não um valor numerico, usei o seguinte codigo do amigo fiote e deu certo:$nome = $_GET['perfil'];Mas não entendi a parte do sql injection se eu usar este comando eu sou alvo facil de injection ?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fiote Postado Junho 9, 2009 Denunciar Share Postado Junho 9, 2009 (editado) (em resposta ao ESerra)Eu quis dizer string no lado do sgdb.Se o campo Nome é inteiro, e você faz Nome = 'valor', você está usando uma string. O sgdb vai ter que converter essa string pra inteiro antes de poder comparar e relalizar a query. Apesar de isso normalmente não ser levado em conta em sites, afeta o desempenho da query. Se ele então já transformou a varíavel em int, é melhor não usar as aspas simples (não to falando das aspas duplas da query em si). E usar '' no where não vai evitar o inject. Editado Junho 9, 2009 por fiote Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anderson F R Postado Junho 9, 2009 Denunciar Share Postado Junho 9, 2009 pela lógica o sql injection teria que ser 100% numérico, algo impossível... na minha opnião é seguro usar (int) $varestou errado? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jpaulol Postado Junho 9, 2009 Autor Denunciar Share Postado Junho 9, 2009 Agora tem outro problema, porque quero fazer q quando a pessoa clicar sobre a foto para abir os dados da pessoa abra em pop up, usei o seguinte codigo:echo "<a href=\"java script:abrejanela('ouvinte.php?perfil=".$nome."','700','500')\"><img border='0' src='cadastro/fotos/$foto' width='129' height='130'/></a>";O pop up abre, mas o conteudo não e exibido porque? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 9, 2009 Denunciar Share Postado Junho 9, 2009 E usar '' no where não vai evitar o inject.Me mostra um exemplo prático de como injetar alguma coisa no seguinte:$dados = (int)$_POST['campo_do_form'];$sql = mysql_query("SELECT * FROM tabela WHERE coluna = '$dados'");Quanto ao resto, bom, só pelo teu conhecimento de sql injection, nem vou perder meu tempo... :rolleyes:Agora tem outro problema, porque quero fazer q quando a pessoa clicar sobre a foto para abir os dados da pessoa abra em pop up, usei o seguinte codigo:echo "<a href=\"java script:abrejanela('ouvinte.php?perfil=".$nome."','700','500')\"><img border='0' src='cadastro/fotos/$foto' width='129' height='130'/></a>";O pop up abre, mas o conteudo não e exibido porque?E o código do ouvinte.php? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jpaulol Postado Junho 9, 2009 Autor Denunciar Share Postado Junho 9, 2009 Ta ai o ouvinte.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Perfil OuvinteHIT</title> <style type="text/css"> <!-- body,td,th { color: #FFFFFF; } body { background-color: #000000; } a:link { color: #FFFFFF; } a:visited { color: #FFFFFF; } a:hover { color: #FFFFFF; } a:active { color: #FFFFFF; } .style5 {font-family: Arial, Helvetica, sans-serif} .style8 { font-family: tahoma; font-weight: bold; font-size: 24px; } .style10 {color: #006600} .style16 {font-size: 36px} .style17 {font-family: Arial, Helvetica, sans-serif; font-size: 11px; font-weight: bold; color: #006600; } --> </style></head> <body> <? include"cadastro/includes/pg_config.php"; //Lista os comentarios do banco de dados MYSQL $nome=$_GET['perfil']; $sql = "SELECT * FROM $tabelaPerfil WHERE nome='$nome'"; $executar = mysql_query($sql); while ($exibir = mysql_fetch_array($executar)){; ?> <table width="596" border="0"> <tr> <td colspan="3"><span class="style8">Perfil Ouvinte<span class="style10">Hit</span></span></td> </tr> <tr> <td height="45" colspan="3"><span class="style16">- - - - - - - - - - - - - - - - - - - - - - - - - - - - - </span></td> </tr> <tr> <td width="275" rowspan="10"><span class="style5"><img border="0" src="cadastro/fotos/<?=$exibir['foto'];?>" width="236" height="201"></span></td> <td width="93"><span class="style17">Nome:</span></td> <td width="206"><span class="style5"><?=$exibir ['nome'];?></span></td> </tr> <tr> </tr> <tr> <td><span class="style17">Cidade:</span></td> <td><span class="style5"><?=$exibir ['cidade'];?></span></td> </tr> <tr> <td><span class="style17">Estado:</span></td> <td><span class="style5"><?=$exibir ['estado'];?></span></td> </tr> <tr> <td><span class="style17">MSN:</span></td> <td><span class="style5"><?=$exibir ['cep'];?></span></td> </tr> <tr> <td><span class="style17">Orkut:</span></td> <td><span class="style5"></span></td> </tr> <tr> <td><span class="style5"></span></td> <td><span class="style5"></span></td> </tr> <tr> <td><span class="style5"></span></td> <td><span class="style5"></span></td> </tr> <tr> <td><span class="style5"></span></td> <td><span class="style5"></span></td> </tr> <tr> <td height="21"><span class="style5"></span></td> <td><span class="style5"></span></td> </tr> </table> <? } ?> </body> </html> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Junho 9, 2009 Denunciar Share Postado Junho 9, 2009 Dá um echo no nome para ver o que está retornando, se não estiver em branco use o mysql_num_rows para contar quantos registros estão vindo no $executar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jpaulol Postado Junho 10, 2009 Autor Denunciar Share Postado Junho 10, 2009 Opa consegui arrumar usando o seguinte codigo:<a href=\"ouvinte.php?perfil=$nome\" target=\"_blank\" onClick=\"window.open(this.href, this.target, 'width=700,height=500');return false;\"></a>Obrigado a todos pela ajuda! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jpaulol
Bom eu estou usando QUERY STRING ou melhor tentano usar. Quando eu clico no link ele exibi :
Meu codigo fonte e esse:Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.