Ir ao conteúdo

PHP Erro no sistema de login PHP


Ir à solução Resolvido por GabrielSennaMs,

Posts recomendados

Postado
<?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

 

 

 

Postado

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.

  • Obrigado 1
Postado

@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/forums/topic/1576130-melhorar-código-de-input-com-transição-para-img/#comment-8317451

  • Solução
Postado

@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
Postado

@GabrielSennaMs desculpa reviver o tópico, mas, esse erro que você coloca, no titulo, como eu faço para inserir embaixo do input? o erro de email embaixo do input

<?php if (count($errors) > 0): ?>
                            <?= implode("", array_values($errors)); ?>
                        <?php endif; ?>

de email e o outro da senha?

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...