Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com registro (resolvido)


myshdo

Pergunta

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

<?
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 por myshdo
Colocar códigos dentro da tag code
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

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() ) ")

Link para o comentário
Compartilhar em outros sites

  • 0

ok.

mais como voltar com erro quando membro tentar se registrar com espaços e caracteres especiais

tipo 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>&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</td></tr>

<tr><td colspan="2" align="left"><a href="main.php">já e registrado? &nbsp; 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>

Link para o comentário
Compartilhar em outros sites

  • 0

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';
}

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...