-
Total de itens
4192 -
Registro em
-
Última visita
-
Dias vencidos
90
Posts postados por Gabriel Heming
-
-
Só um ponto, o token "new" já diz que é para instanciar uma classe.
Ou seja, pode usar com ou sem parênteses:
$instance = new Foo();
é o mesmo que:
$instance = new Foo;
A obrigatoriedade dos parênteses é apenas quando quer passar algum parâmetro:
$instance = new Foo($bar);
Como ponto pessoal, com os parênteses fica mais fácil de ler.
-
Esse projeto é mantido pela Oracle. Última atualização foi há 2 meses
-
Evite usar um screenshot aqui, é difícil de ler e não é possível localizar pela busca. Use a tag code para isso.
Tem algumas coisas que você irá ter de resolver.
A primeira, é quando você quer chamar a função de uma classe, deve usar a variável na qual a instância está salva.
Logo
$c = new Bancodados(); $c->Consulta();
Outra, é que você está usando as variáveis $email e $senha.
Você precisa enviá-las como parâmetros para o método
$c->Consulta($email, $senha);
E lá no método, receber esses parâmetros
function Consulta($email, $senha) { //... restante da função
Outro ponto, que não é um problema, mas apenas para saber, não precisa colocar as variáveis dentro de aspas duplas, vai acabar só criando redundância:
$selectionar->bindValue(":email", $email); $selectionar->bindValue(":senha", $senha);
E uma recomendação, é a forma correta de autenticar um usuário:
-
-
Em geral, use a biblioteca Azure.Storage.Blobs.
O que você deve cuidar, é que a Azure possui uma biblioteca para cada tipo de storage (FileShare, BlobStorage, etc..);
Se está usando BlobStorage, Azure.Storage.Blobs
Outro ponto, é que deve primeiro criar o arquivo e depois realizar o upload.
Em geral, o código abaixo é a base que necessitas
// conexão com o container BlobContainerClient container = new BlobContainerClient("connectionString", "containerName"); container.CreateIfNotExists(); // criação do stream em memória string json = JsonSerializer.Serialize("{JSON string}"); byte[] jsonEncoded = Encoding.UTF8.GetBytes(json); var source = new MemoryStream(jsonEncoded); // recupera o BlobClient (o arquivo em específico ainda não existe) BlobClient blob = container.GetBlobClient("file/path/json.json"); // Realiza o upload dele. await blob.UploadAsync(source, new BlobHttpHeaders() { ContentType = "application/octet-stream" });
-
Somente com PHP não é possível. Você vai precisar alguma tecnologia frontend para manter uma conexão com o servidor e atualizar os dados conforme eles forem sendo alterados.
No tópico abaixo, há todas as informações necessárias:
Apenas um adendo as informações. Use long polling apenas se websocket, ou outra tecnologia de push notifications/server push, não for possível.
-
Para rodar uma aplicação em .net, você precisa de um servidor que suporte um aplicação .NET.
O mais aconselhado é publicar diretamente via Visual Studio para o servidor aonde irá rodar a sua aplicação.
-
-
Bom, PHP não tem essa funcionalidade, tanto que a transpilação é o conceito de ler o código em uma linguagem e transformar no equivalente de outra linguagem. O PHP por si só é interpretado (as vezes compilado também), por isso não é gerado um dist. Além disso, ele roda apenas no servidor.
Acredito que poderias ir na direção de um template engine, o TWIG é um exemplo. Nesse caso, o template é escrito em uma linguagem própria (em geral, é similar a quase todos os outros templates engine). Aí sim, esse pode ser compilado para PHP (eu ainda diria que é uma transpilação, mas o TWIG chada de compilação).
-
Você não está concatenando corretamente.
Para concatenar, você deve "fechar" a string e usar ponto. Além do mais, não é necessário usar a tag PHP:
echo 'string '.$variavel.' mais string';
-
o reCaptcha utiliza análise de comportamento para identificar se o usuário é um bot ou não.
O "Google" em si, já sabe se é um usuário"humano" acessando um site apenas pelo modo que você movimenta o mouse. O "esquema" de selecionar imagens é muito mais para ajudar o deep learning do que garantir que não é um bot.
De qualquer forma, é indicado que o reCaptcha seja adicionado em todo o site para que o script possa avaliar o comportamento do usuário em todo o website. Após, você recebe uma análise de risco, e cabe a você aceitar ou não.
Em geral, é seguro. Além do mais, é mais garantido que um bot consiga se passar por um humano do que um humano por um bot.
-
Parece que o problema está no filtro, remova os colchetes e informe que é um array.
$problema = filter_input(INPUT_POST, 'checkArr', FILTER_SANITIZE_STRING, FILTER_REQUIRE_ARRAY);
ou, dependendo da forma que você quiser tratar, pode forçar que o resultado seja um array.
$problema = filter_input(INPUT_POST, 'checkArr', FILTER_SANITIZE_STRING, FILTER_FORCE_ARRAY);
-
Apesar de você estar imprimindo a data no javascript, não está tratando-a corretamente:
var valueDate = '<?=$DateGET?>';
Adicione os apóstrofos, para que o javascript entenda o resultado como uma string.
O que está ocorrendo, é que o código javascript está sendo interpretado da seguinte maneira:
var valueData = 07/10/2020 11:57 am;
Quando o correto é:
var valueData = '07/10/2020 11:57 am';
Outro ponto é o formato de data, eu escrevi este artigo abaixo há um tempo atrás:
Ou até mais compacto:
-
Um web service SOAP é sempre apenas uma interface. A melhor forma de entender como ele funciona, é utilizar o software SoapUI antes de qualquer desenvolvimento.
Se você estiver utilizando o Visual Studio IDE (não o visual studio code), o que você deve fazer é adicionar o endereço do Web Service, como uma referência ao projeto. Assim, o Visual Studio irá gerar todas as classes necessárias para trabalhar com o serviço.
Entretanto, esse serviço parecem possuir apenas login e logout. É bem provável que após a autenticação você poderá acessar outros métodos e/ou outros serviços.
No link abaixo há um bom passa-a-passo de como adicionar como referência:
-
Você está utilizando o Entity Framework Core, ou alguma outro framework?
No Startup.cs, você precisa utilizar a configuração do appsettings.json. A connection string deve ser adicionada explicitamente na conexão. Seu Startup.cs vai ficar mais ou menos assim:
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Mvc.ApplicationModels; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; public class Startup { private readonly IConfiguration configuration; public Startup(IConfiguration configuration) { this.configuration = configuration; } public void ConfigureServices(IServiceCollection services) { services.AddDbContextPool<AppDbContext>(options => { options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")); }); } }
Alguns detalhes:
- O código acima é para .NET Core usando EF Core;
- AppDbContext é a classe de contexto (especialização de Microsoft.EntityFrameworkCore.DbContext);
- É necessária a dependência do package Microsoft.EntityFrameworkCore.SqlServer.
O ponto central das configurations strings, é que você poderá recuperar elas utilizando o diretamente o código abaixo:
configuration.GetConnectionString("DefaultConnection")
Aonde DefaultConnection é a chave que você definiu, no seu caso, pode ser uma das duas chaves que você definiu:
configuration.GetConnectionString("HoleriteContext")
ou
configuration.GetConnectionString("prjHoleriteContextConnection")
-
Nenhuma pergunta é burra.
Indiferente com a escolha, você terá resultados bem similares... é um problema de escopo. A palavra que você procura pode estar em diferentes locais.
- Início/meio/fim de frase;
- Antes de pontuação (. , ! ? : ;);
- Entre apóstrofos.
- etc...
O mais fácil para resolver isso, seria utilizar uma marcação simples, tal qual
Back in [a]Black[/a]
E utilizar as marcações como delimitadores.
De outra forma, seria pegar todas as situações que podem ocorrer, e tratar cada uma independentemente.
Você pode começar com essa expressão regular e ir ampliando ela:
((?!\w)|[\t\n\r ])(?<word>black)(?!\w)
Ela não está completa, não cobre todas as possibilidade, mas cobre a maioria delas...
-
Você não precisa das duas consultas. A primeira consulta é o suficiente.
// código exatamente igual até essa parte aqui $resultado->execute(); //se a consulta não localizar nada, o retorno será FALSE if ($result = $resultado->fetch(PDO::FETCH_ASSOC)) { //aqui você tomará as ações caso o usuário for localizado //agora basta usar o resultado e testar if ($result['nivel'] == 'staff') { // caso for staff } elseif ($result['nivel'] == 'operacao') { // caso for operacao } } else { //aqui será executado caso o usuário não exista então }
Eu imagino que seus códigos sejam para estudos, o que é muito bom por sinal. Segue um link para você fazer um login seguro para o seu site:
-
É bom conhecer o funcionamento do método fetch para enteder o que ele está fazendo:
https://www.php.net/manual/en/pdostatement.fetch.php
O método fetch tem vários parâmetros, mas o mais importante é nesse caso é o primeiro. Que pode ser um dos seguinte:
- PDO::FETCH_ASSOC;
- PDO::FETCH_BOTH;
- PDO::FETCH_BOUND;
- PDO::FETCH_CLASS;
- PDO::FETCH_INTO;
- PDO::FETCH_LAZY;
- PDO::FETCH_NAMED;
- PDO::FETCH_NUM;
- PDO::FETCH_OBJ;
- PDO::FETCH_PROPS_LATE.
Não precisa se preocupar com todos, apenas com 3:
- PDO::FETCH_ASSOC;
- PDO::FETCH_BOTH;
- PDO::FETCH_NUM.
PDO::FETCH_ASSOC retornará um array associativo, então, com a sua consulta:
$sql="SELECT nome, password, nivel FROM login WHERE nome= :nome AND password= :password";
Eu posso acessar os valores de forma associativa:
$result = $resultado->fetch(PDO::FETCH_ASSOC); echo $result['nome']; echo $result['password']; echo $result['nivel'];
Se você quiser salvar em uma variável, basta fazer o seguinte:
$nome = $result['nome']; $password = $result['password']; $nivel = $result['nivel'];
Já PDO::FETCH_NUM retornará um array indexado (numérico) na ordem que são retornados pela consulta, então, com a sua consulta, o resultado seria o seguinte:
$result = $resultado->fetch(PDO::FETCH_NUM); echo $result[0]; //nome echo $result[1]; //password echo $result[2]; //nivel
Já o PDO::FETCH_BOTH é uma combinação das duas formas, ou seja, você pode acessar os dados da maneira que quiser (conforme os exemplos acima).
-
Seu problema é a sessão de usuário. O PHP só permite uma requisição por sessão. Enquanto uma sessão não for finalizada a outra fica em espera.
Se o seu processo não faz uso de objetos da sessão, utilize session_write_close o "mais cedo" possível, para que outros processos possam ser iniciados em paralelo.
-
$query = "INSERT INTO cicero(nome, sobrenome, email , telefone, cpf) VALUES (? , ? , ? , ? , ?)"; $insert = $conn->prepare($query); foreach ($_POST as $key => $row) { $insert->bindValue(1 , $row['nome']); $insert->bindValue(2 , $row['sobrenome']); $insert->bindValue(3 , $row['email']); $insert->bindValue(4 , $row['telefone']); $insert->bindValue(5 , $row['cpf']); $insert->execute(); }
Você não precisa validar o retorno do método execute se estiver utilizando exceções. Pra isso, basta adicionar o atributo abaixo:
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
O resto você faz via tratamento de exceções.
-
Isso deve calcular corretamente as 36 parcelas.
<?php //dia 15 do mês corrente $start = DateTime::createFromFormat('d' , '15'); //intervalo de 1 mês $interval = new DateInterval('P1M'); //Valida se o dia 15 do mês corrente já não passou if ($start < (new DateTime())) { //adiciona 1 mês caso seja pro dia 15 do mês que vem $start->add($interval); } //Calcula os períodos, data inicial + 35 ocorrências foreach(new DatePeriod($start , $interval , 35) as $key => $date) { $i = $key +1; echo "{$i} -> {$date->format('d/m/Y')}\n"; }
Pra entender um pouco mais:
-
9 horas atrás, TeixeiraRamos disse:[...]vai ser um porre inventar tudo isso[...]
Bem-vindo a programação PHP.
17 horas atrás, TeixeiraRamos disse:Gabriel, eu tenho o banco de dados que veio com o kit do livro. Você poderia fazer esse favor, preparar esse banco para importar para o meu phpMyAdmin. Quebra essa, por favor.
Não, você deve fazê-lo. Estamos aqui para orientar e tirar dúvidas.
De qualquer forma, se você precisa criar tabelas, utilize o MySQL Workbench e já irá aprender sobre diagramas ER. Se o caso é apenas inserir dados, você pode utilizar o phpMyAdmin ou outros programas, como o HeidiSQL (o qual eu recomendo), para realizar as inserções.
-
Apesar de ter muitas mudanças entre o 5.2 e o 7, você pode estudar o 5.2. Há também os guias do @Beraldo, que são gratuitos e o curso completo (pago):
Deve entender que HTML é uma coisa e PHP é outra totalmente diferente. A uníca coisa que o PHP faz é imprimir HTML. O HTML no final continua sendo apenas HTML...
No link abaixo tem uma lista rápida de todos os elementos HTML's que são tags:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element
Todas as tags possuem regras e locais. Como por exemplo, um <tr> só pode existir (ter como pai) dentro das tags <table>, <tbody>, <thead> ou <tfoot>. E ele apenas permite tags do tipo <td> ou <th> e pode possuir elementos de suporte, como <script> ou <template>.
Se você olhar na lista, encontrará, em cada elemento, uma tabela com o que é permitido como pai e como filho. Veja o caso da tag <p> (muito comum de qualquer página HTML):
Content categories Flow content, palpable content. Permitted content Phrasing content. Tag omission The start tag is required. The end tag may be omitted if the <p>
element is immediately followed by an<address>
,<article>
,<aside>
,<blockquote>
,<div>
,<dl>
,<fieldset>
,<footer>
,<form>
,<h1>
,<h2>
,<h3>
,<h4>
,<h5>
,<h6>
,<header>
,<hr>
,<menu>
,<nav>
,<ol>
,<pre>
,<section>
,<table>
,<ul>
or another<p>
element, or if there is no more content in the parent element and the parent element is not an<a>
element.Permitted parents Any element that accepts flow content. Permitted ARIA roles Any DOM interface HTMLParagraphElement
Não precisa saber tudo, apenas saber que existem regras e elas devem ser seguidas. Se não seguí-las, seu HTML será invalidado e tem grandes chances de ter um comportamento inesperado em diferentes browsers.
Outro ponto é sempre validar o HTML: https://validator.w3.org/
Sobre MySQLi ou PDO, o blog do Beraldo tem bastante conteúdo:
http://rberaldo.com.br/como-atualizar-php-mysql-mysqli/
http://rberaldo.com.br/pdo-mysql/
Sobre a interpolação da string (string interpolation, quando as variáveis são interpretadas em uma string) utilizando arrays, você pode fazer de duas formas (uma já foi demonstrada):
$array = ['name' => 'Gabriel Heming']; echo "Meu nome é {$array['name']}"; echo "Meu nome é $array[name]";
Dentro de uma string, a chave de index já é interpretada como string, logo, não precisa dos apóstrofos.
-
Basicamente o que todo o seu código, em PHP, faz é buscar e armazenar em um array os dados da consulta:
Consulta:
$this->select() ->from( 'item') ->join( 'tipo', 'item_tipo = tipo_id', 'INNER' ) ->join( 'sub', 'item_sub = sub_id', 'INNER' ) ->join( 'categoria', 'sub_categoria = categoria_id', 'INNER' ) ->join( 'foto', 'foto_item = item_id and foto.foto_pos = ( SELECT MIN( foto_pos ) FROM foto where foto_item = item_id)', 'LEFT' ) ->where( 'item_show = 1 and item_destaque = 1 and item_finalidade = 1' ) ->paginate( 12 ) ->groupby( 'item_id' ) ->orderby( 'item_pos asc' ) ->execute();
Envio dos dados para o template (view) para a variável "i":
$this->fetch( 'i', $this->data );
Se você quiser que apareça mais 12 itens de uma nova categoria, teria que realizar a mesma operação novamente:
- Consultar os imóveis de destaque de aluguel;
- Estruturá-lo em uma variável;
- Enviar para a view usando o fetch e uma nova variável;
- Utilizar o interpretador de template ({loop:i}) para interpretar os resultados.
Como jogar uma array do tipo string dentro de um campo que esta dentro de uma concatenação no Back-End?
em .NET
Postado
Sua pergunta está bem confusa. O que você quer dizer com jogar? Os dados vem de onde (frontend, backend)?