Phpmailer does not recognize "-" character in the form input

Asked

Viewed 75 times

0

Hi good evening/morning/afternoon. I’m having a problem with a simple registration input. It just doesn’t recognize the "-" character. I made an email to test "[email protected]" only when you return with the message whether or not it was sent it says that the email was sent to "[email protected]". I have no idea what it is (HERE GOES THE CODE PART OF THE FORM

`

<tbody>
  <tr>
     <th height="27" align="left">
       Email:&nbsp;<font style="color:#FF0000;font-size:10px;">*</font>
     </th>
     <th align="left">
      Confirma email:&nbsp;<font style="color:#FF0000;font-size:10px;">*</font>
     </th>
  </tr>
  <tr>
     <td align="left">
        <input id="email" type="text" style="width:340px;" autocomplete="off" name="email"></input>
     </td>
     <td align="left">
        <input id="confirm_email" type="text" style="width:340px;" autocomplete="off" name="email2"></input>
     </td>
  </tr>
</tbody>

</table>`

and php:

<?php
/* 
*/
include('../_conf/conf.php'); 
$validacaocord = "check";
$ck_Config = mssql_fetch_array(mssql_query("SELECT * FROM ".DB_ACC.".dbo.SITE_CONFIG"));
if($ck_Config['Cadastrar'] == 0)
  { 
      include('../_erros/manutencao_sistema.php'); 
  }
if(anti_injection($_POST['checkregister']) != $validacaocord) 
    {
      include header('Location: ../index.php');
    }

else  
  { 
    if ($_POST['sbmtReg']) { 
    if($_GET['write'] == true)
        if(preg_match("/[^0-9a-zA-Z]/i", $_GET['write']))
        {
          include header('Location: ../index.php');
        }   

    function valid_email($str)
    {
        return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
    }   


        $userName     = anti_injection($_POST['userName']);
        $userPwd      = anti_injection($_POST['userPwd']);
        $userPwd2     = anti_injection($_POST['userPwd2']);
        $email        = anti_injection($_POST['email']);
        $email2       = anti_injection($_POST['email2']);
        $PergSecreta  = anti_injection($_POST['PergSecreta']);
        $RespPergun   = anti_injection($_POST['RespPergun']);
        $Hash         = md5(uniqid());
        $Chave        = anti_injection($_POST['Chave']);
        $Nome         = anti_injection($_POST['Nome']);
        $Cidade       = anti_injection($_POST['Cidade']);
        $Enquete      = anti_injection($_POST['Enquete']);
        $sexo         = anti_injection($_POST['sexo']);
        //TEMPJOGO// 0 
        $Apelido      = anti_injection($_POST['Apelido']);
        $cpf          = anti_injection($_POST['cpf']);  
        //Ativado// 0
        $Pais         = anti_injection($_POST['Pais']);
        $cep          = anti_injection($_POST['cep']);
        $tel     = anti_injection($_POST['tel']);
        $localizacao = anti_injection($_POST['localizacao']);
        $MyTermos = anti_injection($_POST['termoss']);



        //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::://
        $captcha      = anti_injection($_POST['captcha']);
        $captchafinal = anti_injection($_POST['captchafinal']);
        //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::://




        ///////////Restricao de Nomes login////////////
        $string = anti_injection($userName);
        $os = array("ADM", "Admin", "GM", "GameMaster", "origi", "machine1", "mania", "adminlixo", "adminnub", "gmlixo", "mamotinho", "mamotinho1", "jeffynho", "serverlixo", "gamenub", "servernub", "falido", "nexus", "sonny", "proxy", "gamemaxx", "estsoft", "cbgames", "pirata", "piratagames", "brutal", "thief"); 
        /////////////END Names/////////////////


        /////////////SISTEMA DE IMPEDI DOMINIO DE E-MAIL TEMPORARIO///////////////////////////
        $dominioT1 = substr ($email2, strpos ($email2, '@')+1); // Divisão de Dominio após¨ "@"
        ///////////Restricao de Nomes login////////////
        $RestDominio = array("boxtemp.com.br", "getairmail.com", "guerrillamail.com", "sharklasers.com", "mailinator.com", "trashymail.com", "dunflimblag.mailexpire.com", "trbvm.com", "meltmail.com", "mailnesia.com", "filzmail.com", "trashmail.com", "yopmail.com", "mailtemp.net", "ce.mintemail.com", "mt2014.com"); 
        /////////////THE END DE IMPEDI DOMINIO DE E-MAIL TEMPORARIO///////////////////////////


        $SQL_Q1 = mssql_query("SELECT 1 FROM ".DB_ACC.".dbo.cabal_auth_table WHERE ID ='". $userName ."';");
        $SQL1 = mssql_num_rows($SQL_Q1);
        $SQL_Q2 = mssql_query("SELECT 1 FROM ".DB_ACC.".dbo.cabal_auth_table WHERE Email='". $email ."';");
        $SQL2 = mssql_num_rows($SQL_Q2);
        $SQL_Q3 = mssql_query("SELECT 1 FROM ".DB_CCA.".dbo.CashAccount WHERE ID='". $userName ."';");
        $SQL3 = mssql_num_rows($SQL_Q3);



    if($SQL1 > 0) 
      $Error .= "<li>Login ".$userName." ja esta em uso.</li> ";

    if($SQL2 > 0) 
     $Error .= "<li>Email ".$email." ja esta em uso.</li> ";

    if($SQL3 > 0) 
    $Error .= "<li>Login ".$userName." esta registrado no banco de dados (Cash) por favor entre em contato com a administração.</li> ";

    if(valid_email($email)==FALSE)
       $Error .= "<li>  Email , formato invalido, exemplo [email protected]  </li>"; 

    if($email2 <> $email)//VERIFICAR SI E-MAIL CORRESPONDE AO MESMO RE-DIGITADO //
       $Error .= "<li>  E-Mail Nao Corresponde ao primeiro E-Mail Digitado Acima. <br> </li>";


    if(strlen($userName) < 4 || strlen($userName) > 15)
       $Error .= "<li>  Login requer minimo 4 e maximo 15 digitos </li>";                       
    if(preg_match("/[^0-9a-zA-Z]/i", $userName))
       $Error .= "<li>  Login , digite apenas letras ou numeros </li>";  

    if(strlen($userPwd) < 5 || strlen($userPwd) > 15)//Verificacao de Password //
       $Error .= "<li>  Senha requer minimo 5 e maximo 15 digitos </li>";                       
    if(preg_match("/[^0-9a-zA-Z]/i", $userPwd))
       $Error .= "<li>  Senha , digite apenas letras ou numeros </li>";  


    if($captcha != $captchafinal)//ERRO CALCULO CAPTACHE//
       $Error .= "<li> Os caracteres mostrados na imagem acima nao corresponde aos caracteres que voce digitou </li>"; 

    if (in_array($string, $os))//Restricao de Nomes de Usuario//
       $Error .= "<li>  Voce nao pode ultilizar a palavra ( $userName ) no Campo Login. </li>";   

    if (in_array($dominioT1, $RestDominio))//RESTRINGIR DOMINIO TEMPORARIO//
       $Error .= "<li> Desculpe esse é um E-Mail Temporario Não Permitimos, tente utilizar outro dominio de E-Mail. </li>"; 

    if($MyTermos != 1)
       $Error .= "<li>É Obrigatorio você aceite os termos de serviço</li>";

    if($userPwd2 <> $userPwd)// verificacao de pasword //
       $Error .= "<li>  Re-senha incorreta <br> </li>";
    if(strlen($userPwd2) < 5 || strlen($userPwd2) > 15)
       $Error .= "<li>  Re-senha requer minimo 5 e maximo 15 digitos </li>"; 

    if(strlen($Chave) < 4 || strlen($Chave) > 19)
       $Error .= "<li>  Palavra Chave requer minimo 4 e maximo 19 digitos </li>";   

    if(strlen($Nome) < 3 || strlen($Nome) > 15) //Verificacao de Quantidade de Caracteres Digitados no Campo "NOME"
       $Error .= "<li>  Nome requer minimo 4 e maximo 10 digitos </li>";    
    if(preg_match("/[^0-9a-zA-Z]/i", $Nome))
       $Error .= "<li>  Nome , digite apenas letras </li><br/><li>  Nome , Nao Use Espacos </li>";  

    if(preg_match("/[^a-zA-Z]/i", $Apelido))
       $Error .= "<li>  Apelido , digite apenas letras </li><br/><li>  Apelido , Nao Use Espacos </li>";

    if($Apelido == '')
       $Error .= "<li>  Campo Apelido não pode fica em branco. </li>";     

    if(strlen($Apelido) < 3 || strlen($Apelido) > 15) //Verificacao de Quantidade de Caracteres Digitados no Campo "Apelido"
       $Error .= "<li>  Apelido requer minimo 4 e maximo 14 digitos </li>"; 

    if(preg_match("/[^0-9a-zA-Z]/i", $RespPergun))
       $Error .= "<li>  Resposta Secreta , digite apenas letras </li><br/><li>  Resposta Secreta , Nao Use Espacos </li>";

    if(strlen($RespPergun) < 3 || strlen($RespPergun) > 16)
       $Error .= "<li>  O Campo Resposta Secreta Reque no Minimo 4 e no Maximo 15 Caracteres! </li>";      

    if(preg_match("/[^a-zA-Z]/i", $Cidade))
       $Error .= "<li>  Cidade , digite apenas letras </li><br/><li>  Apelido , Nao Use Espacos </li>"; 

    if($Cidade == '')
       $Error .= "<li>  Nao e possivel completo o cadastro com o Campo Cidade Em Branco! </li>";

    if($Sobrenome == $Nome) //Error Sobrenome Igual a Nome e um uma formar de valida o nome correto d apessoa caso tente coloca os 2 nome iguais//
       $Error .= "<li> Error no Campo ,Sobrenome. por favor nao tente nos enganar colocando nome e sobrenome iguais!</li>"; 

    if(preg_match("/[^0-9a-zA-Z]/i", $userName))
       $Error .= "<li>  Palavra Chave , digite apenas letras ou numeros </li>";                     

        if(empty($Error) == false)
            echo '<div class=\'checar\' style=\'text-align:left;\'>
                   <b><font style=\'color:#F30F06; font-size:14px;\'>Erros encontrados</font></b><br />
                    <ul>
                     <li>'.$Error.'</li>
                    </ul> 
                  </div>';
                        else

          { 

require("../smtp/class.phpmailer.php");

$mail = new PHPMailer();
$mail->SetLanguage("br", "smtp/"); //Idioma
$mail->IsSMTP();

$mail->SMTPAuth = true;
$mail->Host     =   MAIL_HOST;          //Host do servidor SMTP
$mail->Username =   MAIL_USER;          //Nome do usuario SMTP
$mail->Password =   MAIL_PASS;          //Senha do usuario SMTP
$mail->From     =   MAIL_FROM;          //Email de quem envia
$mail->FromName =   MAIL_NAME;          //nome de quem ta enviando, vai aparecer na coluna "De:"

//INICIO --- Quem vai receber-----------------------------------------------
$mail->AddAddress("$email");
//FIM --- Quem vai receber--------------------------------------------------

$mail->AddReplyTo(MAIL_FROM); //Quem ira receber a resposta (quando a pessoal responder)
$mail->IsHTML(true);
$mail->CharSet = 'UTF-8';

//Assunto
$mail->Subject = "A batalha vai começar...";
//Corpo da mensagem, pode usar tags html
$mail->Body ="";

if(!$mail->Send())
{
echo "A mensagem nao pode ser enviada. <p>";
echo "Erro do envio: " . $mail->ErrorInfo;

exit;
}         

           //FUNÇÃO SEPARAR DATA DE NASCIMENTO COM VIRGULA//
           $CreatDate = $CampoData;
           $Dat1 =  substr($CreatDate, 0, 2); // Dia
           $Dat2 = substr($CreatDate, 2,2);   // Mês
           $Dat3 = substr($CreatDate, 4, 4);  // Ano
           $DatFinal = "$Dat1-$Dat2-$Dat3"; 
           //END FUNÇÃO SEPARAR DATA DE NASCIMENTO COM VIRGULA//

            $ROOT = $_SERVER["REMOTE_ADDR"];
            $MEUIP = str_replace("." , "" , $ROOT ); // Primeiro tira os pontos 
            $confirm_code= md5 (uniqid(rand())).sha1($email.$userName);

            $hash = md5(date('[d-m-Y]'));
            mssql_query('exec '.DB_ACC.'.dbo.tool_registerAccount "'. $userName .'", "'. $userPwd .'", "'. $email .'", "'. $PergSecreta .'", "'. $RespPergun .'", "'. $Hash .'", "'. $Chave .'", "'. $Nome .'", "'. $Cidade .'", "'. $Enquete .'", "'. $sexo .'", 0, "'. $Apelido .'", 0, "'. $Pais .'", "'. $cep .'", "'. $tel .'", "'. $localizacao .'"');



            echo '<div class=\'ferror\'> <b><font style="color:#FFD20F;">CADASTRO CONCLUIDO:</font></b><br />
                       <ul>
                        <li><font color="#FFF"><b>Seu registro foi efetuado com sucesso!</b></font> </li>
                        <li><font color="#FFF"><b> E Obrigatorio voce Realizar a Ativacao de sua conta,</b></font></li>
                         <li><font color="#FFF"><b> Foi enviado um Email para <font color="FFFFFF">'.$email.'</font> com os dados e instrucoes</b></font></li>
                         <li><font color="#FFF"><b> Si a Mensagem nao estiver na Caixa de Entrada , Verifique sua Lixeira</b></font></li>
                       </ul>
                      </div>';
                      exit;
          }
    }
  }
        ?>
  • 1

    and PHP where it is, publish it

  • Yeah, without PHP it’s hard. Edit your question in more detail.

  • @Leocaracciolo :'(

  • @Branches I added, but could not add to a block of text :'(

  • if I were you would test without applying anti_injection

  • @Leocaracciolo sorry Leo, but which one of the "anti_injection" you’re talking about ?

  • email, that’s not the question of the question?

  • Your error is in the e-mail validation. Try your <input type="email" form.... > and remove this email validation from your PHP. I believe it will work. Just leave the html validating the email.

  • And to validate with message: <span class="assertive" ng-show="formCadastroUser.email. $invalid && formCadastroUser.email. $Dirty">Fill in the E-mail field.</span>

  • If you do not accept type="email", try to validate in the form itself: <input type="text" name="email" Pattern="[^ @]@[^ @]"> but I think the first option better...

Show 5 more comments

1 answer

0

Try on your form:

<input type="email" class="form_control" name="email" required />

And forget PHP validation.

Or:

<input type="text" name="email" pattern="[^ @]*@[^ @]*" required />

Validating in your HTML. And removes PHP validation.

An example of me is this, but I don’t know if it fits in yours, because it’s HTML5:

 <label class="item item-input item-floating-label">
                            <span class="input-label">E-mail</span>
                            <input type="email" class="form_control" ng-model="usuario.email" name="email" placeholder="E-Mail" ng-required="true" />
                            <span class="assertive" ng-show="formCadastroUser.email.$invalid && formCadastroUser.email.$dirty">Preencha o campo E-Mail.</span>
                        </label>
  • Solved your problem?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.