Gerador de Código PHP Versão 1.0.3.0

Prezados,

Disponibilizado no link www.ctasoftware.com.br/download/gerador_php.msi a nova versão do gerador de código php.

Principais mudanças:

  1. Validação se valor é nulo, antes da inserção na base de dados.
  2. Retornar o último ID incluído após a inclusão na base de dados.
  3. Correção de BUG ao tratar com muitas tabelas.

Obrigado.

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> MySQL, PHP | <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> , , | Leave a comment

Converter varchar em date no MySQL

Para converter um campo que está armazenando data, mas está como varchar no MySQL você poderá utilizar o código abaixo:

SELECT str_to_date(campo_data, ‘%d/%m/%Y’) AS campo_data FROM tabela ;

Dessa forma você conseguirá dar um select por ANO por exemplo:

SELECT str_to_date(campo_data, ‘%d/%m/%Y’) AS campo_data FROM tabela where YEAR(campo_data) = 2014;

Ou poderá ordenar por ANO

SELECT str_to_date(campo_data, ‘%d/%m/%Y’) AS campo_data FROM tabela where YEAR(campo_data) = 2014 ORDER BY campo_data;

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> MySQL | <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> | Leave a comment

SharePoint 2010 Pop-Up Dialogs

Boa noite,

Uma dúvida básica sobre o SharePoint 2010 enviada por usuário, irá esclarecer de alguns.

Como utilizar a modal pop-up do SharePoint para abrir uma página criada pelo usuário?

Basicamente poderemos chamar a função javascript javascript:OpenPopUpPage

Poderá ser chamada da seguinte forma: <a href=”javascript:OpenPopUpPage(‘/caminho/PaginaCustomizada.aspx’);“>Abrir Pop-up!</a>

Dessa forma estaremos utilizando a função nativa do SharePoint para abrir nossa modal.

Como melhoria e boa prática para indexação dos mecanismos de buscas, poderemos utilizar o JQuery para atribuir o javascript a todos os links de nossas páginas que contenha uma determinada class. Iria seguir o modelo:

Inserir o JQuery na sua biblioteca de JavaScript:

(function($){
  $.fn.sharePop = function(){
    if(typeof OpenPopUpPage == 'function'){
      return this.each(function(i){
        if($(this).attr('href') != null){
          $(this).click(function(e){
            e.preventDefault();
            OpenPopUpPage($(this).attr('href'));
          });
        }
      });
    }
    else{
      return false;
    }
  };
})(jQuery);

 

Adicionar uma class no link que deseja que abra na modal:

<a href="/path/to/content.aspx" class="popup-modal">View Content</a>

Adicionar o JQuery também na sua biblioteca:

$(document).ready(function(){
	$('.popup-modal').sharePop();
});

 

Dessa forma você utilizou a melhor prática de atribuir o javascript aos seus links.

Obrigado.

 

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> SharePoint | <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> , | Leave a comment

Bloquear ou desbloquear conjuntos de sites (SharePoint Foundation 2010)

Para bloquear ou desbloquear um conjunto de sites usando a Administração Central

  1. Verifique se você possui as seguintes credenciais administrativas.
    • Você deve ser um membro do grupo Administradores do Conjunto de Sites para a coleção site.
  2. Na Administração Central, clique em Gerenciamento de Aplicativos .
  3. Na página Gerenciamento de Aplicativos, na seção Conjuntos de Sites, clique em Configurar cotas e bloqueios.
  4. Se o conjunto de sites que você deseja não estiver selecionada, na seção do Site Collection, sobre a coleção de sites de menu, clique em Alterar Conjunto de Sites .Use a página Selecionar Conjunto de Sites para selecionar um conjunto de sites.
  5. No conjunto de sites Cotas e Bloqueios, na seção informação de bloqueio do site , selecione uma das seguintes opções:
    • Não bloqueado para desbloquear o conjunto de sites e torná-lo disponível para os usuários.
    • Adição de conteúdo impedida para impedir que os usuários adicionar novos conteúdos para a coleção site. Atualizações e exclusões ainda são permitidos.
    • Read-only (blocos de adições, atualizações e exclusões) para impedir que os usuários adicionar, atualizar ou apagar o conteúdo.
    • Sem acesso para impedir que usuários acessem a coleção site e seu conteúdo. Os usuários que tentarem acessar o site receberá um erro.
  6. Se você selecionar Adição de conteúdo impedida , Read-only (blocos de adições, atualizações e exclusões) , ou Sem acesso , digite uma razão para o bloqueio noInformações adicionais de bloqueio caixa.
  7. Clique em OK .
<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> SharePoint | <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> , | Leave a comment

Criar tabs automaticamente utilizando o Ajax e adicionar controles

Para criar Tabs automaticamente utilizando o AjaxToolkit podemos trabalhar da seguinte forma:

Adicione em sua página o controle ajax:

<asp:TabContainer ID=”TabContainer1″ runat=”server” ActiveTabIndex=”0″>
</asp:TabContainer>

Observe que nenhuma Tab foi criada até o momento. Vamos então ao nosso behind e adicionar o seguinte código, a título de teste será adicionado no page_load.

protected void Page_Load(object sender, EventArgs e)
{
AjaxControlToolkit.TabContainer containeres = (AjaxControlToolkit.TabContainer)TabContainer1;

for (int i= 0; i <= 5; i++)
{
AjaxControlToolkit.TabPanel tab = new AjaxControlToolkit.TabPanel();
tab.HeaderText = “NOVA TAB” + i;
tab.ID = “IDTABNOVA” + i;
containeres.Tabs.Add(tab);
}

}

Poderemos também adicionar controles as nossas Tabs dinâmicamente, para realizarmos isso poderemos utilizar o seguinte código

for (int ano = DateTime.Today.Year; ano >= 2008; ano–)
{
Label lbl = new Label();
lbl.ID = “IDLabel” + ano;
lbl.Text = “Ano: ” + ano;
AjaxControlToolkit.TabPanel tab = (AjaxControlToolkit.TabPanel)containeres.FindControl(string.Format(“IDTABNOVA{0}”, ano.ToString()));
tab.Controls.Add(lbl);
}

No exemplo a cima realizo a inclusão de um label nas Tab localizando através do ID atribuido as mesmas e adiciono um texto nessa label, neste caso adicionei o ano.

 

 

 

 

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> .NET | <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> , | Leave a comment

Listar Tabelas Banco de Dados SQL Server

Uma das dúvidas de quem trabalha com o SQL Server é “como listar todas as tabelas do banco?!” os desenvolvedores que utilizam o banco de dados MySQL tem o recurso SHOW Tables; que lista para o usuário todas as tabelas do banco.

No caso do SQL Server temos que realizar a consulta SELECT * FROM SYSOBJECTS WHERE XTYPE=’U’  onde serão listadas todas as tabelas e suas propriedades, caso queira buscar todas as procedures basta substituir o “U” pelo “P”, ficaria da seguinte forma SELECT * FROM SYSOBJECTS WHERE XTYPE=’P’.

Então é só =]

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> SQL | <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> , | Leave a comment

Utilizando PHP com OO

A grosso modo um dos grandes objetivos do conceito de orientação a objetos é a facilidade de desenvolvimento das aplicações e a capacidade de reutilizar o código criado, além de facilitar o acesso aos atributos e métodos.

Dentro do PHP temos os construtores e os destrutores, onde os construtores __construct() é uma função definida e que sempre vai ser executada quando o objeto for criado, já os destrutores __destruct() são chamados sempre que os objetos forem destruídos, pode ser utilizado por exemplo para fechar uma conexão com o banco de dados.

Temos também no PHP as visibilidades privatepublicprotected.

Vamos ao que interessa…

Vamos criar nossa primeira classe chamada “Carro”.

<?php

class Carro {

/*
* Declaração dos atributos
*/
private marca;
private cor;
private modelo;

/*
* Declaração dos Métodos
*/
public function getMarca(){

return $this->marca;

}

public function setMarca($marca){
$this->marca = $marca;
}

}

 

Sugiro que para fixar o aprendizado criem os demais métodos para os atributos declarados.

Até a próxima!!

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> PHP | <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> , , , | Leave a comment

Criar Tabelas Temporárias SQL Server

As vezes nos deparamos com a situação que devemos criar uma tabela temporária no SQL Server em seguida descartar.

Neste caso criamos a tabela da seguinte maneira

CREATE TABLE #NomeTabelaTemporaria(

campo1 INT NOT NULL;

campo2 VARCHAR(250) NULL;

);

Após a criação da tabela poderemos realizar nossas ações.

Vale a ressalva que essa tabela é criada dentro do contexto do usuário, ou seja, após a desconexão do mesmo a tabela será excluída do banco de dados.

Caso exista a necessidade de outro usuário acessar essa mesma tabela utilize o ##, neste caso será criada uma tabela temporária GLOBAL e todos os usuários terão acesso a mesma, quando a conexão do usuário que a criou for encerrada a tabela também será excluída.

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> SQL | <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> , | Leave a comment

Liberar Firewall para uso do SQL Server 2008 na Rede

Segue um script .bat para liberação do firewall do windows para utilização do SQL Server 2008 na rede, o post está um pouco atrasado, mas só bem recentemente vi a necessidade de utilizar e me vi “perdido” durante a liberação, além disso foi bem difícil de encontrar tal informação.

Espero que seja útil a todos assim como foi para mim.

PS: Script retirado do site da microsoft.

 

1 – Abra o bloco de notas e cole o script abaixo:

@echo ========= SQL Server Ports ===================
@echo Enabling SQLServer default instance port 1433
netsh firewall set portopening TCP 1433 “SQLServer”
@echo Enabling Dedicated Admin Connection port 1434
netsh firewall set portopening TCP 1434 “SQL Admin Connection”
@echo Enabling conventional SQL Server Service Broker port 4022
netsh firewall set portopening TCP 4022 “SQL Service Broker”
@echo Enabling Transact-SQL Debugger/RPC port 135
netsh firewall set portopening TCP 135 “SQL Debugger/RPC”
@echo ========= Analysis Services Ports ==============
@echo Enabling SSAS Default Instance port 2383
netsh firewall set portopening TCP 2383 “Analysis Services”
@echo Enabling SQL Server Browser Service port 2382
netsh firewall set portopening TCP 2382 “SQL Browser”
@echo ========= Misc Applications ==============
@echo Enabling HTTP port 80
netsh firewall set portopening TCP 80 “HTTP”
@echo Enabling SSL port 443
netsh firewall set portopening TCP 443 “SSL”
@echo Enabling port for SQL Server Browser Service’s ‘Browse’ Button
netsh firewall set portopening UDP 1434 “SQL Browser”
@echo Allowing multicast broadcast response on UDP (Browser Service Enumerations OK)
netsh firewall set multicastbroadcastresponse ENABLE

2 – Clique a opção Abrir > Salvar Como…

3 – Coloque o nome do arquivo (exemplo LiberarFirewall.bat) e na opção Tipo marque “All Files”

4 – Clique com o botão direito em cima do arquivo salvo e clique em “Executar como administrador”

 

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> SQL | <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> | Leave a comment

Evitar SQL Injection usando Prepared Statements no PHP

Venho postando uma série de informações relacionados a PDO e esclarecimentos sobre o uso do Prepared Statements, consequentemente recaímos sobre a prevenção de ataques de injeção SQL.

Muitos são os programadores que não tomam qualquer prevenção em suas aplicações ou sites para evitar ataques tão usuais e fáceis de se precaver, não se sabe se por preguiça, vicio ou falta de conhecimento, mas são práticas simples e que facilitam a vida do desenvolvedor, tanto em facilidade de desenvolvimento e leitura do código quanto em segurança da informação.

Para sermos específicos sobre o que seria um ataque de injeção SQL, experimente em uma aplicação que não utiliza o prepared statements a seguinte situação:

  1. Crie uma tela de autenticação do usuário;
  2. No seu formulário insira a seguinte instrução ‘ OR 1’

Observe que o valor recebido pelo servidor será SELECT * FROM tabela WHERE username = “” OR 1, como a expressão OR 1, representará sempre uma verdade (TRUE), o valor retornado será todos os usuários de seu banco de dados.
Observe uma segunda situação onde a instrução informada for igual a ‘; DELETE FROM tabela WHERE 1 OR username = ‘ realize o teste e verifique o resultado. É de imaginar que seria um grande delete em sua base de dados, correto?

Pois bem, vemos na internet inúmeras formas de tentar evitar esses tipos de ataque utilizando expressões regulares, funções enormes de validação, dentre outras alternativas, mas não vemos muitas pessoas se referindo ao Prepared Statements como uma poderosa arma contra esse tipo de ataque.

Mas o que é esse “Prepared Statements”?

São as conhecidas “consultas pré-prontas”, a diferença dessas consultas é que no lugar das variáveis você irá inserir os placeholders, marcador de lugar, normalmente representado por “?”, dessa maneira estaremos informando ao MySQL onde estarão cada informação.

Um exemplo básico de utilização do PDO:

// o método PDO::prepare() retorna um objeto da classe PDOStatement ou FALSE se ocorreu algum erro (neste caso use $pdo->errorInfo() para descobrir o que deu errado)

$stmt = $pdo->prepare(“SELECT * FROM tabela WHERE username = ?”);

// O método PDOStatement::bindValue() aceita como parâmetro a posição da interrogação e o valor a ser inserido na mesma

$stmt->bindValue(1, ‘ctasoftware’);

// executamos o statement
$stmt->execute();

// Com o método que segue poderemos pegar todos os valores retornados, a partir dele implementaremos nossa lógica para percorrer pegando todos os valores
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

Em suma, é possível evitar ataques, ter MAIOR PRODUTIVIDADE e segurança da informação, além disso já está comprovado que statements são executados mais rápidos que consultas normais.

Vamos criando mais posts explorando essa questão.

Vale a pesquisa no www.php.net sobre o assunto inclusive para abordar os métodos disponíveis.

<span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> MySQL, PHP | <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> , , , , | Leave a comment