0

Notificações de desktop no Chrome com Javascript

1º Criamos a div que executará a função ao clicar

<div style="width: 293px;height: 18px;background: rgba(0, 255, 78, 0.4);padding: 10px 12px;border-radius: 14px;color: #FFF;" onclick="notify()">CLIQUE PARA EXIBIR A NOTIFICAÇÃO
</div>

2º Criamos a função javascript

function notify() {
    Notification.requestPermission(function() {
        var notification = new Notification("Bem Vindo", {
            icon: 'www.thiagocarlos.com.br/assets/images/logo.png',
            body: "Acesse meu site!"
        });
        notification.onclick = function() {
            window.open("http://thiagocarlos.com.br");
        }
    });
}  

isso é tudo.

0

Rastreando os visitantes do site

[site]

1º- Javascript que faz as requisições Ajax para a captura
e inserção dos dados.

/*A o  carregar a pagina chamo a função que captura os dados do visitante*/
$(document).ready(function() {
    localizarUsuario();  
});

/*Função que pega as coordenadas do local do visitante*/
function localizarUsuario(){
  if (window.navigator && window.navigator.geolocation) {
   var geolocation = window.navigator.geolocation;
   geolocation.getCurrentPosition(sucesso, erro);
  } else {
     alert('Geolocalização não suportada em seu navegador.')
  }
 
  function sucesso(posicao){
    var latitude = posicao.coords.latitude;
    var longitude = posicao.coords.longitude;

    /*Chamo a função que faz a requisição para a inserção*/
    cadastra(latitude, longitude);
  }
  function erro(error){
    console.log(error)
  }
}
/*Função  Ajax que faz o post para a action do código a seguir*/
function cadastra(latitude, longitude) {
    $.ajax({
        url: '/index/ajax-map',
        type: 'POST',
        dataType: 'JSON',
        data: {
           latitude: latitude,
           longitude: longitude
        },
        success: function(data) {
           // alert('salvo');
          
        }
    });
}

2º- Código PHP que faz a inserção dos registros na base de dados*/


/*Action que recupera os registros do post via Ajax*/
public function ajaxMapAction() {
        /* Crio a sessão de acesso do usuário para não inserir dados duplicados */
        $acesso = new Zend_Session_Namespace("acesso");

        /*Instancio a Model*/
        $ModelAcessos = new Admin_Model_Acessos();
        
        /*Verifico se já foi inserido*/
        if ($acesso->ip == '') {

            /*Recupero os dados do POST*/
            $data = $this->_request->getPost();
            $ModelAcessos->insert($data);
        }
        die('inserido');
    }

[admin]

3º- Depois da inserção na base dados, Trabalho com os códigos a seguir para fazer
a listagem e rastreio dos dados na área administrativa do site.

/*Javascript responsável de rastrear os acesso* como: Latitude e Longitude*/
$(function () {
    /*A o clicar no botão rastrear executo as seguintes funções*/
    $(".rastrear").click(function () {
        var latitude = $(this).attr('latitude');
        var longitude = $(this).attr('longitude');

        function success(position) {

            var s = document.querySelector('#status');

            s.innerHTML = "Rastreado com Sucesso!";
            s.className = 'success';

            var mapcanvas = document.createElement('div');
            mapcanvas.id = 'mapcanvas';
            mapcanvas.style.height = '400px';
            mapcanvas.style.width = '560px';

            document.querySelector('article').appendChild(mapcanvas);

            var latlng = new google.maps.LatLng(latitude, longitude);

            var myOptions = {
                zoom: 15,
                center: latlng,
                mapTypeControl: false,
                navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };

            var map = new google.maps.Map(document.getElementById("mapcanvas"), myOptions);
            var marker = new google.maps.Marker({
                position: latlng,
                map: map,
                title: "Você está aqui!"
            });

        }

        function error(msg) {
            var s = document.querySelector('#status');
            s.innerHTML = typeof msg == 'string' ? msg : "falhou";
            s.className = 'fail';
        }

        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(success, error);
        } else {
            error('Seu navegador não suporta <b style="color:black;background-color:#ffff66">Geolocalização</b>!');
        }
    });
});


/*Html da lista de registros de acessos*/
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript" src="js/maps.js"></script>

<div class="row">
 <div class="col-md-12">
 <!-- Advanced Tables -->
 <div class="panel panel-default">
 <div class="panel-heading">
 Acessos
 </div>
 <div class="panel-body">
 <div class="table-responsive">
 <table class="table">
 <thead>
 <tr>
 <th>S.O</th>
 <th>Navegador</th>
 <th>Latitude</th>
 <th>Longitude</th>
 <th>IP</th>
 <th>Data</th>
 <th>OPÇÕES</th>
 </tr>
 </thead>
 <tbody>
 <?php
 if ($this->acessos) {
 foreach ($this->acessos as $row) {
 ?>
 <tr class="odd gradeX">
 <td><?= $row['sistema_operacional']; ?></td>
 <td><?= $row['navegador']; ?></td>
 <td><?= $row['latitude']; ?></td>
 <td><?= $row['longitude']; ?></td>
 <td><?= $row['ip']; ?></td>
 <td><?=$this->ConvercaoDate('-', $row['data_acesso'],4); ?></td>
 <td>
 <button type="button" class="btn btn-success rastrear" data-toggle="modal" data-target="#myModal" latitude="<?= $row['latitude']; ?>" longitude="<?= $row['longitude']; ?>" style=" margin-bottom: 12px!important;">Rastrear</button>
 </td>
 </tr>
 <? }
 } else { ?>
 <tr>Não ha registros de acessos</tr>
<? } ?> 
 </tbody>
 </table>
 </div>

</div>
 </div>

 </div>

</div>

<!-- Modal  a onde será exibido o mapa da localidade do visitante-->
<div class="modal fade bs-example-modal-lg" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
 <div class="modal-dialog">
 <div class="modal-content">
 <div class="modal-header">
 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
 <h4 class="modal-title" id="myModalLabel">Mapa</h4>

</div>
 <div class="modal-body"> 
 <article>
 <p><span id="status">Por favor aguarde enquanto nós tentamos locar você...</span></p>
 </article>
 </div>
 <div class="modal-footer">
 <button type="button" class="btn btn-success pull-right" data-dismiss="modal">Fechar</button>
 </div>
 </div>
 </div>
</div>



0

Como funciona o php.ini em clientes de hospedagem

O php.ini é recursivo, isto é, ele atua no diretório em que foi colocado e em todas os diretórios abaixo dele.
E o diretório abaixo dele que tiver um outro php.ini alterando a mesma configuração, prevalecerá, nesse novo diretório, o php.ini mais perto dele.
Quando o servidor está rodando o PHP como módulo (phpsuexec), uma configuração feita no .htaccess ao invés de no php.ini resultará no erro 500 (error 500, internal server error).
Esse tutorial pretende ajudar os usuários de hospedagem a configurar suas contas. Não iremos tratar nesse artigo a configuração do “php.ini” no servidor de hospedagem (aquele que configura todas as contas de hospedagem nele instaladas).
“On” tem o mesmo significa de “True” ou “1″. “Off” tem o mesmo significado de “False” ou “0″.
Existem diversas opções que podem ser configuradas no php.ini, então listarei aqui as mais utilizadas:

engine = On
Ativa o PHP na conta.
memory_limit = 128M
Define um limite de memória virtual para os scripts de uma conta. Neste caso, coloca o limite em 128MB (o ideal é não colocar mais que 64M).
register_globals = On
Ativa o register_globals.
Atenção: É recomendado, por questão de segurança, deixa-lo desativado por padrão no servidor. Em pouquíssimos casos é necessário ativá-lo, e em geral apenas em contas específicas.
file_uploads = On
Ativa o envio de arquivos através do protocolo HTTP (em geral esta opção já é padrão nos servidores de hospedagem).
upload_max_filesize = 10M
Aumenta o limite de envio do arquivo por upload via HTTP para 10Mb. O limite configurado pelo usuário não funcionará se for maior que o configurado pelo servidor.
post_max_size = 10M
Aumenta o limite de envio do arquivo por upload via HTTP pelo método POST para 10Mb. O limite configurado pelo usuário não funcionará se for maior que o permitido no servidor e maior que o upload_max_filesize.

0

Função para recuperar o id do video do youtube

Pegando o ID de um vídeo do youtube com PHP
Post rápido para deixar uma ótima função para recuperar o ID de um vídeo do Youtube.

Vamos usar este vídeo de exemplo

Para pegar apenas o ID vamos utilizar a seguinte função:

function YoutubeID($url)
{
    if(strlen($url) > 11)
    {
        if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match)) 
        {
            return $match[1];
        }
        else
            return false;
    }
    return $url;
}

0

Função que lê arquivo .TXT

public function LerArquivoClientes($arquivo) {

        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
        $viewRenderer->init();
        // Atribuo os Helper de Visão para  $this->view
        $this->view = $viewRenderer->view;

        //cria um array que receberá os dados importados do arquivo txt
        $arquivoArr = array();
      
        $nome_antigo = explode('/', $arquivo);
        $nome_atual = explode('.', $nome_antigo[2]);

        if ($nome_atual[1] != 'txt') {
            $novoNome = 'arquivos/clientes/' . $nome_atual[0] . '.txt';
            
            rename($arquivo, $novoNome);
          
        }else{
            $novoNome = $arquivo;
        }

        //aqui é enviado para função fopen o endereço do arquivo e a instrução 'r' que indica 'somente leitura' e coloca o ponteiro no começo do arquivo
        $arq = fopen($novoNome, 'r');

        //variável armazena o total de linhas importadas
        $total_linhas_importadas = 0;

        //a função feof retorna true (verdadeiro) se o ponteiro estiver no fim do arquivo aberto
        //a negação do retorno de feof indicada pelo caracter "!" do lado esquerdo da função faz com 
        //que o laço percorra todas as linhas do arquivo até fim do arquivo (eof - end of file)
        while (!feof($arq)) {

            //retorna a linha do ponteiro do arquivo                        
            $conteudo = fgets($arq);

            //transforma a linha do ponteiro em uma matriz de string, cada uma como substring de string formada a partir do caracter ';'
            $linha = explode(';', $conteudo);

            //array recebe as substring contidas na matriz carregada na variável $linha 
            $arquivoArr[$total_linhas_importadas] = $linha;

            //incremente a variável que armazena o total de linhas importadas
            $total_linhas_importadas++;
        }


        $keys = array(
            'id',
            'nome_abreviado',
            'nome', 
            'tipo_cad',
            'doc1',
            'doc2',
            'doc3',
            'logradouro',
            'pais',
            'bairro',
            'cep',
            'cidade',
            'estado',
            'logradouro_cobranca',
            'pais_cobranca',
            'bairro_cobranca',
            'cep_cobranca',
            'cidade_cobranca',
            'estado_cobranca',
            'telefone1',
            'telefone2',
            'email1',
            'email2',
            'data_cadastro');



        $arr = array();
        foreach ($arquivoArr as $key => $linha):

            if ($key > 0) {
                $total = count($linha);
                $posicao = $total - 1;
                unset($linha[$posicao]);
                
                if(count($keys) == count($linha)){
                $dados[$key] = array_combine($keys, $linha);
                }
            }

        endforeach;

        $data = array();
        foreach ($dados as $indice => $row) {
            $data[$indice]['id'] = $row['id'];
            $data[$indice]['nome_abreviado'] = $row['nome_abreviado'];
            $data[$indice]['nome'] = $row['nome'];
            $data[$indice]['tipo_cad'] = $row['tipo_cad'];
            $data[$indice]['doc1'] = $row['doc1'];
            $data[$indice]['doc2'] = $row['doc2'];
            $data[$indice]['doc3'] = $row['doc3'];


            for ($i = 0; $i <= 1; $i++) {
                if ($i == 0) {
                    $data[$indice]['enderecos'][$i]['logradouro'] = $row['logradouro'];
                    $data[$indice]['enderecos'][$i]['pais'] = $row['pais'];
                    $data[$indice]['enderecos'][$i]['bairro'] = $row['bairro'];
                    $data[$indice]['enderecos'][$i]['cep'] = $row['cep'];
                    $data[$indice]['enderecos'][$i]['cidade'] = $row['cidade'];
                    $data[$indice]['enderecos'][$i]['estado'] = $row['estado'];
                    $data[$indice]['enderecos'][$i]['cobranca'] = '0';
                    $data[$indice]['contatos'][$i]['telefone'] = $row['telefone1'];
                    $data[$indice]['emails'][$i]['email'] = $row['email1'];
                    $data[$indice]['emails'][$i]['senha'] = trim(substr($row['doc1'], 0, 4));
                } else {
                    $data[$indice]['enderecos'][$i]['logradouro'] = $row['logradouro_cobranca'];
                    $data[$indice]['enderecos'][$i]['pais'] = $row['pais_cobranca'];
                    $data[$indice]['enderecos'][$i]['bairro'] = $row['bairro_cobranca'];
                    $data[$indice]['enderecos'][$i]['cep'] = $row['cep_cobranca'];
                    $data[$indice]['enderecos'][$i]['cidade'] = $row['cidade_cobranca'];
                    $data[$indice]['enderecos'][$i]['estado'] = $row['estado_cobranca'];
                    $data[$indice]['enderecos'][$i]['cobranca'] = '1';
                    $data[$indice]['contatos'][$i]['telefone'] = $row['telefone2'];
                    $data[$indice]['emails'][$i]['email'] = $row['email2'];
                    $data[$indice]['emails'][$i]['senha'] = trim(substr($row['doc1'], 0, 4));
                }
            }
                    $data[$indice]['data_cadastro'] = $row['data_cadastro'];
        }
        
        return $data;
    }