Jump to content

Recommended Posts

Posted

Boa tarde,

gostaria de obter ajuda num erro que me apareceu ao tentar criar um login e registo. Quando insiro toda a informação à cerca registo não dá erro nenhum mas no entanto ao aceder à base de dados não está lá nem o nome, senha e email. 

Entretanto se tentar fazer o login com esses dados, pelo menos para receber a informação de que não existe esse usuário, também nada se passa. Poderiam-me explicar o que é necessário alterar ou acrescentar?

Segue o código php:

<?php
function introduzirUtilizador(){
    $nome = $_POST["nome"];
    $senha = $_POST["senha"];
    $senha2 = $_POST["senha2"];
    $email = $_POST["email"];

    if (!$_POST['nome']) {
        $errNome = 'true';
    } else{
        $errNome = 'false';
    }
    
    if (!$_POST['senha']) {
        $errSenha = 'true';
    } else{
        $errSenha = 'false';
    }
    
    if (!$_POST['senha2']) {
        $errSenha2 = 'true';
    } else{
        $errSenha2 = 'false';
    }

    
    if (!$_POST['email']) {
        $errEmail = 'true';
    } else{
        $errEmail = 'false';
    }

    if($senha != $senha2){
        $errSenhaVerifica = 'true';
    } else{
        $errSenhaVerifica = 'false';
    }

    if($errNome != 'true'
       && $errSenha != 'true' 
       && $errSenha2 != 'true' 
       && $errEmail != 'true' 
       && $errSenhaVerifica != 'true'){
       
       $ligacao = mysqli_connect("localhost","root","","site_interno");

       // Check connection
       if (mysqli_connect_errno())
          {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
          }

        $sql = "INSERT INTO USUARIOS (NOME,SENHA,EMAIL) VALUES ('$nome',,'$senha','$email')";

        //echo "query: $sql";

        $resultado = mysqli_query($ligacao,$sql);

        /*if($resultado){
            echo "yes";
        } else {
            echo "no";
        }*/

        mysqli_close($ligacao);
    } else {
        /*echo '<script language="javascript">';
        echo 'alert("Erro no preenchimento dos campos!")';
        echo '</script>';*/
    }
}

if (!isset($_SESSION)) 
    session_start();

if(isset($_POST["submit1"])){
    introduzirUtilizador();
}

function login_usuario(){
    $emaillogin = $_POST["emaillogin"];
    $pwd = $_POST["pwd"];

    if (!$_POST['emaillogin']) {
        $errEmaillogin = 'true';
    } else{
        $errEmaillogin = 'false';
    }
    if (!$_POST['pwd']) {
        $errPwd = 'true';
    } else{
        $errPwd = 'false';
    }

    if($errEmaillogin != 'true' && $errPwd != 'true' ){

        $ligacao = mysqli_connect("localhost","root","","SITE_INTERNO");
        if (mysqli_connect_errno())
        {
           echo "Erro na ligação MySQL: " . mysqli_connect_error();
        }    
        $sql = "SELECT * FROM USUARIOS 
                WHERE EMAIL='$emaillogin' 
                AND SENHA='$pwd'";

        $resultado = mysqli_query($ligacao, $sql);
        if($resultado){
                if(mysqli_num_rows($resultado) == 1)
                {    
                    // inicia ou cria a sessão se ainda não tiver sido efectuado.
                    if (!isset($_SESSION)) {
                        session_start();
                    }

                    $_SESSION['email'] = $_POST["emaillogin"];
                    echo "<script type='text/javascript'>alert('Login efetuado com sucesso!')</script>
                    ";
                    header("Location: index.php?email=$emaillogin");
                }
                else
                {
                    echo "Erro no login";
                }
            } else {
                echo "Ocorreu um erro";
            }
    }
}

if(isset($_POST["submit2"])){
    login_usuario();
}
?>

Muito obrigado

Posted

Tens um erro de sintaxe no INSERT, tens 3 campos declarados e envias 4 valores. Repara que tens duas virgulas seguidas após o nome.

Esse código está mais complexo (e mal formatado) o que não ajuda à leitura, mas se reparares bem estares a verificar se algo existe no POST para depois afetares uma variável de controlo que é usada numa condição é totalmente desnecessário, basta-te ver na condição se algo existe no POST. Ou seja, as variáveis $errSenha, $errSenha2 e afins são totalmente desnecessárias além de que devias afetar-lhes valores booleanos e não strings.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Posted

Não coloques esse código online. Tem mais buracos que um queijo suiço!

Por favor revê todo o código. Pesquisa por "sql inection" "xss attack".... Protege o teu trabalho. Nada é 100% mas pelo menos não abras totalmente todas as portas

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.