×
Ir ao conteúdo
  • Cadastre-se

PHP Erro no sistema de login PHP


Impts
Ir à solução Resolvido por GabrielSennaMs,

Posts recomendados

<?php


include("conection.php");
if(isset($_POST['email']) && strlen($_POST['email']) > 0){

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

    $_SESSION['email'] = $mysqli->escape_string($_POST['email']);
    $_SESSION['senha'] = md5(md5($_POST['password']));
   
    $sql_code = "SELECT password, id FROM username WHERE email = '$_SESSION[email]'";
    $sql_query = $mysqli->query($sql_code) or die ($mysqli->error);
    $dice = $sql_query->fetch_assoc();
    $total=$sql_query->num_rows;

    if ($total == 0) {

        $error[] = "E-mail incorreto.";
    }else{
        if($dice['password'] == $_SESSION['password']){
            $_SESSION['username'] == $didce ['id'];
        }else{

            $error[] = "Senha incorreta.";
        
    
     
    }
  }

  if(count($error) == 0 || !isset($erro)){
      echo "<script>alert(location.href='sucess.php';</script>
  }

}


?>




    <form action="" method="POST">
    <p><input value="<?php echo $_SESSION['email']; ?>" name="email" type="text" placeholder="E-mail"></p>
    <p><input name="senha" type="password"></p>
    <p><a href="">Esqueceu a sua senha?</a></p>
    <p><input type="button" value="Entrar" type="btnlogin"></p> 
    </form>

 

Parse error: syntax error, unexpected double-quoted string " method=", expecting "," or ";" in C:\xampp\htdocs\WEBPHP\login.php on line 45

 

 

 

Link para o comentário
Compartilhar em outros sites

@washalbano

5 horas atrás, washalbano disse:

Olá!
Supondo q a linha 45 seja a linha onde é declarada a variável $sql_code...
Sugiro que mostre na tela como está a query montada. Pode ser que o escape_string tenha adicionado quotes.

 

Acho que consegui resolver, outra coisa, você entende bem de css? Segue essa dúvida: https://www.clubedohardware.com.br/topic/1576130-melhorar-código-de-input-com-transição-para-img/#comment-8317451

Link para o comentário
Compartilhar em outros sites

  • Solução

@Impts

 

O erro apontado pelo interpretador está no seu echo, falto às aspas duplas(") no final.

 

Em 30/11/2021 às 18:33, Impts disse:
 echo "<script>alert(location.href='sucess.php';</script>

 

 

Tem outro erro no tipo(type) do seu botão de submit no formulario, no caso tem duas propriedade type e o correto é 'type="submit"'

 

Em 30/11/2021 às 18:33, Impts disse:
<p><input type="button" value="Entrar" type="btnlogin"></p> 

 

 

Fiz outras modificações que você pode testar para melhorar o seu código

 

<?php

require_once __DIR__ . DIRECTORY_SEPARATOR . "conection.php";

$errors = [];
$data   = [
    "email"    => "",
    "password" => "" 
];

function filter_input_string($input)
{
    $value = filter_input(INPUT_POST, $input, FILTER_SANITIZE_STRING);

    if (is_null($value))
    {
        return $value;
    }
    elseif (!is_string($value))
    {
        return null;
    }

    $value = trim($value);
    $value = stripslashes($value);
    $value = htmlspecialchars($value);

    return $value;
}

function validation_value_is_null(&$errors, &$data, $index, $field)
{
    if (is_null($data[$index]) or empty($data[$index])) 
    {
        $errors[$index] = "<p>O campo '{$field}' é obrigatorio</p>";
    }
}

function validation_data_authentication_user(&$errors, &$data)
{
    $data["email"]    = filter_input_string("email");
    $data["password"] = filter_input_string("password");

    validation_value_is_null($errors, $data, "email", "E-mail");
    validation_value_is_null($errors, $data, "password", "Senha");

    if (count($errors) === 0)
    {
        if (!filter_var($data['email'], FILTER_VALIDATE_EMAIL))
        {
            $errors["email"] = "<p>O valor informado no campo email não corresponde a um email valido</p>";
        }

        if (count($errors) === 0)
        {
            return true;
        }
    }

    return false;
}

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
    if (session_status() == 1)
    {
        session_start();
    }
    
    if (validation_data_authentication_user($errors, $data)) 
    {
        $stmt = $mysqli->prepare("SELECT `id`, `password` FROM `users` WHERE `email` = ? LIMIT 1;");        
        $stmt->bind_param("s", $data['email']);

        if ($stmt->execute())
        {
            $result = $stmt->get_result();

            if ($result->num_rows === 1) 
            {
                $user = $result->fetch_object();

                if (password_verify($data['password'], $user->password)) 
                {
                    $_SESSION["id"] = $user->id;

                    header("Location: /success.php");
                    die();
                }
            }
        }
        
        $errors["all"] = "<p>Usuário ou/e senha invalido/s</p>";
    }
    
    http_response_code(401);
}

?>
<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            html, body, main, section {
                width: 100%;
                padding: 0px;
                margin: 0px;
                height: 100%;
                background: #eee;
                font-family:'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
            }

            a {
                color: #000;
                text-decoration: none;
                border-bottom: solid 1px transparent;
                transition: 0.4s;
            }

            a:hover {
                text-decoration: none;
                transition: 0.4s;
                border-bottom: solid 1px;
            }

            section {
                display: flex;
                justify-content: center;
                align-content: center;  
                align-items: center;
            }

            form {
                width: 100%;
                max-width: 300px;
                padding: 2em;
                border-radius: 0.5em;
                transition: 0.2s;
                box-shadow: 3px 3px 10px #777;
                background: #fff;
            }

            fieldset {
                padding: 0px; 
                margin: 0px;
                border: none;
            }

            input[type="text"], input[type="password"] { 
                width: calc(100% - 20px);
            }

            input {
                width: 100%;
                display: block;
                margin: 2em 0;
                padding: 10px;
            }

            #msg-errors > p {
                color: red;
                font-size: 12px;
            }
        </style>
    </head>
    <body>
        <main>
            <section>
                <form action="<?= htmlspecialchars($_SERVER["PHP_SELF"]) ?>" method="POST">
                    <h2>LOGIN</h2>
                    <div id="msg-errors">
                        <?php if (count($errors) > 0): ?>
                            <?= implode("", array_values($errors)); ?>
                        <?php endif; ?>
                    </div>
                    <fieldset>
                        <input 
                            value="<?= $data['email'] ?>" 
                            autocomplete="username"
                            name="email" 
                            type="text" 
                            placeholder="E-mail"
                        >
                        <input 
                            autocomplete="current-password"
                            name="password" 
                            type="password"
                            placeholder="Senha"
                        >
                        <a href="#">Esqueceu a sua senha?</a>
                        <input type="submit" value="Entrar">
                    </fieldset>
                </form>
            </section>
        </main>
    </body>
</html>

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Impts

 

Você pode verificar a lista de errors e procurar o indece certo.

 

<?php if (isset($errors['email'])): ?>
    <?= $errors['email'] ?>
<?php endif; ?>

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.