Ir ao conteúdo

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

Postado

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. 

 

Postado
  Em 29/09/2021 às 22:18, 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)?

Expandir  

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. 

  • Solução
Postado

Acho que você tem que verificar se a variável é nula antes de acessá-la. Algo assim:

 $verifica_array = mysqli_fetch_array($verifica);
 
if ($verifica_array != null) $user_exist = $verifica_array['user_name']; else $user_exist = null;
  • Obrigado 1

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!