Ir ao conteúdo
  • Cadastre-se

PHP Erro estranho: Trying to access array offset on value of type null in C:\xampp\


Ir à solução Resolvido por Flávio Pedroza,

Posts recomendados

Boa noite, pessoal. Iniciante aqui. 

 

Estou fazendo um sistema crud para praticar o que aprendi com a linguagem e resolvi fazer um simples sisteminha de cadastro de usuários, com os campos: user_id, user_name, user_email, senha e user_type (vou usar esse user type pra permissões futuramente). Beleza. Criei a tabela usuarios com os campos e registrei um usuario padrão pra poder ir moldando o sistema.

 

Fiz a página cadastro.php, que não só conterá o formulário de cadastro como também terá todo script de comparação de user existente e insert no banco de dados o novo usuário.

 

Porém, estou recebendo o seguinte erro ao cadastrar o usuário e SE ELE JÁ EXISTIR NO BANCO DE DADOS:

 

Notice: Trying to access array offset on value of type null in C:\xampp\htdocs\crud\cadastro.php on line 39
 

A linha 39 é a seguinte:

 

[code]

$user_exist = $verifica_array['user_name'];

[/code]

 

O código todo da cadastro.php:

 

<?php include "conexao.php"; ?>
<!DOCTYPE HTML>
<html lang="pt-br">
<head>
    <meta charset="utf-8" />
    <link rel="stylesheet" type="text/css" href="estilos/global.css" />
    <title>Crud - Cadastrar</title>
</head>
<body>


    <form method="post">

        <label>Nome de usuário</label>
        <input type="text" name="login" /><br /><br />

        <label>Endereço de e-mail</label>
        <input type="email" name="email" /><br /><br />

        <label>Senha</label>
        <input type="password" name="senha" /><br /><br />

        <input type="submit" name="enviar" value="Cadastrar" />

    </form>

<?php

if (isset($_POST['login']) && isset($_POST['email']) && isset($_POST['senha'])) {

    $login = $_POST['login'];
    $email = $_POST['email'];
    $senha = md5($_POST['senha']);

    $verifica = mysqli_query($conecta, "SELECT user_name FROM usuarios WHERE user_name = '$login'");

    $verifica_array = mysqli_fetch_array($verifica);

    $user_exist = $verifica_array['user_name'];


        if($login == "" || $login == null) {
            echo "O campo nome de usuário está vazio.";
        } else if ($email == "" || $email == null ) {
            echo "O campo de email está vazio :(";
        } else if ($senha == "" || $senha == null) {
            echo "Preencha o campo senha";
        } else {

            if ($login == $user_exist) {

                echo "Esse nome de usuário já está em uso";

            } else {
                
                $insere = mysqli_query($conecta, "INSERT INTO usuarios VALUES ('', '$login', '$email', '$senha', 1)");

                if ($insere) {
                    echo "Você se registrou com sucesso!";
                }

                else {
                    echo "Ocorreu um erro ao se registrar. " . mysqli_error();
                }

            }

        }

}


?>



</body>
</html>

 

Alguém tem uma luz?

 

OBS1: Ao digitar no formulário um usuário que existe, ele não dá nenhum notice. Mas ao digitar um usuário inexistente, ele dispara o erro MAS CADASTRA o usuário sem problemas. 

 

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, Flávio Pedroza disse:

Se o usuário não existir, $verifica_array = mysqli_fetch_array($verifica)  não iria retornar NULL (ou seja, $verifica_array seria NULL)?

O que eu fiz de errado na condição?

Eu só queria q verificasse se o valor do input é igual ao valor já existente, se for: dispara o echo informando q já existe, se não for cadastra o usuário. 

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