Jump to content
unset

Erro Trying to access array offset on value of type null

Recommended Posts

Olá a todos, tenho uma aplicação pequena, que roda normalmente no php5 porém ao mudar a versão do php para 7 a mesma está apresentando a seguinte mensagem de erro

 

Notice: Trying to access array offset on value of type null in

 

 

<?php
  /* 
   *  APP CORE CLASS
   *  Creates URL & Loads Core Controller
   *  URL Format - /controller/method/param1/param2
   */
  class Core {
    // Set Defaults
    protected $currentController = 'Pages'; // Default controller
    protected $currentMethod = 'index'; // Default method
    protected $params = []; // Set initial empty params array

    public function __construct(){
      $url = $this->getUrl();
      // Look in controllers folder for controller
      if(file_exists('../app/controllers/'.ucwords($url[0]).'.php')){
        // If exists, set as controller
        $this->currentController = ucwords($url[0]);
        // Unset 0 index
        unset($url[0]);
      }

      // Require the current controller
      require_once('../app/controllers/' . $this->currentController . '.php');

      // Instantiate the current controller
      $this->currentController = new $this->currentController;

      // Check if second part of url is set (method)
      if(isset($url[1])){
        // Check if method/function exists in current controller class
        if(method_exists($this->currentController, $url[1])){
          // Set current method if it exsists
          $this->currentMethod = $url[1];
          // Unset 1 index
          unset($url[1]);
        }
      }

      // Get params - Any values left over in url are params
      $this->params = $url ? array_values($url) : [];

      // Call a callback with an array of parameters
      call_user_func_array([$this->currentController, $this->currentMethod], $this->params);
    }

    // Construct URL From $_GET['url']
    public function getUrl(){
        if(isset($_GET['url'])){
          $url = rtrim($_GET['url'], '/');
          $url = filter_var($url, FILTER_SANITIZE_URL);
          $url = explode('/', $url);
          return $url;
        }
    }
  }

 

Alguém poderia dar uma força ai?

Share this post


Link to post
Share on other sites

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

  • Similar Content

    • By jganjos
      Boa tarde senhores.
      Estou gerando esta array com o PHP
       
      Array ( [header] => Array ( [ico] => fas fa-building [tit] => Empresa [lab] => Cadastro da Empresa ) [forms] => Array ( [RAZAO] => Array ( [tit] => Razão Social ) [NFANTASIA] => Array ( [tit] => Nome Fantasia [lin] => 1 [col] => 10 ) [STATUS] => Array ( [tit] => Status [typ] => switch [val] => 1,0 [lin] => 1 [col] => 2 ) [INSCRICAO] => Array ( [tit] => Inscrição [lin] => 2 [col] => 4 ) [IE] => Array ( [tit] => Insc. Estadual [lin] => 2 [col] => 4 ) [IM] => Array ( [tit] => Insc. Municipal [lin] => 2 [col] => 4 ) [CEP] => Array ( [tit] => CEP [lin] => 3 [col] => 4 [btn] => search ) [TIPO_END] => Array ( [typ] => hidden ) [ENDERECO] => Array ( [tit] => Endereço [lin] => 4 [col] => 9 ) [NUM_END] => Array ( [tit] => Número [lin] => 4 [col] => 3 ) [BAIRRO] => Array ( [tit] => Bairro [lin] => 5 [col] => 6 ) [COMPL] => Array ( [tit] => Complemento [lin] => 5 [col] => 6 ) [MUNICIPIO] => Array ( [tit] => Município [lin] => 6 [col] => 9 ) [UF] => Array ( [tit] => Estado [typ] => list [tab] => estados [lin] => 6 [col] => 3 ) [TEL1] => Array ( [tit] => Telefone [msk] => phone [lin] => 7 [col] => 6 ) [TEL2] => Array ( [tit] => Telefone [msk] => phone [lin] => 7 [col] => 6 ) [EMAIL] => Array ( [tit] => e-mail [typ] => email [lin] => 8 [col] => 6 ) [SITE] => Array ( [tit] => Site da empresa [typ] => website [lin] => 8 [col] => 6 ) ) ) Preciso listar os valores da Array *FORMS* e seus respectivos filhos mas não estou conseguindo utilizando o foreach.
      Alguém teria uma dica?
    • By helkton
      galera preciso criar um array que pegue os itens adicionais de cada ITEM  escolhido...
      vou tentar explicar...
      tenho uma pagina com as categorias do CARDÁPIO
      LANCHES - AÇAI - SALGADOS - PIZZAS
      CADA categoria contem seus devidos itens tipo...
      LANCHES 1-xFrango 2-xSalada 3-xBacon AÇAI 1-Copo 300ml 2-Copo 500ml 3-Copo 700ml até esta funcionando, cada item que o usuário escolher, salvo em uma S_SESSION['itens'] 
      agora vamos supor que, esses itens tenham adicionais, já criei um <?php if(){}?> e ele já faz essa verificação, então se o item LANCHES 1=XFRANGO NÃO conter adicional para ser escolhido ele simplesmente irá ser adicionado no carrinho, AGORA se o item tiver adicional para ser escolhido, irá abrir um MODAL com os adicionais disponíveis para o ITEM
      Agora digamos que o AÇAÍ) 1-COPO 300ML tenha adicional eu abro o meu modal com os seguintes adicionais:
      FRUTAS 1-Morango 1,00 2-Banana 1,00 3-Uva 1,00 COMPLEMENTOS 1-Ninho 1,00 2-Coco Ralado 1,00 3-Castanha 1,00 COBERTURA 1-Chocolate 1,00 2-Leite condensado 1,00 3-Morango 1,00 ADICIONAIS 1-Nutella 1,00 2-Bis 1,00 3-KitKat 1,00 então como pego esses adicionais e salvo em cada ITEM escolhido pelo usuário e se possivel somar esses adicionais que tenha valores também
    • By Artur Mendonça
      Olá amigos.
      Estou a tentar fazer um sistema para upload de vídeos para criar uma base de dados.
      Já fiz um sistema para imagens e funciona na perfeição. Adaptei este código para upload de vídeo e recebo as mensagens de erro:
      Os (...) foi que coloquei para encurtar o caminho.
       
      Código da página para seleção e upload do vídeo:
      <?php session_start(); include_once "../conexao.php"; $agid = $_REQUEST['id']; $sql = "select * from tbl_album where albumid='$agid'"; $rs_result = mysqli_query($conectar, $sql); ?> <!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"> <meta name="description" content="Página Administrativa"> <meta name="author" content=""> <link rel="icon" href="imagens/imgadmin.ico"> <title>Administrativo</title> <link rel="stylesheet" href="../css/bootstrap.min.css"> <link rel="stylesheet" href="../css/style.css"> </head> <?php $agid = $_REQUEST['id']; $sql = "SELECT * FROM tbl_albumvideo WHERE albumid='$agid'"; $rs_result = mysqli_query($conectar, $sql); while ($row = mysqli_fetch_assoc($rs_result)) { $aname = $row["name"]; } ;?> <body> <?php include_once "admmenu.php"; ?> <div class="container theme-showcase" role="main" Style='margin-top: 100px'> <h1 class="page-header"><br />Adicionar vídeo</h1> <div class="row"> <div class="col-md-12"> <div class="panel panel-default"> <div class="panel-heading"> Por favor selecione o vídeo </div> <div class="panel-body"> <div class="row"> <div class="col-lg-6"> <form action="processa/proc_cad_albumvideo2.php?id=<?php echo $agid ?>" method="POST" enctype="multipart/form-data" name="upload"> <div class="form-group"> <input type="file" name="arquivo" id="arquivo" value="arquivo"/> </div> <div class="form-group"> <input name="enviar" class="btn btn-primary" type="submit" id="enviar" value="Enviar"> </div> <div class="alert alert-danger" role="alert" style='margin-top:20px'> Esta operação poderá ser demorada, dependendo do tamanho do ficheiro a enviar e das suas condições de ligação à rede. <br/> <br/> Por favor seja paciente e não reinicie a página! </div> </form> </div> </div> </div> </div> </div> </div> </div> <script src="../js/jquery-3.2.1.slim.min.js"></script> <script src="../js/popper.min.js"></script> <script src="../js/bootstrap.min.js"></script> </body> </html> E este é o código para efetuar o upload e gravação na BD
      <?php ini_set('display_errors', 1); ini_set('display_startup_erros', 1); error_reporting(E_ALL); session_start(); include_once "../../conexao.php"; $adate = date('Y-m-d H:i:s'); $status = 'process'; $arquivo = $_FILES['arquivo']; $albumid = $_REQUEST['id']; $pasta = '../../videos/'; $resulta = mysqli_query($conectar, "SELECT * FROM tbl_albumvideo WHERE albumid='$albumid'"); $linhas = mysqli_fetch_assoc($resulta); $local = $linhas["local"]; $arqnome = $_FILES['arquivo']['name']; $ano = $linhas['ano']; $extensao = @end(explode('.', $arqnome)); $novonome = time() . "-" . rand() . "." . $extensao; $tmp = $_FILES['arquivo']['tmp_name']; $file = $pasta . $novonome; if (move_uploaded_file($tmp, $file)) { $query = mysqli_query($conectar, "INSERT INTO videos (video_name, local, ano,aid) VALUES ('$novonome','$local', '$ano', '$albumid')") or die(mysqli_error($conectar)); if ($query) { echo "<META HTTP-EQUIV=REFRESH CONTENT = '0;URL=http://(...)/addgalleryvideo.php'> <script type=\"text/javascript\"> alert(\" O vídeo foi guardado com sucesso.\"); </script>";} else {echo " <META HTTP-EQUIV=REFRESH CONTENT = '0;URL=http://(...)/addgalleryvideo.php'> <script type=\"text/javascript\"> alert(\" O Vídeo não foi guardado.\"); </script> "; } } Linha 14 : $arquivo = $_FILES['arquivo']; 
      Linha 21: $arqnome = $_FILES['arquivo']['name'];
      Linha 27: $tmp = $_FILES['arquivo']['tmp_name'];
       
      Desde já muito obrigado.
    • By szLeonardo
      Olá a todos,
      Estou com um problema no meu cadastro de usuário.
      A parte de cadastrar está sendo realizada corretamente e meu login também, o meu problema está é que tenho que cadastrar em uma tela, depois entrar em outra para validar e acessar.
      Gostaria que quando eu realizasse o cadastro já valida-se e entrasse direto, sem precisar ter que entrar na outra pagina e rodar o login.
       
      Segue meu cadastro que está funcionando:  
      //--Insere Registro   if(isset($_POST['cadastrar'])){     @$usuario      = trim(strip_tags($_POST['usuario']));     @$senha        = trim(strip_tags($_POST['senha']));     @$nivel_acesso = trim(strip_tags($_POST['nivel_acesso']));     $insert = "INSERT INTO cad_usuario (usuario, senha, nivel_acesso)                 VALUES (:usuario, :senha, :nivel_acesso)";   try{     $result = $conexao->prepare($insert);     $result->bindParam(':usuario',      $usuario, PDO::PARAM_STR);     $result->bindParam(':senha',        $senha, PDO::PARAM_STR);     $result->bindParam(':nivel_acesso', $nivel_acesso, PDO::PARAM_STR);     $result->execute();     $contar = $result->rowCount();   if($contar>0){     echo '<div class="alert alert-success">           <button type="button" class="close" data-dismiss="alert">×</button>           <strong>Sucesso!</strong> O Usuario foi Cadastrado!</div>';          $_SESSION['autenticado'] = true;   }else{     echo '<div class="alert alert-danger">           <button type="button" class="close" data-dismiss="alert">×</button>           <strong>Erro ao cadastrar!</strong> Não foi possível cadastrar o Usuario.</div>';   }}catch(PDOException $e){     echo $e;   }}   } }  
      Segue meu validador do usuário cadastrado que está funcionando: 
      <?php session_start(); include_once "connection/conecta.php"; $usuario = new Usuario(); try {   if($usuario->confere($_POST['usuario'],$_POST['senha'])) {     $_SESSION['autenticado'] = true;     $_SESSION['usuario'] = $_POST['usuario'];     header('location: principal.php');   } else {     $_SESSION['autenticado'] = false;     include_once "index.php";     exit("<div class='alert alert-danger col-sm-12'>Usuário ou senha incorretos. Verifique</div>");   } } catch(PDOException $p){   echo "Ocorreu um erro inesperado: ". $p->getMessage(); } ?>  
      Segue minha pagina principal aonde valida a $_SESSION['autenticado'] = false; 
      Mas só valida se passar na pagina index e passar pela validação a cima.
       <?php require_once("connection/conecta.php"); ob_start(); session_start();  if (@!$_SESSION['autenticado']){    include_once "index.php";    exit("<div class='alert alert-danger col-sm-12'>Para acessar o sistema você deve efetuar login</div>");  }     $logado = $_SESSION['usuario'];     $sql = "SELECT * from cad_usuario WHERE usuario = '$logado' and situacao = 'A'";     try{       $result = $conexao->prepare($sql);         $result->execute();       $contar = $result->rowCount();                if($contar =1){         $loop = $result->fetchAll();         foreach ($loop as $show){           $userLogado  = $show['usuario'];           $senhaLogado = $show['senha'];           $nivelLogado = $show['nivel_acesso'];         }       }       }catch (PDOWException $erro){ echo $erro;} ?>  
    • By Manoel010953
      Bom Dia pessoal, tudo bom? Sou novo em programação e estou tentando criar uma dll no delphi. 
      Essa dll vai ser usada em uma aplicação do delphi também.
      Queria saber se é possível utilizar vetores e matrizes e como fazer isso pois eu tentei declarar como um array of array of (um tipo), mas dá erro (essas matrizes seriam parâmetros da função). Colocando só como array of (um tipo) funciona, mas ao tentar acessar a função na dll dá um access violation. Eu já havia criado essa função dentro da minha aplicação e estava funcionando, mas na dll da esse erro. Eu tentei usar um ponteiro também, mas continua dando o erro. Por favor me ajudem.
      Segue o código:
       
      library NDC_Generator; uses SysUtils, Dialogs, Classes; Type Matriz = Array of array of string; P1 = ^Matriz; {$R *.res} procedure MensagemConfirmacao(AMensagem: WideString); stdcall; begin MessageDlg(AMensagem, mtInformation, [mbOk], 0); end; function gerarcombinacoes(Mat: P1; Xb, Total, np, NumCri: integer; mp, bud: Double; Pointer: P1): string; stdcall; var i, j, k, T, a, p: integer; aux1: string; R0: Double; vetop, vmax: array of integer; matrizaj: array of array of integer; vetmax, vetmin: array of Double; vet_aux, Vetname: array of string; matrizaux1 : array of array of Double; matriz_result: array of array of String; begin setlength(vetop, np); setlength(vmax, np); setlength(matrizaj, T, np); setlength(vetmax, NumCri); setlength(vetmin, NumCri); setlength(vet_aux, T); p := 0; for i := 0 to np - 1 do begin vmax[np - i - 1] := Xb - i; end; for i := 0 to np - 1 do vetop := i + 1; vetop[np - 1] := np - 1; for i := 0 to NumCri - 1 do begin vetmin := 100000; vetmax := -1; end; i := 0; T := 0; while (T < Total) do // Gerar as combinações com np elementos begin if T <> 1 then i := np; while (i > 0) do // Verifica se alguma das posições já atingiu seu máximo begin if (i - 1) <> 0 then // Verifica se não se trata da primeira posição que atingiu seu máximo begin if (vetop[i - 1] = vmax[i - 1]) and (vetop[i - 2] < vmax[i - 2]) then begin vetop[i - 2] := vetop[i - 2] + 1; vetop[i - 1] := vetop[i - 2]; ; if (i < np) then for j := i to np - 1 do vetop[j - 1] := vetop[j - 2] + 1; vetop[np - 1] := vetop[np - 2]; break; end; // vetop end; // 0 i := i - 1; end; // while i>0 vetop[np - 1] := vetop[np - 1] + 1; R0 := 0; for k := 0 to np - 1 do R0 := R0 + StrToFloat( Mat^[vetop[k] - 1, NumCri + 1]); if R0 <= bud then begin p := p + 1; setlength(matrizaux1, p, NumCri + 1); setlength(Vetname, p); for a := 0 to NumCri - 1 do begin for k := 0 to np - 1 do matrizaux1[p - 1, a] := matrizaux1[p - 1, a] + StrToFloat( Mat^[vetop[k] - 1, a + 1] ); if (matrizaux1[p - 1, a] > vetmax[a]) then vetmax[a] := matrizaux1[p - 1, a]; if (matrizaux1[p - 1, a] < vetmin[a]) then vetmin[a] := matrizaux1[p - 1, a]; end; matrizaux1[p - 1, NumCri] := R0; a:= 0; for k := 0 to np - 1 do Vetname[p - 1] := Vetname[p - 1] + Mat^[ vetop[k] - 1,a] + ' '; end; // R0 <= Bud T := T + 1; end; // While a := 0; k := 0; for i := 0 to p - 1 do begin if mp <> 0 then for j := 0 to NumCri - 1 do begin if vetmax[j] <> vetmin[j] then begin R0 := (matrizaux1[i, j] - vetmin[j]) / (vetmax[j] - vetmin[j]); end else R0 := 1; if R0 >= mp then begin a := a + 1; end else break; end else a := NumCri; if a = NumCri then begin k := k + 1; for j := 0 to NumCri do begin setlength(matriz_result, k, NumCri + 2); matriz_result[k - 1, j+1] := floattostr( matrizaux1[i, j]); end; matriz_result[k - 1, 0]:= Vetname; end; a := 0; end; for I := 0 to k - 1 do for j := 0 to numcri + 1 do Pointer^[i,j]:= matriz_result[i,j]; MensagemConfirmacao('Foram geradas' + inttostr(k) + 'combinações!'); Result := '0'; end; exports gerarcombinacoes; end.  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.