Posts tagged: PHP

checklist de segurança no php

Ao configurar o php é necessário ter em atenção alguns aspectos de segurança.

; php.ini
allow_url_fopen = Off ; Disable URLs for file handling functions

register_globals = Off ; Make sure this hellish fiend is dead

open_basedir = /var/www/htdocs/files ; Restrict file handling functions to a subdirectory

safe_mode = Off ; Disable this, the next is often more practical
safe_mode_gid = On ; Enable safe mode with group check
safe_mode_exec_dir = /var/www/binaries ; Restrict execution functions to this directory
safe_mode_allowed_env_vars = PHP_ ; Restrict access to environment variables

max_execution_time = 30 ; Max script execution time
max_input_time = 60 ; Max time spent parsing inputs
memory_limit = 16M ; Max memory size used by one script
upload_max_filesize = 2M ; Max upload file size
post_max_size = 8M ; Max post size

display_errors = Off ; Do not show errors on screen

log_errors = On ; Log errors to log file

expose_php = Off ; Hide presence of PHP

# Apache configuration or .htaccess

Order allow,deny
Deny from all

sapo sessions php

sapoPHP

Ontem fui a assistir a uma sessão de php

Aqui fica um pequeno resumo da sessão :

Optimização de código

Usar sempre que possivel require_once em vez de include.

Nas strings usar o explode em vez do preg_split.

Usar arrays o php trabalha bem com arrays.

Evitar gravar as sessões e cookies em ficheiros, pois o acesso ao filesystem é sempre mais lento, de preferência utilizar o memcached.

Reduzir ciclos, querys , stats, remote resquests.

Não misturar HTML no meio da lógica . HTML Deve ser HTML.

Evitar as mensagens de erro do php, warnings, notices pois se aparecem é má programação.

<– Apache –>

Directory index

Se o nosso ficheiro de index é index.php deve estar logo na 1ª linha do directory index.

A maior parte dos casos temos.. index.html,index.js, index.asp, index.htm e só no fim é que aparece o index.php

.htaccess

Se não estamos a utilizar ficheiros .htaccess desligar o mesmo do apache.

Evitar os symlinks.

Novidades do PHP 5

Namespace

Reflection

Late Static Binding

Interface

Final Class

anonymous function

clone

SPL – Standard PHP library

SOLR

DATETIME

definir um date_default (sempre que se trabalha com datas)

Timezone

Memcache(d)

PECL

SQL – PDO

DataBase access layer

Simple XML

Webservices

O auth

SOAP

Streams

- Stream filters

-Stream contexts

-Stream erros

Magic quotes

Filter sanitize

Special chars

SuhosinPATH

desactivar CURL

desactivar remote links

Mail

Banir Ficheiros / binary

Zend server

Zend platform

Zend guard

Zend studio edit (debug)

APC (op code cache)

Strace

XDebug

Webgriad

Boas Práticas

Utilizar ficheiros de config, classes, definir sempre o time zone, classe debug, classe procedure, classe log, fire php.

Smarty Templates

Quem usa ?

Zend , xcart, xoops, open

Objectivo

Separar a lógica da apresentação

Estrutura de pastas do smarty
libs
templates
templates_c
cache

As smarty templates atenuam o cross site (XSS – injecção e colocação de exploits)

Frameworks php

Log4PHP

Como usar o smarty ?

download php 6

O php 6 sofreu alterações importantes a nível de segurança, que vem melhor em muito esta linguagem de programação, abaixo poderão ver a lista de alteraçoes. esta nova versão 6 só deve estar disponível no final do ano.

http://www.ibm.com/developerworks/opensource/library/os-php-future/?ca=dgr-lnxw01PHP-Future

Download php

30 dicas boas para quem se está a iniciar no PHP

30 dicas boas para quem se está a iniciar no php.

http://net.tutsplus.com/tutorials/php/30-php-best-practices-for-beginners/

ligar postgres com PHP

Arquivos de Configuração

O postgres possui basicamente 2 arquivos de configurações responsáveis pela conexão, eles são:

  1. postgresql.conf aqui você precisa definir que o seu banco de dados irá receber conexão através de TCP/IP, até a versão 7.9 do postgres esta configuração era feita assim:
    tcpip_socket = true

    A partir da versão 8 isso é feito assim: listen_addresses = ‘*’ port = 5432

  2. pg_hba.conf este é o arquivo que define quem pode acessar o que e de qual forma: para permitir que qualquer IP possa acessar qualquer banco adicione esta linha no arquivo host    all          all         0.0.0.0 0.0.0.0       password Se quiser que apenas 1 IP específico possa acessar a máquina então host    all          all         200.200.200.200/32      password A palavra password define que para você acessar o banco tem que digitar a senha, existe a palavra trust que diz ao banco para nao pedir senha então tenha cuidado com este tipo de configuração

Após mexer nestes dois arquivos reinicie o banco. Para acessar o seu banco através do terminal use o comando: psql -h 200.200.200.200 -U postgres -d banco Fique atento aos firewall pois eles podem barrar a sua conexão com o banco, e mais uma dica para que a conexão possa ser estabelecida no CentOS é necessário desativar o SELinux, que por padrão na instalação fica ativado: vim /etc/sysconfig/selinux e configure  o SELINUX=disabled

Exemplo de Conexão PHP para Teste

try {
	$db = new PDO("pgsql:host=localhost dbname=datacentro user=postgres password=data1234");

	$sql = 'SELECT * FROM pessoa';
	foreach ($db->query($sql) as $row) {
		print $row['cod'] . "\t";
		print $row['nome'] . "\t";
	}

} catch (PDOException  $e) {
   print $e->getMessage();
}
die("fim");

Referência

http://battisti.etc.br/2009/09/28/postgres-permission-denied-is-server-running/http://www.cyberciti.biz/faq/postgresql-remote-access-or-connection/

http://dickrips.wordpress.com/2009/01/16/apache-php-postgresql-no-centos-e-fedora

Open cart php

OpenCart é uma platafroma de comércio online baseado em PHP. Esta plataforma suporta o sistema de “carrinho de compras” e permite a criação de uma solução de comércio eletrónico, ideal para pequenas empresas a um custo minimo.

opencart thumb OpenCart

Entre as suas caracteristicas mais interesasntes encontram-se a possibilidade de criar categorias, produtos e marcas, sem qualquer tipo de limite, o suporte a várias moedas, a possibilidade dos clientes inserirem reviews dos produtos, redimensionamento automático das imagens do produtos e o suporte a mais de 20 sistemas de pagamento.

A interface é agradavél e extremamamente intuitiva e o backoffice é bastante funcional.

Um demo deste serviço pode ser experimentado aqui, e o download está disponivel aqui.

Fonte :

Nélson Silva escreve no PL todas as quintas um artigo sobre OpenWeb. Podem encontrar mais artigos como este no seu blog pessoal.

Open web tools mozilla labs

A mozilla labs criou um directório, onde podem ser encontradas de uma forma simples e rápida várias “ferramentas” para programadores, tentaram reunir numa só página algumas das ferramentas conhecidas dos programadores.

http://tools.mozilla.com/

E claro tudo ferramentas opensource.

A página ainda dispõem de um formulário de pesquisa, muito útil caso queiram pesquisar só pelo design , código etc..

Manual AJax e PHP

AJAX & PHP

Manual de PHP

  1. http://battisti.wordpress.com/2007/03/10/apostila-de-php/

Manual de AJAX

  1. http://battisti.wordpress.com/2007/08/17/apostila-de-ajax-epac-conged/
  2. http://battisti.wordpress.com/2007/05/09/apostila-de-ajax/


Download PHP 5.3.0 já saiu

elephpant-elephant-php-logo

Foi lançada a versão 5.3.0 do PHP. Segundo a equipa de desenvolvimento, esta foi a maior implementação das versões série 5. Ela traz, além de várias novidades, uma porção de bugs foram corrigidos (mais de 140…).

Algumas novidades em destaque, são:

Namespaces

“Namespace” é um conceito amplamente utilizado em várias áreas da informática.
Imaginem um sistema operativo com dois arquivos com o mesmo nome. Como eles não podem estar dentro da mesma pasta, certo? Sendo assim, criamos links de pastas diferentes para cada um deles.
No PHP seria como criar variáveis dentro de namespaces.

Qualquer código PHP pode ser colocado em namespaces, mas apenas três tipos de código (Class, Funções e Constantes) são afectados por elas.

A utilidade disso é evitar problemas com nomes de variáveis do sistema ou de programas feitos por terceiros. Também evita ter que criar nomes longos para os objectos para impedir que não haja conflitos com outros objectos do mesmo nome.

Assim como outras funções do PHP (como a header() por exemplo), os namespaces devem ser definidos antes de qualquer echo ou print.

Existem dois tipos de namespaces: os namespaces comuns e os sub-namespaces. Veja um exemplo de declaração de namespaces:
Late StaticBinding

Outra novidade é a implementação do conceito de “Late Static Binding”. Usando Late Statics Bindings, a resolução de métodos não é feito na classe onde ele foi criado, mas sim de forma hierárquica, seguindo a ordem de execução. Para entender melhor, veja o exemplo comparativo entre a implementação que tínhamos, e a nova possibilidade:

Agora com Static Bindings temos:
GC (Garbage Colector)

Agora é possível armazenar o resultado de variáveis em cache. Desta forma, mesmo que o estado de sua variável mude, é possível recuperar um valor anterior. Veja o exemplo de uso:

gc_enable (); // activa o cache que irá guardar os resultados

$valor = ‘Primeiro valor’;
echo $valor. ‘‘;
$valor = ‘Segundo valor’;
echo $valor. ‘‘;

$anteriores = gc_collect_cycles(); // apanha os valores anteriores em cache

$valor = $anteriores ['valor'] [0]; // apanha a posicao 0 da posicao de nome ‘valor’

gc_disable($anteriores); // limpa os valores apanhados e desaloca da memoria

echo $valor . ‘‘;

/*
Esse script irah retornar:

Primeiro valor
Segundo valor
Primeiro valor
*/

?>

Funções Anônimas

Funções Anônimas permitem criar funções sem um nome específico. Elas são muito úteis quando usadas como parâmetros de funções de callback (como preg_replace_callback), mas podem ter vários outras utilidades. Veja um exemplo:

Além dessas novas funções, existem alterações nos drives de ligação com o MySQL, alterações de comportamento em funções já amplamente utilizadas como a função session(), md5(), opendir().

Link para download : http://php.net/downloads.php

Fonte: http://samuelcorradi.com.br

jCarousel

Riding carousels with jQuery

Author: Jan Sorgalla
Version: 0.2.3 (Changelog)
Download: jcarousel.tar.gz or jcarousel.zip
Licence: MIT and GPL
Documentation: http://sorgalla.com/projects/jcarousel/

jCarousel is a jQuery plugin for controlling a list of items in horizontal or vertical order. The items, which can be static HTML content or loaded with (or without) AJAX, can be scrolled back and forth (with or without animation).

Examples

The following examples illustrate the possibilities of jCarousel:

WordPress Themes