myshdo Postado Fevereiro 15, 2009 Denunciar Share Postado Fevereiro 15, 2009 (editado) eu estou com pequeno problema com registro de novos membros no meu sitesó que eu não intendo de php então não conseguir resolverquando utiliza espaços,ou acentos e caracteres especias ,quando vai fazer login não funcionacomo proibir usar espacos,acentos,e caracteres especias para não ter esse problema?aqui esta o script<? include("includes/session.php"); class Process { function Process(){ global $session; if(isset($_POST['sublogin'])){ $this->procLogin(); } else if(isset($_POST['subjoin'])){ $this->procRegister(); } else if(isset($_POST['subforgot'])){ $this->procForgotPass(); } else if(isset($_POST['subedit'])){ $this->procEditAccount(); } else if($session->logged_in){ $this->procLogout(); } else{ header("Location: main.php"); } } function procLogin(){ global $session, $form; $retval = $session->login($_POST['user'], $_POST['pass'], isset($_POST['remember'])); if($retval){ header("Location: ".$session->referrer); } else{ $_SESSION['value_array'] = $_POST; $_SESSION['error_array'] = $form->getErrorArray(); header("Location: ".$session->referrer); } } function procLogout(){ global $session; $retval = $session->logout(); header("Location: main.php"); } function procRegister(){ global $session, $form, $mailer; // if(ALL_LOWERCASE){ $_POST['user'] = strtolower($_POST['user']); // } // $retval = $session->register($_POST['user'], $_POST['pass'], $_POST['email']); $result = mysql_query("SELECT COUNT(*) FROM users WHERE username = '".$_POST['user']."'") or die(mysql_error()); $row = mysql_fetch_array( $result ); if($row[0]==0){ $retval=0; }else{ $retval=2; } //if(!isset($_POST['user'])||!isset($_POST['pass'])||!isset($_POST['email'])){ // $retval=1; // } else if(strlen($_POST[user])<3){ $retval=3; } if(strlen($_POST[pass])<6){ $retval=4; } if($retval==0){ mysql_query("INSERT INTO users (`username`,`password`,`userid`,`userlevel`,`email`,`timestamp`) VALUES('".$_POST['user']."', '".md5($_POST['pass'])."','".md5($_POST['user'])."','1','".$_POST['email']."',NOW() ) ") or die(mysql_error()); } if($retval == 0){ $_SESSION['reguname'] = $_POST['user']; $_SESSION['regsuccess'] = true; $mailer->sendWelcome($_POST['user'],$_POST['email'],$_POST['pass']); header("Location: ".$session->referrer); } else if($retval == 1){ $_SESSION['value_array'] = $_POST; $_SESSION['error_array'] = "Por favor preencha todos os dados."; header("Location: ".$session->referrer); } else if($retval == 2){ $_SESSION['reguname'] = $_POST['user']; $_SESSION['regsuccess'] = false; header("Location: ".$session->referrer); } else if($retval == 3){ $_SESSION['reguname'] = $_POST['user']; // $_SESSION['regsuccess'] = false; header("Location: ".$session->referrer."?error=Error: Porfavor verifique se a senha possui 6 caracteres ou mais ."); } else if($retval == 4){ $_SESSION['reguname'] = $_POST['user']; // $_SESSION['regsuccess'] = false; header("Location: ".$session->referrer."?error=Error: Porfavor verifique se a senha é 6 caracteres ou mais ."); } } function procForgotPass(){ global $database, $session, $mailer, $form; $subuser = $_POST['user']; $field = "user"; //Use field name for username if(!$subuser || strlen($subuser = trim($subuser)) == 0){ $form->setError($field, "* Username not entered<br>"); } else{ $subuser = stripslashes($subuser); if(strlen($subuser) < 3 || strlen($subuser) > 30 || !eregi("^([0-9a-z_-])+$", $subuser) || (!$database->usernameTaken($subuser))){ $form->setError($field, "* Username não existet<br>"); } } $usrinf = $database->getUserInfo($subuser); $email = $usrinf['email']; if($_POST['email']!=$email){ $form->setError('email', "* E-mail não corresponde<br>"); } if($form->num_errors > 0){ $_SESSION['value_array'] = $_POST; $_SESSION['error_array'] = $form->getErrorArray(); } else{ $newpass = $session->generateRandStr(8); if($mailer->sendNewPass($subuser,$email,$newpass)){ $database->updateUserField($subuser, "password", md5($newpass)); $_SESSION['forgotpass'] = true; } else{ $_SESSION['forgotpass'] = false; } } header("Location: ".$session->referrer); } function procEditAccount(){ global $session, $form; $retval = $session->editAccount($_POST['curpass'], $_POST['newpass'], $_POST['email']); if($retval){ $_SESSION['useredit'] = true; header("Location: ".$session->referrer); } else{ $_SESSION['value_array'] = $_POST; $_SESSION['error_array'] = $form->getErrorArray(); header("Location: ".$session->referrer); } } }; $process = new Process; ?> Editado Fevereiro 23, 2009 por myshdo Colocar códigos dentro da tag code Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Norivan Oliveira Postado Fevereiro 15, 2009 Denunciar Share Postado Fevereiro 15, 2009 Você tem que tratar os dados antes de jogar eles na instrução SQL, o problema está aqui:mysql_query("INSERT INTO users (`username`,`password`,`userid`,`userlevel`,`email`,`timestamp`) VALUES('".$_POST['user']."', '".md5($_POST['pass'])."','".md5($_POST['user'])."','1','".$_POST['email']."',NOW() ) ") Capture $_POST['user'] e trate ela com uma função para remover caracteres indesejáveis: function RemoverAcentos($Str) { $Regra = array( ''/[ÂÀÁÄÃ]/''=>''A'', ''/[âãàáä]/''=>''a'', ''/[ÊÈÉË]/''=>''E'', ''/[êèéë]/''=>''e'', ''/[ÎÍÌÏ]/''=>''I'', ''/[îíìï]/''=>''i'', ''/[ÔÕÒÓÖ]/''=>''O'', ''/[ôõòóö]/''=>''o'', ''/[ÛÙÚÜ]/''=>''U'', ''/[ûúùü]/''=>''u'', ''/ç/''=>''c'', ''/Ç/''=> ''C''); return preg_replace(array_keys($Regra), array_values($Regra), $Str); } mysql_query("INSERT INTO users (`username`,`password`,`userid`,`userlevel`,`email`,`timestamp`) VALUES('".RemoverAcentos($_POST['user'])."', '".md5($_POST['pass'])."','".md5($_POST['user'])."','1','".$_POST['email']."',NOW() ) ") Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 myshdo Postado Fevereiro 20, 2009 Autor Denunciar Share Postado Fevereiro 20, 2009 ok.mais como voltar com erro quando membro tentar se registrar com espaços e caracteres especiaistipo alert ?obrigado <? include("includes/session.php"); include("templates/header.php"); include("templates/header_sub.php"); ?> <table width="725" border="0" align="center"> <tr> <td> <? if($session->logged_in){ echo "<h1>Registrado</h1>"; echo "<p>Desculpe <b>$session->username</b>, Mais voce já e registrado. " ."<a href=\"$web_path\">voltar para pagina principal</a>.</p>"; } elseif(isset($_SESSION['regsuccess'])){ /* Registration was successful */ if($_SESSION['regsuccess']){ echo "<h3>Registrado(a)!</h3>"; echo "<p>Obrigado! <b>".$_SESSION['reguname']."</b>, suas informacoes foram adicionadas a nossa base de dados, " ."voce agora poderá acessar sua conta<a href=\"".$web_path."main.php\"> <b>aqui<br></a></p>"; } /* Registration failed */ else{ echo "<h3>falha no registro</h3>"; echo "<p>desculpa mais um erro ocorreu e seu registro para nome <b>".$_SESSION['reguname']."</b>, " ."não pode ser completa tente outro por favor .<br>Voce ira ser direcionado(a) para pagina de regitro em alguns segundos.</p><br>"; echo "<script language=javascript> setTimeout(\"location.href='register.php'\", 5000); </script>"; } unset($_SESSION['regsuccess']); unset($_SESSION['reguname']); } else{ ?> <table align="center" border="0" width="728"> <tr> <td valign="top"><p><br> </td> </tr> <tr><td> </td></tr> <td valign="top"> <?if($_GET['error']!="") { echo "<div class=\"little-box\">$_GET[error]</div>"; } ?> </td> </tr> <td valign="top"> <form name="Register" action="<?=$web_path;?>process.php" method="POST" onSubmit="return ValidateForm()"> <table align="left" border="0" cellspacing="0" cellpadding="3"> <tr><td colspan="2"> </td></tr> <? if($form->num_errors > 0){ echo "<tr><td colspan=\"2\"><font size=\"1\" color=\"#ff0000\">".$form->num_errors." error(s) encontrado</td></tr>"; } ?> <? if($_GET['message'] !=""){ echo "<tr><td colspan=\"2\"><font size=\"1\" color=\"#ff0000\">".$_GET['message']."</td></tr>"; } ?> <tr><td colspan="1"> </td></tr> <tr><td>Username:</td><td><input type="text" name="user" maxlength="30" value="<? echo $form->value("user"); ?>"></td><td><? echo $form->error("nome"); ?></td></tr> <tr><td>Senha:</td><td><input type="password" name="pass" maxlength="30" value="<? echo $form->value("pass"); ?>"></td><td><? echo $form->error("senha"); ?></td></tr> <tr><td>Email:</td><td><input type="text" name="email" maxlength="50" value="<? echo $form->value("email"); ?>"></td><td><? echo $form->error("email"); ?></td></tr> <tr><td colspan="2" align="right"> <input type="hidden" name="subjoin" value="1"> <input type="submit" value="Registre-se!"></td></tr> <tr><td colspan="2"> </td></tr> <tr><td colspan="2" align="left"><a href="main.php">já e registrado? Click aqui para fazer login!</a></td></tr> </table> </form> </td><td width="310" align="center" valign="top"> <?=$ads['box_ad'];?></td></tr></table> <? } ?> </td> </tr> </table> </td> </tr> </table> <?php include("templates/footer.php");?> </body> </html> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Fevereiro 20, 2009 Denunciar Share Postado Fevereiro 20, 2009 Basta alterar um pouco a função e usar if/else para verificar:function RemoverAcentos($Str) { $Regra = array( '/[ÂÀÁÄÃ]/'=>'A', '/[âãàáä]/'=>'a', '/[ÊÈÉË]/'=>'E', '/[êèéë]/'=>'e', '/[ÎÍÌÏ]/'=>'I', '/[îíìï]/'=>'i', '/[ÔÕÒÓÖ]/'=>'O', '/[ôõòóö]/'=>'o', '/[ÛÙÚÜ]/'=>'U', '/[ûúùü]/'=>'u', '/ç/'=>'c', '/Ç/'=> 'C'); $Str_novo = preg_replace(array_keys($Regra), array_values($Regra), $Str); if($Str_novo != $Str){ return $Str_novo; }else{ return false; } } if(RemoverAcentos('é isso ai alemão')){ echo" <script language=\"JavaScript\"> alert('Erro!'); </script> "; } echo '<hr>'; if(RemoverAcentos('e isso ai alemao')){ echo 'Tem erro!'; }else{ echo 'ok, passou no teste'; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
myshdo
eu estou com pequeno problema com registro de novos membros no meu site
só que eu não intendo de php então não conseguir resolver
quando utiliza espaços,ou acentos e caracteres especias ,quando vai fazer login não funciona
como proibir usar espacos,acentos,e caracteres especias para não ter esse problema?
aqui esta o script
Editado por myshdoColocar códigos dentro da tag code
Link para o comentário
Compartilhar em outros sites
3 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.