Mostrando postagens com marcador PHP. Mostrar todas as postagens
Mostrando postagens com marcador PHP. Mostrar todas as postagens
Inovação x necessidade: qual o custo?
Tags:
Informática,
Internet,
PHP,
Programação,
Tecnologia da Informação (TI),
Web Development,
Zend Framework
Publicado: sábado, 4 de janeiro de 2014 às 08:30
Permalink:
Copiar
Link copiado para a área de transferência!
Houve um erro ao copiar o link para a área de transferência.
Upload progress bar com PHP 5.4
A versão 5.4 do PHP traz inúmeras atualizações e novas características, e dentre elas, está a possibilidade de monitorar o progresso do upload de arquivos via formulários, que antes só era possível mediante instalação de componentes PECL ou aplicando patches no código-fonte do PHP antes de compilá-lo.
Para implementar uma barra de progresso que mostrará ao usuário as informações do upload depois que o formulário teve seu envio disparado, fiz algum código para exemplificar o processo. O código foi feito a partir de uma instalação "limpa" do Apache e do PHP.
upload.php (este é o arquivo que contém o formulário e as declarações de CSS e JavaScript necessárias, que podem estar em arquivos separados e chamados via SRC e HREF)
upload_progress_status.php (este é o arquivo que retornará ao JavaScript as informações do progresso do upload)
Você pode customizar os arquivos, adicionando estilos CSS, eventos JavaScript, valores de retorno JSON, enfim, o que sua criatividade e necessidade exigirem. O essencial está na variável de sessão que está declarada no arquivo upload.php e no campo hidden declarado no formulário. São eles que tornam possível o monitoramento do progresso do upload no PHP 5.4.0 ou superior.
Se você fizer uma consulta às configurações do PHP, verá que existem as novas session.upload_progress.enabled, session.upload_progress.cleanup, session.upload_progress.prefix, session.upload_progress.name, session.upload_progress.freq e session.upload_progress.min_freq. Estas variáveis definem o comportamento do PHP no momento da detecção e atualização das informações dos uploads de arquivos.
Para implementar uma barra de progresso que mostrará ao usuário as informações do upload depois que o formulário teve seu envio disparado, fiz algum código para exemplificar o processo. O código foi feito a partir de uma instalação "limpa" do Apache e do PHP.
upload.php (este é o arquivo que contém o formulário e as declarações de CSS e JavaScript necessárias, que podem estar em arquivos separados e chamados via SRC e HREF)
<?php
$is_PHP54_installed = ($x = @ini_get('session.upload_progress.name'));
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP 5.4 Upload Progress Bar Demo<?php echo (!$is_PHP54_installed ? ' (will not working, installed PHP version is ' . phpversion() . ')' : '') ?></title>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<style type="text/css">
#upload_progress_status {
display: none;
width: 50%;
margin: 20px 0px 0px 0px;
overflow: hidden;
}
#upload_progress_status .bar,
#upload_progress_status .bar .progress {
display: block;
line-height: 20px;
overflow: hidden;
}
#upload_progress_status .bar {
border: 1px solid #000;
}
#upload_progress_status .bar .progress {
width: 0%;
background-color: #000;
color: #fff;
font-size: 12px;
font-weight: bolder;
text-align: center;
}
#form {
display: block;
}
#loading {
display: none;
}
</style>
<script type="text/javascript">
<!--
$j = jQuery;
upload_progress_status_timer = <?php echo (int)(@ini_get('session.upload_progress.min_freq')) * 1000 ?>;
upload_progress_status_load = function () {
try { upload_progress_status_load_XMLHTTP.abort(); } catch (e) {}
upload_progress_status_load_XMLHTTP = $j.ajax ({ url: "upload_progress_status.php",
dataType: "json",
error: function () {
setTimeout(function () { upload_progress_status_load(); }, upload_progress_status_timer);
},
success: function (info) {
var ups = $j("#upload_progress_status"),
bu = $j("#upload_progress_status .bytes_processed"),
cl = $j("#upload_progress_status .content_length"),
et = $j("#upload_progress_status .elapsed_time"),
pbp = $j("#upload_progress_status .bar .progress");
if (info != null) {
ups.show();
bu.html(info.bytes_processed_human);
cl.html(info.content_length_human);
et.html(info.elapsed_time_human);
pbp.stop().animate({ width: info.uploaded }, upload_progress_status_timer).html(info.uploaded);
if (!info.done) setTimeout(function () { upload_progress_status_load(); }, upload_progress_status_timer);
else ups.hide();
}
}
});
}
form_loading = function () {
$j("#form").hide();
$j("#loading").show();
}
-->
</script>
</head>
<body>
<div id="form">
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data"<?php if ($is_PHP54_installed) { ?> onsubmit="form_loading(); upload_progress_status_load()"<?php } ?>><?php
if ($is_PHP54_installed) { ?><input type="hidden" name="<?php echo $x ?>" value="demo" /><?php }
for ($k=0; $k<=4; $k ) {
?>File <?php echo $k 1 ?>: <input type="file" name="files[<?php echo $k ?>]" size="30" /><br/><?php
}
?><input type="submit" value="Send files" />
</form>
<?php if (count($_FILES)) echo '<pre>' . print_r($_FILES, true) . '</pre>' ?>
</div>
<div id="loading">Sending...</div>
<div id="upload_progress_status">
<div class="bar"><div class="progress">0%</div></div>
<span class="bytes_processed">0</span> of <span class="content_length">0</span><br/>
<span class="elapsed_time">00:00</span> elapsed time
</div>
</body>
</html>
upload_progress_status.php (este é o arquivo que retornará ao JavaScript as informações do progresso do upload)
<?phpAcrescentei alguns itens no array de informações, que originalmente não existem nas que o PHP cria, como o cronômetro do upload, as informações de tamanho total e já enviado em um formato mais legível, e a porcentagem do total de dados já enviados.
@session_start();
function get_user_readable_filesize ($fs) {
$fsl = array('bytes', 'KB', 'MB', 'GB', 'PB', 'YB');
$y = 0;
while ($fs >= 1024) {
$fs /= 1024;
$y ;
}
return number_format($fs, $y ? 2 : 0, '.', '') . ' ' . $fsl[$y];
}
if (($info = @$_SESSION[ini_get('session.upload_progress.prefix') . 'demo'])) {
$info['content_length_human'] = get_user_readable_filesize($info['content_length']);
$info['bytes_processed_human'] = get_user_readable_filesize($info['bytes_processed']);
$info['elapsed_time'] = time() - $info['start_time'];
$info['elapsed_time_human'] = sprintf('%02d', (int)($info['elapsed_time'] / 60)) . ':' . sprintf('%02d', (int)($info['elapsed_time'] % 60));
$info['uploaded'] = number_format(($info['bytes_processed'] * 100 / $info['content_length']), 2, '.', '') . '%';
$x = $info['files'];
unset($info['files']);
$info['files'] = $x;
}
echo @json_encode($info);
?>
Você pode customizar os arquivos, adicionando estilos CSS, eventos JavaScript, valores de retorno JSON, enfim, o que sua criatividade e necessidade exigirem. O essencial está na variável de sessão que está declarada no arquivo upload.php e no campo hidden declarado no formulário. São eles que tornam possível o monitoramento do progresso do upload no PHP 5.4.0 ou superior.
Tags:
Internet,
PHP,
Programação,
Web Development
Publicado: quarta-feira, 7 de março de 2012 às 12:30
Permalink:
Copiar
Link copiado para a área de transferência!
Houve um erro ao copiar o link para a área de transferência.
Como verificar se a pessoa curtiu sua fan page no Facebook
Se você já reparou que há fan pages no Facebook que permitem o acesso a certos conteúdos somente para quem clicou no botão "curtir" da página, mas sempre quis implementar isso nas suas páginas, pois saiba que este é um processo bem simples.
O Facebook envia a você um cabeçalho chamado "signed_request", que é codificado em base64. O que é preciso fazer é decodificar este string, e a função abaixo faz o processo.
Depois, em qualquer lugar do código HTML da sua página, execute o seguinte condicional abaixo. Dentro do if e do else, exerça sua criatividade, mostrando ou ocultando o que você quiser aos fãs, ou que ainda não são fãs, de sua página.
O Facebook envia a você um cabeçalho chamado "signed_request", que é codificado em base64. O que é preciso fazer é decodificar este string, e a função abaixo faz o processo.
function parsePageSignedRequest() { if (isset($_REQUEST['signed_request'])) { $encoded_sig = null; $payload = null; list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2); $sig = base64_decode(strtr($encoded_sig, '-_', '+/')); $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true)); return $data; } return false; }
Depois, em qualquer lugar do código HTML da sua página, execute o seguinte condicional abaixo. Dentro do if e do else, exerça sua criatividade, mostrando ou ocultando o que você quiser aos fãs, ou que ainda não são fãs, de sua página.
if (($signed_request = parsePageSignedRequest())) { if ($signed_request->page->liked) { echo "Obrigado por curtir nossa página! Receba informações exclusivas através do Facebook!"; } else { echo 'Curta nossa página para receber informações exclusivas!'; } }
Tags:
Internet,
PHP,
Programação,
Redes Sociais,
Web Development
Publicado: terça-feira, 29 de novembro de 2011 às 07:30
Permalink:
Copiar
Link copiado para a área de transferência!
Houve um erro ao copiar o link para a área de transferência.
is_utf8 - Como verificar se um string está codificado em UTF-8
Quando você usa uma mescla de arquivos PHP com envios de formulários usando jQuery.ajax(), é quase impossível precisar quando o envio dos dados é feito pelo usuário através do submit normal da tag FORM ou se vem através do JavaScript.
Como o jQuery converte os dados do formulário para o formato UTF-8 antes de enviá-los, é necessário usar a função utf8_decode para utilizar os dados do formulário enviados.
Como, às vezes, pode haver arrays extensos, com muitos itens e índices, há duas funções interessantes para resolver esse problema, e são a solução para muitas dores de cabeça.
Como o jQuery converte os dados do formulário para o formato UTF-8 antes de enviá-los, é necessário usar a função utf8_decode para utilizar os dados do formulário enviados.
Como, às vezes, pode haver arrays extensos, com muitos itens e índices, há duas funções interessantes para resolver esse problema, e são a solução para muitas dores de cabeça.
function is_utf8 ($str) { $len = strlen($str); for ($i=0; $i<$len; $i++){ $c = ord($str[$i]); if ($c > 128) { if ($c > 247) return false; elseif ($c > 239) $bytes = 4; elseif ($c > 223) $bytes = 3; elseif ($c > 191) $bytes = 2; else return false; if (($i + $bytes) > $len) return false; while ($bytes > 1) { $i++; $b = ord($str[$i]); if ($b < 128 || $b > 191) return false; $bytes--; } } } return true; } function array_utf8_decode ($a) { foreach ($a as $k => $v) { $a[$k] = is_array($v) ? array_utf8_decode($v) : (is_string($v) && is_utf8($v) ? utf8_decode($v) : $v); } return $a; } $_POST = array_utf8_decode($_POST); $_GET = array_utf8_decode($_GET);
Tags:
Informática,
Internet,
PHP,
Programação,
Web Development
Publicado: terça-feira, 8 de fevereiro de 2011 às 08:06
Permalink:
Copiar
Link copiado para a área de transferência!
Houve um erro ao copiar o link para a área de transferência.
Padrões e Metodologias em PHP?
Por que PHP não é a linguagem mais utilizada pelas corporações? Por que muitos desenvolvedores optam por outras linguagens ao invés de continuar ou utilizar PHP?
Questões como estas surgem todo dia, toda vez que alguém começa a programar em PHP. E talvez a resposta mais adequada seja a falta de um padrão, uma especificação forte em cima da linguagem.
PHP é responsável pelo surgimento dos CMS s mais usados no Brasil e no mundo, mas cada um cria seu padrão e alguns nem padrão se quer têm.
Mas o grande pecado do PHP realmente continua sendo uma falta de padrão. Nem precisamos falar da questão de compatibilidade total entre versões, isso não é perfeito em nenhuma linguagem. Mas se compararmos a versão do PHP4 com o PHP5, chegamos à clássica questão de configurar o httpd.conf para o php4 (porta 80) e criar um httpd5.conf para o php5 no apache, assim evitamos que seu site, blog, etc, saia do ar porque você usava a abertura de código
Cito esta porque é a clássica de todo código legado php4.
Claro que sou contra uma grande empresa ser a dona da linguagem, mas temos de admitir que a falta de um dono (livre ou não) gera uma falta de padrão.
Com o lançamento da versão 5.3, comecei a ouvir algumas questões de padronização e um grupo para tais questões se formando no horizonte.
Para efetivar uma melhora nos códigos em PHP, resolvi seguir Walker de Alencar Oliveira, que define no documento: PHP Coding Standards uma padronização para utilização do nosso código php. Siga também as dicas e tente manter-se atualizado e colaborativo.
iMasters
PHP Coding Standards
Blog do Walker de Alencar
Questões como estas surgem todo dia, toda vez que alguém começa a programar em PHP. E talvez a resposta mais adequada seja a falta de um padrão, uma especificação forte em cima da linguagem.
PHP é responsável pelo surgimento dos CMS s mais usados no Brasil e no mundo, mas cada um cria seu padrão e alguns nem padrão se quer têm.
Mas o grande pecado do PHP realmente continua sendo uma falta de padrão. Nem precisamos falar da questão de compatibilidade total entre versões, isso não é perfeito em nenhuma linguagem. Mas se compararmos a versão do PHP4 com o PHP5, chegamos à clássica questão de configurar o httpd.conf para o php4 (porta 80) e criar um httpd5.conf para o php5 no apache, assim evitamos que seu site, blog, etc, saia do ar porque você usava a abertura de código
Cito esta porque é a clássica de todo código legado php4.
Alguns puristas podem intervir e dizer que: Assim a linguagem é mais livre, tem maiores chances de crescimento, comunidade, e todas as velhas histórias que cansamos de ouvir em toda discussão.
Claro que sou contra uma grande empresa ser a dona da linguagem, mas temos de admitir que a falta de um dono (livre ou não) gera uma falta de padrão.
Com o lançamento da versão 5.3, comecei a ouvir algumas questões de padronização e um grupo para tais questões se formando no horizonte.
Para efetivar uma melhora nos códigos em PHP, resolvi seguir Walker de Alencar Oliveira, que define no documento: PHP Coding Standards uma padronização para utilização do nosso código php. Siga também as dicas e tente manter-se atualizado e colaborativo.
iMasters
PHP Coding Standards
Blog do Walker de Alencar
Tags:
Internet,
PHP,
Programação,
Web Development
Publicado: sexta-feira, 17 de julho de 2009 às 09:24
Permalink:
Copiar
Link copiado para a área de transferência!
Houve um erro ao copiar o link para a área de transferência.
Segurança com PHP
Tags:
Internet,
PHP,
Programação,
Web Development
Publicado: segunda-feira, 2 de fevereiro de 2009 às 10:39
Permalink:
Copiar
Link copiado para a área de transferência!
Houve um erro ao copiar o link para a área de transferência.
PHP não é coisa de moleque!
Tags:
Informática,
Internet,
PHP,
Programação,
Web Development
Publicado: segunda-feira, 12 de janeiro de 2009 às 07:47
Permalink:
Copiar
Link copiado para a área de transferência!
Houve um erro ao copiar o link para a área de transferência.
12 dicas para otimizar seus códigos PHP
É sempre útil ler algumas dicas rápidas para melhorar a sua codificação. Geralmente temos vícios que adquirimos no dia-a-dia que, sem sabermos, tornam o nosso código mais lento.
Seguem abaixo 12 dicas para melhorar o processamento dos seus códigos PHP.
1. Se um método pode ser static, declare-o como static! O desempenho aumenta 4 vezes;
2. Evite utilizar metódos mágicos como __get, __set e __autoload, se possível;
3. require_once() é dispensável e demanda bastante memória;
4. Use caminhos completos (full path) nos includes e requires, pois é gasto menos tempo resolvendo os caminhos do sistema operacional;
5. Se você quer descobrir o tempo em que o script começou a ser executado, é preferível utilizar $_SERVER[´REQUEST_TIME´] do que time();
6. Veja se pode utilizar strncasecmp, strpbrk e stripos ao invés de regex;
7. str_replace é mais rápido que preg_replace, mas strtr é 4 vezes mais rápido que str_replace;
8. Se uma função, como de substituição de strings, aceitar tanto arrays como caracteres simples como argumentos, e se a sua lista de argumentos não é muito longa, considere fazer algumas declarações redundantes de substituição, passando um caractere por vez, ao invés de uma linha de código que aceita arrays como argumentos de busca e substituição;
9. Supressão de erro com @ é muito lento;
10. $row[´id´] é 7 vezes mais rápido que $row[id];
11. Mensagens de erro demandam mais processamento;
12. Não utilize funções dentro de loops, como por exemplo: for ($x=0; $x < count($array); $x). A função count() é chamada todas as vezes que o loop é executado.
Fonte: iMasters
Seguem abaixo 12 dicas para melhorar o processamento dos seus códigos PHP.
1. Se um método pode ser static, declare-o como static! O desempenho aumenta 4 vezes;
2. Evite utilizar metódos mágicos como __get, __set e __autoload, se possível;
3. require_once() é dispensável e demanda bastante memória;
4. Use caminhos completos (full path) nos includes e requires, pois é gasto menos tempo resolvendo os caminhos do sistema operacional;
5. Se você quer descobrir o tempo em que o script começou a ser executado, é preferível utilizar $_SERVER[´REQUEST_TIME´] do que time();
6. Veja se pode utilizar strncasecmp, strpbrk e stripos ao invés de regex;
7. str_replace é mais rápido que preg_replace, mas strtr é 4 vezes mais rápido que str_replace;
8. Se uma função, como de substituição de strings, aceitar tanto arrays como caracteres simples como argumentos, e se a sua lista de argumentos não é muito longa, considere fazer algumas declarações redundantes de substituição, passando um caractere por vez, ao invés de uma linha de código que aceita arrays como argumentos de busca e substituição;
9. Supressão de erro com @ é muito lento;
10. $row[´id´] é 7 vezes mais rápido que $row[id];
11. Mensagens de erro demandam mais processamento;
12. Não utilize funções dentro de loops, como por exemplo: for ($x=0; $x < count($array); $x). A função count() é chamada todas as vezes que o loop é executado.
Fonte: iMasters
Tags:
Internet,
PHP,
Programação,
Web Development
Publicado: segunda-feira, 2 de junho de 2008 às 12:14
Permalink:
Copiar
Link copiado para a área de transferência!
Houve um erro ao copiar o link para a área de transferência.
PHP certification: is it worth it?
Excelente artigo de Manuel Lemos, mantenedor do site www.phpclasses.org.
http://www.phpclasses.org/blog/post/78-PHP-certification-is-it-worth-it.html
http://www.phpclasses.org/blog/post/78-PHP-certification-is-it-worth-it.html
Tags:
Certificações,
Internet,
PHP,
Programação,
Web Development
Publicado: terça-feira, 27 de maio de 2008 às 19:35
Permalink:
Copiar
Link copiado para a área de transferência!
Houve um erro ao copiar o link para a área de transferência.
Por que um designer deveria conhecer PHP?
Tags:
Internet,
PHP,
Programação,
Web Development
Publicado: quinta-feira, 15 de maio de 2008 às 12:16
Permalink:
Copiar
Link copiado para a área de transferência!
Houve um erro ao copiar o link para a área de transferência.
Assinar:
Postagens (Atom)