1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Sistema de Login

Discussão em 'Web Development' iniciada por cryteck, 13 de Março de 2009. (Respostas: 7; Visualizações: 1576)

  1. cryteck

    cryteck Power Member

    Boas.

    Eu estou a tentar fazer um sistema de login em php, mas tou com problemas na validação do mail, pois só verifica se contem o @.

    registo.php
    Código:
     
    <?php
    include("config.php");
     
    if (isset($_POST['login'])){
     
    //pega a sessão id do usuario
    session_start();
    $sessao = session_id();
    $login = $_POST['login'];
    $senha = $_POST['senha'];
    $email = $_POST['email'];
     
    $sql_busca = "SELECT * FROM user WHERE login = '$login'";
    $exe_busca = mysql_query($sql_busca) or die (mysql_error());
    $num_busca = mysql_num_rows($exe_busca);
     
    $sql_busca2 = "SELECT * FROM user WHERE email = '$email'";
    $exe_busca2 = mysql_query($sql_busca2) or die (mysql_error());
    $num_busca2 = mysql_num_rows($exe_busca2);
     
    //Verifica se os campos estão preenchidos
    if ($_POST['login'] == "" || $_POST['senha'] == "" || $_POST['senha2'] == "" || $_POST['email'] == ""){
    $ac[] = "Por favor preencha todos os campos corretamente.";
    }
    //Verifica se ja existe o login
    if ($num_busca > 0){
    $ac[] = "Esse login já esta sendo usado por outro utilizador.";
    }
    //Verifica se ja existe o e-mail
    if ($num_busca2 > 0){
    $ac[] = "Esse e-mail já esta sendo usado por outro utilizador.";
    }
    //Verifica se o e-mail está correto
    if (!ereg("@.", $_POST['email'])){
    $ac[] = "E-mail invalido.";
    }
    //Verifica se as duas senha são diferente
    if ($_POST['senha'] != $_POST['senha2']){
    $ac[] = "Verifique se as duas senhas estão corretas.";
    }
    //Verifica se todas estão corretas
    if (!isset($ac)){
    //Inclui o registo na BD
    $sql_inclu = "INSERT INTO user(login, senha, email, sessao) VALUES
    ('$login', '$senha', '$email', '$sessao')";
    $exe_inclu = mysql_query($sql_inclu) or die (mysql_error());
     
    $topico = "Registo $nome_site";
    $mensagem = "<html>";
    $mensagem .= "<body>";
    $mensagem .= "Olá $login\r\n";
    $mensagem .= "<br>Você efetuou registo no $nome_site.</br>";
    $mensagem .= "<br>Login: $login";
    $mensagem .= "<br>Senha: $senha";
    $mensagem .= "<br>Activar conta <a href='$site/active.php?ac=$sessao'>$site/active.php?ac=$sessao</a></br>";
    $mensagem .= "</body>";
    $mensagem .= "</html>";
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= "From: $nome_site <$email>\r\n";
    $ac[] = "Registo efetuado com sucesso, verifique seu e-mail para activar a conta.";
    //enviar para o email o login, senha e o codigo de activação
    mail($email, $topico, $mensagem, $headers);
    }
    }
    ?>
    <!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=iso-8859-1" />
    <title>Registo</title>
    <style type="text/css">
    <!--
    .Style2 {font-size: 13px}
    -->
    </style>
    </head>
     
    <body>
    <?php
    if (isset($ac)){
    for($i=0;$i<count($ac);$i++){
    echo "<li>".$ac[$i];
    }
    }
    ?>
    <form id="form1" name="form1" method="post" action="<? $_SERVER['PHP_SELF']?>">
    <table width="100%" border="0">
    <tr>
    <td colspan="2"><div align="center"><strong>Cadastro</strong></div></td>
    </tr>
    <tr>
    <td width="13%"><span class="Style2">Login:</span></td>
    <td width="87%"><span class="Style2">
    <label>
    <input name="login" type="text" id="login" />
    </label>
    </span></td>
    </tr>
    <tr>
    <td><span class="Style2">Senha:</span></td>
    <td><span class="Style2">
    <label>
    <input name="senha" type="password" id="senha" />
    </label>
    </span></td>
    </tr>
    <tr>
    <td><span class="Style2">Repetir senha: </span></td>
    <td><span class="Style2">
    <label>
    <input name="senha2" type="password" id="senha2" />
    </label>
    </span></td>
    </tr>
    <tr>
    <td><span class="Style2">E-mail:</span></td>
    <td><span class="Style2">
    <label>
    <input name="email" type="text" id="email" />
    </label>
    </span></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><span class="Style2">
    <label>
    <input type="submit" name="Submit" value="Enviar" />
    </label>
    </span></td>
    </tr>
    </table>
    <p>&nbsp;</p>
    </form>
    </body>
    </html>
    

    Eu tava a tentar por esta expressão regular
    Código:
    if (!ereg("^[0-9a-z]([-_.]?[0-9a-z])@[0-9a-z]([-.]?[0-9a-z]).[a-z]{2,4}$."
    mas agora dá-me sempre mail inválido.
    Ajudem-me se faz favor a por isto correcto.


    Obrigado:007:
     
    Última edição pelo moderador: 14 de Março de 2009
  2. Baderous

    Baderous Banido

    Se queres validar o email inserido, através do PHP, podes usar filtros, nomeadamente, o FILTER_VALIDATE_EMAIL. Se usares JS, podes usar esta função:
    Código:
    function isEmail(str) {
        var regex = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
        return regex.test(str);
    }
     
  3. em c++ é mais facil lol
     
  4. cryteck

    cryteck Power Member

    Obrigado a todos pelas respostas, mas já corrigi o problema com uma expressão regular fazendo o seguinte:

    PHP:
    //Verifica se o e-mail está correto
    if (ereg("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$"$_POST['email'])){
     
    }
    else
    {
    $ac[] = "E-mail Inválido"
    }
    Esta fase ja está resolvida.
    Os dados são inseridos na base de dados,mas como o meu sitema de login, depois de se registar é preciso ir ao mail activar a conta, na hora de enviar o mail para activar a conta, dá o seguinte erro:

    Como posso resolver isto, dêm sugestões como poder agir.

    Abraços!!!!!:P
     
    Última edição pelo moderador: 14 de Março de 2009
  5. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Estás a testar isso no teu computador, certo? É que no teu computador não deves ter nenhum servidor SMTP a correr, portanto ele não sabe como é que há-de enviar o mail.
    Ou deixas isso para depois, ou metes isso num servidor que permita o envio de mails.

    Já agora, em relação ao "if" do teu último post, sabes que em vez de fazeres o que fizeste, podes fazer
    PHP:
    //Verifica se o e-mail está correto
    if (!ereg("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$"$_POST['email']))
    {
    $ac[] = "E-mail Inválido"
    }  
    certo? (atenção ao ponto de exclamação antes de "ereg", que serve como negação) ;)
     
  6. cryteck

    cryteck Power Member

    Obrigado pela rápida resposta Kayvlim, mas não consigo mesmo enviar através do meu computador, utilizando um programa.
    Eu já tentai utilizar um programa o QK SMTP Server 3 e ja não me aparece mensagens de erro.
    A mensagem que deverá ser apresentada no mail fica armazenada no programa, mas depois da erro ao enviar para o mail através do programa.

    Obrigado pela a ajuda no IF





    Abraço !!!!!!
     
    Última edição: 14 de Março de 2009
  7. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Qual é o problema agora? Se é não conseguires enviar o mail usando o programa, isso já não tem a ver com o teu script, mas sim com o servidor SMTP que usas, portanto a conversa já é outra.

    Tens de ter calma, porque nem todos passam cá os dias, e isto é totalmente voluntário ;)
     
  8. cryteck

    cryteck Power Member

    Agora tou a fazer uma página para editar a password do utilizador com login feito.
    Ou seja, faço o login e depois aparece-me um ecrã de boas vindas a dizer Bem Vindo e o nome do utilizador do login, aparece-me para fazer logout e e editar utilizador que vai para página editarUtilizador.php. através da hiperligação:
    Código:
    <a href="editarUtilizador.php?id='.$id.'">Editar Utilizador</a>
    
    Na página editarUtilizador.php tem o seguinte código:
    PHP:
    <?php
     
     
    include("config.php");
    include(
    "restrito.php");
     
    $sql_busca "SELECT * FROM user WHERE login = '$login_usuario'";
    $exe_busca mysql_query($sql_busca) or die (mysql_error());
    $fet_busca mysql_fetch_assoc($exe_busca);
     
    $sql_busca1 "SELECT * FROM user WHERE id = '$id'";
    $exe_busca1 mysql_query($sql_busca) or die (mysql_error());
    $num_busca1 mysql_num_rows($exe_busca);
     
    $sql_busca2 "SELECT * FROM user WHERE senha = '$senha'";
    $exe_busca2 mysql_query($sql_busca2) or die (mysql_error());
    $num_busca2 mysql_num_rows($exe_busca2);
     
     
     
    if(
    $senha_nova != $confirma_senha){
    $ac[] = "Erro: - A nova password e o confirma password .<br>";
    }
    if(
    strlen($senha_nova 5)){
    $ac[] = "Sua nova Password deve ser maior que 5 caracteres.<br>";
    }
    if(
    $senha_nova == $senha){
    $ac[] = "Você deve escolher uma passoword diferente da actual.<br>";
    }
     
    if (!isset(
    $ac)){
     
    $sql2 mysql_query("update `user` set id='$id' senha='$senha_nova' where id='$id'");
    if(
    $sql2 0){
    echo 
    "Password Alterada";
    }
    else{
    echo 
    "Password não pode ser alterada";
    }
    }
     
    ?>
    Código:
    <!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=iso-8859-1" />
    <title>Editar Utilizadores </title>
    </head>
     
    <body>
    <form id="form1" name="form1" method="post" action="editarUtilizador.php?acao=trocar">
    <table width="400" border="0">
    <tr>
    <th width="156" scope="col"><div align="left">Password:</div></th>
    <th width="234" scope="col"><label>
    <div align="left">
    <input name="senha" type="password" id="senha" />
    </div>
    </label></th>
    </tr>
    <tr>
    <th scope="row"><div align="left">Nova Password: </div></th>
    <td><div align="left">
    <input name="senha_nova" type="password" id="senha_nova" maxlength="12" />
    </div></td>
    </tr>
    <tr>
    <th scope="row"><div align="left">Confirma Password: </div></th>
    <td><div align="left">
    <input name="confirma_senha" type="password" id="confirma_senha" maxlength="12" />
    </div></td>
    </tr>
    <tr>
    <th scope="row"><div align="left"></div></th>
    <td><label>
    <input type="submit" name="Submit" value="Trocar" />
    </label></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    
    O problema é que não está a actualizar a base de dados - user.
    Poderiam-me se faz favor dar uma ajudinha.

    Abraços:007:
     
    Última edição: 8 de Maio de 2009

Partilhar esta Página