Ir para conteúdo

POWERED BY:

Arquivado

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

Biel.

aceitar somente números na url, nada mais!

Recommended Posts

Boa tarde a todos. Direto ao ponto .Pessoal gostaria que na get/url aceitasse somente números, nada mais!
A função !is_numeric é para aceitar somente números na url.
!is_numeric barra todos os caracteres, menos # , talvés tenha até outro (s) que eu não conheço.

 

A regra abaixo anti sql na url é para impedir o colega de digitar qualquer coisa na url que não seja número.

O problema e o que também aceita jogo da velha # . Gostaria que aceitasse somente números, nada além de números.

 

1º EX

O problema é que esta regra antisql aceita jogo da velha # .... ou seja colocou # na url paraliza tudo e o colega pode comecar a trabalhar em cima disso.. Gostaria que aceitasse somente números, nada além de números.

if(!is_numeric($_GET['id'])){
header("Location: Nao_he_tão_seguro_quanto_parece_vai_tentando_que_um_dia_vc_quebra.php");
}

O problema é que esta regra antisql também aceita jogo da velha # .... ou seja colocou # na url paraliza tudo e o colega pode comecar a trabalhar em cima disso.. Gostaria que aceitasse somente números, nada além de números.

$id = (string)$_GET['id']; // <- se for digitado qualquer coisa na url que seja string, será comparado com a segunda linha ctype_digit

if(ctype_digit($id) === false){ // <- ctype_digit — Verifica se os caracteres são numéricos, se for ótimo o conteudo é exibido, se não for

header("Location: Nao_he_tão_seguro_quanto_parece_vai_tentando_que_um_dia_vc_quebra.php"); // <- é redirecionado para esta página
}

 

infelizmente esta regra também aceita jogo da velha #

3º Exemplo

$tete = ctype_digit($_GET['id']); // <- aceita somento número na get/url  
if($tete === false) {  // <-se o que sendo passado na get/url não for numero
header("Location: a_url_requisitada_nao_existe.php"); // <- é redirecionado para
}

Pessoal gostaria de criar um função que se o colega digitasse na url # e desse enter enter por exemplo ele fosse redirecionado ou o # fosse substituido por numero qualquer. gostaria que alguém complementasse a função abaixo para que a coisa funcione

$url = $_GET['id'];

$variavel = str_replace("#", "65236", $url); 	

if() {
	echo "aceita_somente_numeros_nada_mais.php";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

HTML básico. # é a marca da âncora, logo ele será aceito:

teste.php?id=4# -> $_GET['id'] retornará 4

teste.php?id=#4 -> $_GET['id'] retornará "nada"

Compartilhar este post


Link para o post
Compartilhar em outros sites
Pelo visto com php não tem como barrar o jogo da velha # de ser digitado na url.


E com javascript tem como fazer barrar o jogo da velha de ser digitado na url?


Tipo assim: O colega digitou na url # ou qualquer simbolo ou caracter estranho, o javascript vendo isso vai e remove automaticamente da url.


Importante: O site só vai funcionar se o javascript estiver habilitado.

Para isso acredito eu, o Javascript tem que ter ligação com banco de dados para que o site não funcione como javascript desabilitado


TEM COMO FAZER O QUE ESTOU DIZENDO PESSOAL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

is_numeric <= Verifica se é número, se você por o Sinal de exclamação, você passa a negar isso, ou seja, se não for número. Então retire a exclamação!

$_GET['id'] = "1245487";
if(is_numeric($_GET['id'])){
                echo "EBAAA SOU NUMERO => " . $_GET['id'];
}else{
                               echo "AAAAH, NAO SOU NUMERO => " .  $_GET['id'];
                }

VEJA SE ESSA FUNÇÃO ABAIXO RESOLVE SEU PROBLEMA?

$url = "HTTP://www.google.com.br/#1245878";


function verificar($url){
               
                               $exploder = @explode("#", $url);                         
                               $conta = count($exploder);                      
                               if($conta > 1) {
                                               return true;
                               }else{
                                                               return false;
                                               }                             

}

var_dump( verificar($url) );
 

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.