Jump to content
orama

Não aceitar caracteres especiais (^,*?#+)

Recommended Posts

orama

Boas venho aqui na esperança que alguem me possa ajudar já pesquizei em varios sites tentei adaptar alguns scripts mas nunca consegui solução.

Me falaram para ver alguns manuais (função preg_replace e preg_match  e expressões regulares) que não entendi, talvez facil para quem sabe o basico de php ou javascript o que infelizmente não é o meu caso.

Pretendo o seguinte:

Nesse codigo existe um campo onde o usuario tem que incerir um Username só que não pode permitir caracteres especiais como "@#$%¨&*()_+]}" etc...

Se o usuário inserir um caracter especial exibir uma mensagem "não é permitido caracteres especiais".

Segue o codigo onde quero implementar a validação:

<!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=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<html>
<br><br><br><br><br>
<?php
ini_set("display_errors", "OFF");
session_start();
include_once("modules/site-config.php");
include_once("modules/database-config.php");
include("funcoes.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title><?php echo $SITE["titulo"]." - ".$SITE['slogan']; ?></title> 
<script type="text/javascript" src="script.js"></script>
<link rel="stylesheet" href="css/style.css" type="text/css" />
<link rel="stylesheet" href="css/engine.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/estilos.css" type="text/css" media="screen" />
<link rel="stylesheet" href="style1.css" type="text/css" media="screen" />
<link rel="shortcut icon" href="imagens/favicon.gif" type="image/x-icon" />
<script src="js/blockppu.js" type="text/javascript"></script>
<script>
var RecaptchaOptions = {
theme : 'blackglass'
};
</script> 
<script src="Scripts/AC_ActiveX.js" type="text/javascript"></script>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<html>
<br>
<br><br><br><br><br><br><br><br><br><br><br><br>
<?php 

// created by HardStyle!!!
$ServerName='Lineage';
$ReardName="Goldbar";
$DelayTime=array(1=>43200,2=>43200,3=>43200,4=>(12*60*60));//in secons
$rewardamount=array(1=>0,2=>0,3=>0,4=>0);
$SiteUrl=array(1=>'http://www.gamesites200.com/lineage2/in.php?id=25444'
,2=>''
,3=>''
,4=>''
);
$SiteName=array(1=>'GameSites200'
,2=>''
,3=>''
,4=>''
);
$DBLoc='localhost';
$DBUser='root';
$DBPass='';
$DBName='line';



// dont change any of the text below if you don't know what you are doing
echo'<html><head><title>'.$ServerName.' Vote for reward System</title><body background="/votebg.gif"><br><br><Br>';
$Username="";
$SiteId = 0;
if(! empty($_POST['myusername']))
{
$Username = $_POST['myusername'];//character name DONT CHANGE THIS!
}
if(! empty($_POST['thesiteid']))
{
$SiteId =$_POST['thesiteid'];
}
//creating voting form
echo '<center><form name="form1" method="post" action="gamesites200.php">
<td width="294"><input name="myusername" type="text" value="'.$Username.'" id="myusername"></td>
<select name="thesiteid" id="thesiteid" onchange=\'javascript:document.form1.submit();\'>
<option value=0>Escolha o Site</option>';
for($i=1;$i<count($SiteName)+1;$i++)
{
if($SiteId==$i)
{
echo '<option value='.$i.' selected=true>'.$SiteName[$i].'</option>';
}else{
echo '<option value='.$i.' >'.$SiteName[$i].'</option>';}
}
echo '</select><td><input type="submit" name="Submit" value="Vote Agora!"></td></tr><center>';

//main executable block
try{
$Ip=getclientip();
$con = mysql_connect($DBLoc,$DBUser,$DBPass);
if (!$con){ die('Could not connect: ' . mysql_error());}
mysql_select_db($DBName, $con);
echo '<br/><center>'; 
if($Username)
{
if(exista($Username,"characters"))
{ 
if($SiteId > 0 && $SiteId <1+ count($SiteUrl))
{
if(toStamp($Ip,$SiteId)>$DelayTime[$SiteId])
{
if(existaIP($Ip))
{
if(existasite($SiteId,$Username))
{
updVote($Username,$rewardamount[$SiteId]);
updTime($Username,$Ip,$SiteId);
}
else{
updVote($Username,$rewardamount[$SiteId]);
insTime($Username,$SiteId,$Ip);
firstvoteonsite($ReardName,$rewardamount[$SiteId]);
} 
}
else
{
insVote($Username,$rewardamount[$SiteId]);
insTime($Username,$SiteId,$Ip);
firstvote($ServerName);
firstvoteonsite($ReardName,$rewardamount[$SiteId]);
}

echo "Your vote have been succesful!<br/>";
header('Location:'.$SiteUrl[$SiteId]);
}else
{
echo 'Voce ja votou para esse site.<br/>';
}
echo "voce precisa esperar ".showRemain($Ip,$SiteId,$DelayTime)." para votar novamente no ".$SiteName[$SiteId]."!<br />";

}
else
{
echo 'Please select a site !';
}
}
else
{
echo 'O Personagem "'.$Username.'" nao existe!';
}
}
else
{
echo 'Por Favor! Digite o Nick do seu char.<br/><br/>';
}
if($SiteId > 0 && $SiteId <1+ count($SiteUrl))
{
echo '<br><br><br><a href="'.$SiteUrl[$SiteId].'" >Vote sem ganhar itens.</a>';
}
echo '<center>';
mysql_close($con);
} 
catch (Exception $e) 
{
echo $e;
}
echo '</form></body></html>';
// created by HardStyle!!!
//functions
function exista($AUser,$Tabel)
{$exista1 = false;
$sql='SELECT char_name FROM '.$Tabel.' WHERE char_name like \''.$AUser.'\';';
$r = mysql_query($sql);
if(!$r) {
$err=mysql_error();
print $err;
exit();
}
if(mysql_affected_rows()>0){ $exista1=true;}
return (boolean) $exista1;
}
function existasite($Siteid,$AUser)
{$exista1 = false;
$sql='SELECT * FROM votesystemtime WHERE bannerid='.$Siteid.' and char_name like \''.$AUser.'\';';
$r = mysql_query($sql);
if(!$r) {
$err=mysql_error();
print $err;
exit();
}
if(mysql_affected_rows()>0){ $exista1=true;}
return (boolean) $exista1;
}
function existaip($Ip)
{
$exista1 = false;
$sql='SELECT * FROM votesystemtime WHERE lastip like \''.$Ip.'\';';
$r = mysql_query($sql);
if(!$r) {
$err=mysql_error();
print $err;
exit();
}
if(mysql_affected_rows()>0){ $exista1=true;}
return (boolean) $exista1;
}

function getVotes($AUser)
{if(exista($AUser,"votesystem"))
{$nrvot=0;
$sql='SELECT count FROM votesystem WHERE char_name=\''.$AUser.'\' ;';
$r = mysql_query($sql);

if(!$r) {
$err=mysql_error();
print $err;
exit();
}else{ $temp = mysql_fetch_row($r);
return (int) $temp[0];}
}
return (int) 0;

}

function insVote($AUser,$ammount)
{
mysql_query('INSERT INTO votesystem VALUES (\''.$AUser.'\','.(getVotes($AUser)+$ammount).');') ;
}
function updVote($AUser,$ammount)
{ 
mysql_query('update votesystem set count='.(getVotes($AUser)+$ammount).' where char_name like \''.$AUser.'\';');
}
function updTime($VotFor,$Ip,$forSiteId)
{ 
mysql_query('update votesystemtime set char_name=\''.$VotFor.'\',lasttime=(NOW()) where bannerid='.$forSiteId.' and lastip like \''.$Ip.'\' ;')or die(mysql_error()) ;
}
function insTime($Username,$SiteId,$Ip)
{
mysql_query('INSERT INTO votesystemtime VALUEs (\''. $Username.'\', NOW(), \''.$SiteId.'\',\''.$Ip.'\')') ;
}
function getTime($AUser,$Site)
{
if(existaip($AUser))
{
$nrvot=0;
$sql='SELECT lasttime FROM votesystemtime WHERE bannerid='.$Site.' and lastip like \''.$AUser.'\' ;';
$r = mysql_query($sql);
if(!$r) {
$err=mysql_error();
print $err;
exit();
}else{ $temp = mysql_fetch_row($r);
return $temp[0];}
}

}
function toStamp($Username,$SiteId)
{
$lasttime=getTime($Username,$SiteId);
return strtotime(date('Y-m-d H:i:s',time()))-strtotime($lasttime)+3600;
}
function showRemain($Username,$SiteId,$DelayTime)
{
$lasttime=getTime($Username,$SiteId);
$pasedtime=strtotime(date('Y-m-d H:i:s',time()))-strtotime($lasttime)+3600;
if($DelayTime[$SiteId]-$pasedtime>0)
{
return (date('H',$DelayTime[$SiteId]-$pasedtime)-1).date(":i:s",($DelayTime[$SiteId]-$pasedtime));
}
else 
{
return 0;
}//he can vote
}
function getclientip()
{
if ( isset($_SERVER["REMOTE_ADDR"]) ) { 
return $_SERVER["REMOTE_ADDR"]; 
} else if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ) { 
return $_SERVER["HTTP_X_FORWARDED_FOR"] ; 
} else if ( isset($_SERVER["HTTP_CLIENT_IP"]) ) { 
return $_SERVER["HTTP_CLIENT_IP"] ; 
}
return "0.0.0.0";
}
function firstvote($ServerName)
{echo '<div class=\'firstimevote\'><center>
It looks like it\'s your first time voting for '.$ServerName.' server! <br />
Thank You And HAVE FUN!</center>
</div>';
}

function firstvoteonsite($item,$count)
{echo '<div class="firstimevoteonsite"><center>
<p>This is your first vote on this site<br />
I will get '.$count.' '.$item.'(s)
for each time you vote on this site</p>
</center>
</div>';
}
// created by HardStyle!!!
?>
IMPORTANTE!!! Apos votar digite .reward no jogo e recebera sua recompensa
</body>

Não tenho conhecimento em programação, quem puder me ajudar por favor postar o código abaixo já implementado com a solução obrigado.

Share this post


Link to post
Share on other sites
KTachyon
if (preg_match('/^[a-zA-Z0-9]+/', $username) {
    echo 'Username OK!';
}
else {
    echo 'Username tem caracteres inválidos...';
}


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
orama

Obrigado pelas respostas

Tentei juntar o codigo do  KTachyon que seria perfeito só que no Dreamweaver aparece dois erros, tentei juntar no inicio no meio e no fim e aparece sempre erro nesse codigo na primeira e quarta linha.

Ou seija eu não sei onde juntar esse codigo no meu, por mais que tente não consigo.

Infelizmente não tenho conhecimento em programação.

KTachyon tu ou alguem por gentileza postem ai esse codigo implantado no meu codigo por favor.

Obrigado .

Share this post


Link to post
Share on other sites
KTachyon

Provavelmente porque me falta um parêntises no código (e um $ para garantir que é do início ao fim do nome de utilizador):

<?php if (preg_match("/^([a-zA-Z0-9]+)$/", $username)) {
    echo 'Utilizador OK!';
}
else {
    echo 'Username tem caracteres inválidos...';
}?>


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
orama

Éra isso mesmo agora não deu erro no Dreamweaver fico agradecido mas ainda tenho um problema.

Não sei onde adaptar exatamente esse codigo no meu porque fica sempre imprimida a mensagem ( Username tem caracteres inválidos...) onde essa mensagem só deve aparecer quando usuário tenta um caracter especial junto com o username.

Não querendo abusar da boa vontade já agora se for possivel dizer onde devo juntar os dois códigos para funcionar eu agradeço ou então se poderes postar ai já pronto melhor  :)

No meu caso talvez seija melhor ,mais uma vez OBRIGADO.

Share this post


Link to post
Share on other sites
KTachyon

Isso já depende do que quiseres fazer exactamente quando o utilizador tem ou não tem o username correcto, mas o código terá que estar depois de teres colocado o username na variável:

if(! empty($_POST['myusername']))
{
$Username = $_POST['myusername'];//character name DONT CHANGE THIS!
}

e, para além disso, sendo a tua variável $Username, tens que capitalizar também a variável que está no código que postei para ficar igual, senão são variáveis diferentes e não faz nada (ou, dá sempre que não tem um nome válido, porque o username tem que ter no mínimo um caracter).

Outra coisa, essa expressão regular que coloquei permite a um utilizador ter um username só com números, o que pode não ser exactamente o pretendido :)


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
orama

Boas

Eu não me expliquei bem, é o seguinte eu testei no  wamp para ver como fica no navegador de internet e quando vou ver a pagina em http://localhost/ logo que abre mesmo sem escrever nada no formulario  essa mensagem já la está ao lado do formulário ( Username tem caracteres inválidos...)

Metendo o codigo assim :

if(! empty($_POST['myusername']))
{

$Username = $_POST['myusername'];//character name DONT CHANGE THIS!
}

if (preg_match('/^[a-zA-Z0-9]+/', $username)) {
    echo 'Username OK!';
}
else {
    echo 'Username tem caracteres inválidos';
}

Fica assim :

imag.png

E o username pode ter letras e numeros e mais uma vez obrigado pela ajuda. :)

Share this post


Link to post
Share on other sites
ruimcosta

É assim:

if(! empty($_POST['myusername'])){

         $Username = mysql_real_escape-string( $_POST['myusername'] );//character name DONT CHANGE THIS!

         if (preg_match('/^[a-zA-Z0-9]+/', $username)) {
              echo 'Username OK!';
         }else {
              echo 'Username tem caracteres inválidos';
        }
}

Desta forma só validas os caracateres estranhos após a submissão do formulário


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
brunoais

É assim:

if(! empty($_POST['myusername'])){

         $username = mysql_real_escape_string( $_POST['myusername'] );//character name DONT CHANGE THIS!

         if (preg_match('/^[a-zA-Z0-9]+/', $username)) {
              echo 'Username OK!';
         }else {
              echo 'Username tem caracteres inválidos';
        }
}

Desta forma só validas os caracateres estranhos após a submissão do formulário

Pronto ^^ Corrigi os erros que tinhas no código por ti :)


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
KTachyon

Não esquecer o $ no fim das expressão regular, senão não valida como queres:

preg_match('/^[a-zA-Z0-9]+$/', $username)


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
ruimcosta

Pronto ^^ Corrigi os erros que tinhas no código por ti :D

Não percebi!


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
orama

Boas

Antes de mais quero agradecer a todos pelas respostas.

Mas agora acontece o seguinte o formulario entende os alfanuméricos como caracteres especiais, aparece sempre depois a mensagem (Username tem caracteres inválidos) andei a ver se resolvia a pesquizar e não consegui.

O codigo ficou como vocês me indicaram assim :

if(! empty($_POST['myusername'])){

$username = mysql_real_escape_string( $_POST['myusername'] );//character name DONT CHANG THIS!

if (preg_match('/^[a-zA-Z0-9]+/$', $Username)) {
            echo 'Username OK!';
       }else {
            echo 'Username tem caracteres inválidos';
      }  
   }

if(! empty($_POST['thesiteid']))
{
$SiteId =$_POST['thesiteid'];
}

Obrigado a todos por me aturarem fico então a espera de uma ajuda vossa abraços.

Share this post


Link to post
Share on other sites
KTachyon

if (preg_match('/^[a-zA-Z0-9]+/$', $Username)) {

Devia ser:

if (preg_match('/^[a-zA-Z0-9]+$/', $Username)) {


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
orama

Boas

Tudo o que ponho lá aparece a mensagem como caracter invalido.(exe : um simples A)

Se virem o codigo todo que postei no inicio tem lá todas as mensagens de (echo )

Mas incerindo lá esse codigo que me falaram aqui só aparece esta (Username tem caracteres inválidos).

Toda a ajuda é bem vinda e mais uma vez obrigado.

Share this post


Link to post
Share on other sites
orama

Boas

Obrigado pela dica Já corrigi a variavel de $username para $Username e continua a dar o mesmo erro .

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.