Arquivo da categoria: PHP

Como utilizar o Google Translate usando PHP

1) instale o Composer em sua máquina;
2) Utilizando a linha de comando do Windows (cmd), vá até a pasta raiz do seu projeto e digite o comando: composer require google/cloud-translate
3) Crie uma conta de serviço:

3.1) Acesse o link: https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts
3.2) Selecione o projeto
3.3) clique no botão “Criar conta de serviço”
3.4) Preencha o nome da sua conta e selecione em papel o item “Projeto > Proprietário”
3.5) Marque o item: “Fornecer uma nova chave privada”
3.6) deixe o tipo de chave como “json” e clique no botão criar.
3.7) Será criada a conta e o navegador fará o download de um arquivo json. Adicione este arquivo a raiz de seu projeto.

4) Adicione a linha abaixo a configuração do apache, com o endereço correto onde foi colocado o arquivo json: SetEnv GOOGLE_APPLICATION_CREDENTIALS C:\xampp\htdocs\projeto.json
5) Reinicie o apache.

Salve o código como index.php na raiz de seu projeto, modificando apenas o valor do ProjectID para o seu valor. Caso vc não saiba o ID de seu projeto, visite a página https://console.cloud.google.com/iam-admin/settings e verifique o nome do campo “Código do Projeto”:

<?
# Includes the autoloader for libraries installed with composer
require __DIR__ . '/vendor/autoload.php';

# Imports the Google Cloud client library
use Google\Cloud\Translate\TranslateClient;

# Your Google Cloud Platform project ID
$projectId = 'IDDoSeuProjet';

# Instantiates a client
$translate = new TranslateClient([
    'projectId' => $projectId
]);

# The text to translate
$text = 'Hello, world!';
# The target language
$target = 'pt-BR';

# Translates some text into Brazilian Protuguese
$translation = $translate->translate($text, [
    'target' => $target
]);

echo 'Text: ' . $text . '
Translation: ' . $translation['text'];
?>

abra a página no navegador e veja o resultado: Text: Hello, world! Translation: Olá Mundo!

Para mais informações visite a página do Google: https://cloud.google.com/translate/docs/reference/libraries#client-libraries-install-php

Como adicionar múltiplas linhas de cabeçalho em uma requisição do cURL no PHP?

Como fazer para adicionar múltiplos itens a um cabeçalho de requisição HTTP enviada pelo cURL? Utilize a opção CURLOPT_HTTPHEADER e passe como parâmetro um Array():

<?
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data', 'X-Requested-With: XMLHttpRequest'));
?>

Exemplo de código de requisição POST, enviando os dados de usuário e senha:


    $postfields = array();
    $postfields['usuario'] = $lstr_formUsuario;
    $postfields['senha'] = $pstr_formSenha;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data', 'X-Requested-With: XMLHttpRequest') );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__). '/cookie.txt');

    echo curl_exec($ch);

Como forçar o PHP a exibir as mensagens de erro?

Fui transferir o código da minha máquina para o servidor de produção e por algum motivo o código não funcionava, simplesmente parava de funcionar. Meia hora depois lembrei que as mensagens de erro poderiam estar configuradas para não aparecer. Mas como reverter essa opção? Como fazer via script que as mensagens fossem exibidas? Continue lendo

Undefined property: stdClass::($variablename)

Ao desenvolver um código utilizando a biblioteca PDO do PHP, me deparei com a seguinte mensagem de erro ao realizar uma iteração no resultado de uma consulta:

Notice: Undefined property: stdClass::$ds_nomeServidor in C:\xampp\htdocs\script.php on line 6127

O problema é que a consulta estava trazendo realmente o campo “ds_nomeServidor”. Contudo, ele era um campo nomeado utilizando o comando “AS” (Alias).

O problema acontece pois o PDO retorna o nome dos campos Alias todos em minúscula (lower case) e por esse motivo não encontrava o campo na consulta. Para solucionar, no momento de utilizar o campo, coloquei-o apenas com letras em minúscula e tudo passou a funcionar perfeitamente:

<?php
    echo $lobj_recordsetRow->ds_nomeservidor
?>

Se tiver dúvida de qual o nome que está sendo retornado em um recordset pelo PDO, utilize o código abaixo para listar todos:

<?php
    print "<pre>"; var_dump( $lobj_recordsetRow); exit;
?>

How to remove URL Anchor (Fragment) using PHP?

The best option is using the parse_url() function:

function removeURLFragment($pstr_urlAddress = '') {
    $larr_urlAddress = parse_url ( $pstr_urlAddress );
    return $larr_urlAddress['scheme'].'://'.(isset($larr_urlAddress['user']) ? $larr_urlAddress['user'].':'.''.$larr_urlAddress['pass'].'@' : '').$larr_urlAddress['host'].(isset($larr_urlAddress['port']) ? ':'.$larr_urlAddress['port'] : '').$larr_urlAddress['path'].(isset($larr_urlAddress['query']) ? '?'.$larr_urlAddress['query'] : '');
}

I think this is way better, since the knowledge of the structure of the URL is encapsulated. Chances are pretty large than using regexes or string manipulation, one will forget some scenario’s whereas dedicated methods are more reliable.

Analisando cada item de uma URL utilizando PHP

O PHP tem um função para analisar cada item de uma URL, ela se chama parse_url:

$larr_urlAddress = parse_url ( "http://meuusuario:minhasenha@www.google.com:88/dashboard/file.php?q=busca#item2" );

A função irá criar um array cujas informações poderão ser acessadas da seguinte forma:

echo "<BR>Scheme: ".$larr_urlAddress['scheme']; // No exemplo, retornará o valor http
echo "<BR>Host: ".$larr_urlAddress['host']; // No exemplo, retornará o valor www.google.com
echo "<BR>Port: ".$larr_urlAddress['port']; // No exemplo, retornará o valor 88
echo "<BR>User: ".$larr_urlAddress['user']; // No exemplo, retornará o valor meuusuario
echo "<BR>Password: ".$larr_urlAddress['pass']; //No exemplo, retornará o valor minhasenha
echo "<BR>Path: ".$larr_urlAddress['path']; // No exemplo, retornará o valor /dashboard/file.php
echo "<BR>Query: ".$larr_urlAddress['query']; // No exemplo, retornará o valor q=busca
echo "<BR>Fragment: ".$larr_urlAddress['fragment']; // No exemplo, retornará o valor item2

Como imprimir o conteúdo de um array em HTML utilizando PHP

Se você quiser ver o conteúdo de um array isso pode ser feito através do comando “print_r”, mas o conteúdo aparece sem formatação no HTML obrigando a visualizar o conteúdo do código fonte da página para visualizar a estrutura formatada do Array.

Mas é possível visualizar de forma direta, basta utilizar o código abaixo:

echo "<pre>".htmlentities( print_r($Array, true) )."</pre>";

O conteúdo do Array será visto como o exemplo abaixo, sem precisar apelar para o truque de visualizar o código fonte.

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 0
        )

    [1] => Array
        (
            [0] => 0
            [1] => 1
        )
)