Resolver problema do whm: Sorry, unable to use Package english. Verify that the Package exists and that you have not exceeded your reseller restrictions

Standard

Se você recebeu a mensagem:

Create a new Account

whmappname=’Account Creation’; if (clear_ui_status) { clear_ui_status(); }

Account Creation Status: failed (Sorry, unable to use Package english. Verify that the Package exists and that you have not exceeded your reseller restrictions.)

Sorry, unable to use Package english. Verify that the Package exists and that you have not exceeded your reseller restrictions.

Para resolver isto, caso o seu cliente de Revenda estiver tentando criar uma conta, mesmo tendo espaço e tráfego e não consiga, caso ele tente e esteja com o tema XBR, solicite para que mude o tema -> Versão para inglês e será sanado.

Enquanto isto, aguarde a correção por parte dos desenvolvedores.

Ajustando Charset na mão

Standard

Se você já não sabe o que fazer quanto ao charset, uma saída é criar um arquivo chamado php.ini e dentro dele colocar:

CharsetDisable = On
AddDefaultCharset = ISO-8859-1
#AddDefaultCharset = UTF-8

Isso, possivelmente resolverá

Error ASP 0178 (0x80070005) ao tentar enviar email com MailEnable Professional

Standard

Se você está recebendo esta mensagem de erro, mesmo seguindo os roteiros da MailEnable para o envio de mensagens – se o seu erro é exatamente a mensagem abaixo:

Error Type:
Server object, ASP 0178 (0x80070005)
The call to Server.CreateObject failed while checking permissions. Access is denied to this object.

Para resolver isto, você fará o seguinte:

1 -> Acesse o administrador do IIS em iniciar-> programas -> ferramentas administrativas -> IIS administrator, vá no virtual host deste domínio e procure o arquivo asp que envia o email. Nele, pressione com o botão direito em propriedades e na primeira opção (athentication…) clique em “edit”.
Quando a janela abrir, cole o nome do usuário (deve ser algo do tipo IUSR_nomedousuário).

2 -> Procure (caso tenha o plesk instalado) – c:\program files\swsoft\plesk\mail servers\mailenable\bin e atribua a permissão de ler e executar ao arquivo MEASP.DLL , sendo esta permissão para o usuário que você copiou.

Estudo sobre Arrays e Arrays Multidimensionais com Colchetes vazios

Standard

Bem, existe na Web uma infinidade de documentação sobre arrays, e quem sou eu para dizer que a minha é justamente a maior/melhor de todas. Mas já que o assunto é array em php, vamos fazer o seguinte então, vou dar uma explicação sobre arrays multidimensionais com colchetes vazios para você desenvolver com mais “potência” (lol):

Assim como em Javascript, você não precisa declarar que a variável é um
array. Você pode simplesmente chamá-lo colocando um valor…

por exemplo, em vez de dizer:

$a = array();
$a[0] = ‘teste’;

você pode digitar direto:
$a[0] = teste;

não vai ter problema nenhum…

Colocando “[ ]” sem valor, indica que você vai armazenar o valor em um novo
índice do array…
então:
$b[] = ‘oi’;
$b[] = ‘tudo bem’;

Seria o mesmo que armazenar “oi” em 0 e “tudo bem” em um…

Ainda que para muitos não seja tão claro… é mais prático que ficar
declarando um array ou mesmo chamando um array_push();

Outra coisa…
Você pode usar um sem-número de sub-arrays de uma só vez…

<?php
$visitante[][][][] = “teste”;
print_r($visitante);
?>

vai retornar:

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

É o tipo de coisa que os manuais não explicam!

Espero ter ajudado… e quero deixar aqui manifesta a minha alegria em poder
participar deste grupo.

Deixar claro que esta dica já foi repassada de um grande fera em php que eu conheci em um maillist, o o nome do cidadão é:

Thadeu A. Coelho de Paula – <thadeudepaula@gmail.com>

Preencher Select de datas com php – by Marquinho5

Standard

Preencher Select de datas com php


O tutorial de hoje mostra como fazer dinamicamente com php, 3 componentes do tipo select e preenche-los com dias, meses e anos. Deixando selecionada a data atual.

O código é bastante útil para evitar que tenhamos que cria-los e preenche-los.

Vamos ao código.

<?php

$dt_dia = date (”d”);
$dt_mes = date (”m”);
$dt_ano = date (”Y”);

$meses_nomes=Array(1=>”Janeiro”,”Fevereiro”,”Março”,”Abril”,”Maio”,”Junho”,”Julho”,”Agosto”,
“Setembro”,”Outubro”,”Novembro”,”Dezembro”);

echo “<select name=\”dia\”>\n”;
for ($contador=1; $contador <=31; $contador++)
{
if ($dt_dia==$contador)
{
echo “<option value=\””.$contador.”\” selected>”.$contador.”\n”;
}
else
{
echo “<option value=\””.$contador.”\”>”.$contador.”\n”;
}
}
echo “</select>\n”;

echo “<select name=\”mes\”>\n”;
for ($contador=1; $contador <=12; $contador++)
{
if ($st_mes==$contador)
{
echo “<option value=\””.$contador.”\” selected>”.$meses_nomes[$contador].”\n”;
}
else
{
echo “<option value=\””.$contador.”\”>”.$meses_nomes[$contador].”\n”;
}
}
echo “</select>\n”;

echo “<select name=\”year\”>\n”;
for ($contador=1980; $contador <=2010; $contador++)
{
if ($dt_ano==$contador)
{
echo “<option value=\””.$contador.”\” selected>”.$contador.”\n”;
}
else
{
echo “<option value=\””.$contador.”\”>”.$contador.”\n”;
}
}
echo “</select>\n”;
?>

PHP: Combatendo roubo de sessões

Standard

O roubo de sessões é, sem sombras de dúvidas, o tipo de ataque mais
comum às sessões. Da mesma maneira da fixação de sessão, se você
utiliza somente o session_start(), você está vulnerável, apesar deste
exploit não ser tão simples.

Ao invés de focar em como evitar que a identificação da sessão seja
capturada, vou focar em como evitar que a captura da id da sessão
traga problemas. O objetivo deste artigo é complicar ao máximo a
personificação, lembrando que cada complicação que aplicamos ao nosso
código aumenta a segurança e frusta o atacante. Para fazer isso, vamos
ver os passos necessários para roubar uma sessão. Em cada um dos
casos, vamos assumir que a identificação da sessão foi comprometida.

Com um mecanismo simples de sessão, apenas uma identificação da sessão
que seja válida é necessária. Neste caso, vamos melhorar nosso código
adicionando mais verificações através das requisições HTTP.

Lembre-se: Não é recomendável utilizar dados do nível do protocolo TCP/
IP (como o endereço IP), pois este protocolo não foi feito para
acomodar atividades no nível HTTP. Um único usuário pode ter diversos
endereços IP’s a cada requisição, assim como múltiplos usuários podem
ter o mesmo IP (um proxy, por exemplo).

Vamos lembrar uma típica requisição HTTP:

Código:

GET / HTTP/1.1 Host: uidroot.com User-Agent: Mozilla/5.0 Gecko/
20061010 Firefox/2.0 Accept: text/xml, image/png, image/jpeg, image/
gif, */* Cookie: PHPSESSID=1234

Apenas o cabeçalho Host é requerido pelo HTTP/1.1, logo, não é ideal
confiar nos outros dados. Entretanto, a única coisa que precisamos é
checar a consistência, porque queremos complicar a personificação sem
afetar os usuários legítimos, não é mesmo?!

Vamos imaginar que depois da requisição passada, vêm a seguinte
requisição, como um User-Agent diferente:

Código:

GET / HTTP/1.1 Host: uidroot.com User-Agent: Mozilla Compatible (MSIE
7) Accept: text/xml, image/png, image/jpeg, image/gif, */* Cookie:
PHPSESSID=1234

Veja que o cookie é o mesmo, mas devemos considerar esta requisição
como vindo do mesmo usuário?!

É MUITO improvável que o usuário mudaria o User-Agent entre
requisições, certo?! Vamos modificar nosso mecanismo de sessão para
fazer uma nova verificação:

Código:

<?php session_start(); if (isset($_SESSION[‘HTTP_USER

_AGENT’])) { if
($_SESSION[‘HTTP_USER_AGENT’] != md5($_SERVER[‘HTTP_USER_AGENT’]))
{ // O user_agent da requisição antiga não bate com o atual // Neste
ponto, é importante fazer novamente a autenticação do usuário //
pedindo seu login/senha exit; } } else { $_SESSION[‘HTTP_USER_AGENT’]
= md5($_SERVER[‘HTTP_USER_AGENT’]); } ?>

O código acima obriga o atacante a usar não apenas uma identificação
de sessão válida, mas também o user-agent correto. Isto complica um
pouco a vida do atacante e deixa a sessão um pouco mais segura.

Será que podemos melhorar o código?! Leve em consideração que o método
mais comum de obter os cookies é explorando falhas em um browser
vulnerável, como o Internet Explorer. Esses exploits geralmente
envolvem em redirecionar a vítima ao site do atacante, logo, o
atacante saberá qual o user-agent da vítima e poderá obtê-lo
corretamente e passar pela nossa verificação de user-agent.

Bom, imaginem se, além do md5 do user-agent, poderíamos passar mais
alguns pedaços de informação. Isto dificultaria e muito o nosso
potencial atacante. Temos que manter uma boa lógica para evitar que
usuários legítimos sejam afetados por verificações que sejam feitas de
maneira incorreta. Nosso objetivo é diminuir problemas e não aumentá-
los. Vamos escrever o seguinte código:

Página identifica.php

Código:

<?php session_start(); // Retira as variáveis da sessão. $_SESSION =
array(); //Destrói o cookie da sessão if
(isset($_COOKIE[session_name()])) { setcookie(session_name(), ”,
time()-42000, ‘/’); } // Destrói a sessão session_destroy(); //Inicia
uma nova sessão session_start(); $codigo =
$_SERVER[‘HTTP_USER_AGENT’]; $codigo .= ‘É com você Adeildo’; $digital
= md5($codigo); echo ‘<form action=”consulta.php?chk=’ . $digital . ‘”
method=”post”>’; //Seu formulario de autenticação ?>

Página consulta.php
Código:

<?php //Existe $_GET[‘chk’]? if(!isset($_GET[‘chk’]))
{ header(“Location:identifica.php”); die(); } $codigo =
$_SERVER[‘HTTP_USER_AGENT’]; $codigo .= ‘É com você Adeildo’; $digital
= md5($codigo); //O $_GET[‘chk’] bate com a id digital? if ($digital !
= $_GET[‘chk’]){ header(“Location:identifica.php”); die(); } //sessão
é válida session_start(); //Processa o resto do código ?>

Este código funciona assim:

O usuário normal faz login na página identifica.php e vai para
consulta.php

O atacante, de posse da id da sessão e user_agent, acessa direto a
página consulta.php, mas ele (assim esperamos) não tem o $_GET[‘chk’],
ou seja, a identificação virtual gerada unicamente na página de login
identifica.php. O código adicional “É com você Adeildo” não deve ser
divulgado, pois ele garante que o nosso md5() gerado seja único. Em
outras palavras, se o atacante tentar passar só o md5 do user-agent,
ele não conseguirá acesso, o md5 deve ser do user-agent + $codigo
secreto e não apenas do user-agent.

Existem ainda, muitas outras maneiras de melhorar o sistema de
sessões, mas isso depende da sua criatividade e do seu sistema de
sessões em si. Não se esqueça que o alvo são os atacantes e não os
usuários legítimos.

Ao pegar um exploit de sessão, nunca acuse o potencial atacante, mas
sim solicite a senha novamente. Se você pegar um usuário legítimo e
acusá-lo de algo que ele não fez, pode apostar, você terá que, além de
arrumar o sistema de sessão, dar uma boa explicação ao usuário (ou ao
seu chefe).

Como criar ciclos de pagamentos em php – pagamentos mensais, trimestrais e etc

Standard

Muitas pessoas que têm ganância não compartilham o que sabem e por isso acham-se “poderosos” em termos de programação. Hoje estive queimando as pestanas para entender como que podemos fazer para que seja criado um ciclo de pagamento, aonde as pessoas podem criar um pagamento mensal ou trimestral, visando preservar o vencimento. Vou postar um exemplo claro:

Suponhamos que a data do vencimento veio através de uma query no banco de dados,

$data[‘Vencimento’] = ‘2008-04-07’; #imaginemos que a data é um valor de uma query, e não este Declarado, um valor parecido com este (uma data)

$tipopg = 6; #6 por que um semestre é contido por 6 meses, pode ser 1, 3, 12 e etc…

list($ano, $mes, $dia) = explode(‘-‘, $data[‘Vencimento’], ‘3’); # aqui está a jogada, usamos list pois list Cria variáveis como se fossem arrays e usamos explode para “partir” a variável $data[‘Vencimento’] em três partes, no caso, como vencimento é composto por Ano-Mês-Dia, nós jogamos o primeiro valor (ano) na variável $ano, mês na variável mês e dia em $dia. O 3 no Explode serviu para Delimitar que nós só queríamos 3 valores do resultado de explode.

Se quisermos echoar para entender como ficou o resultado, segue abaixo:

echo “o dia eh $dia, o mes eh $mes e o ano eh $ano”;

Abaixo, a data do vencimento recebe sua configuração:

$datav=mktime(0,0,0,$mes,$dia,$ano); #foi gerada uma data com os dados…
MKTIME é uma função que obtém um timestamp Unix para uma data.

echo ‘<br>’.$datav; #exibir a data do vencimento…

$proximovenc = mktime(0,0,0,$mes+$tipopg,$dia,$ano); #Aqui nós matamos 2 coelhos com uma cajadada só!
Observe, não precisamos nos preocupar com o dia do próximo vencimento pois, com a variável $tipopg que contém o tipo de ciclo de pagamento (mensal, trimestral e etc) perceba que mesmo se o dia for 07/11/2008, ao receber 6 meses como $proximovenc, o valor é contabilizado pelo mktime que recebe o timestamp, ou seja, isto resultará em -> 07/05/2009.
echo ‘data atual’.'<br>’.date(‘d/m/Y’,$datav).’ ,proximo vencimento ‘.date(‘d/m/Y’,$proximovenc);

Observe que utilizamos date seguido de variáveis (como argumentos) que contém o timestamp ajustado com o dia do vencimento atual e no segundo caso com o dia do vencimento ajustado para outros meses a frente.

Bem, é isso aí!

Ubuntu: Lista de repositórios para ubuntu 7.10

Standard

deb http://us.archive.ubuntu.com/ubuntu/ gutsy main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://us.archive.ubuntu.com/ubuntu/ gutsy-updates main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## universe WILL NOT receive any review or updates from the Ubuntu security
## team.
deb http://us.archive.ubuntu.com/ubuntu/ gutsy universe
deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy universe
deb http://us.archive.ubuntu.com/ubuntu/ gutsy-updates universe
deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://us.archive.ubuntu.com/ubuntu/ gutsy multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy multiverse
deb http://us.archive.ubuntu.com/ubuntu/ gutsy-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy-updates multiverse

## Uncomment the following two lines to add software from the ‘backports’
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://us.archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical’s
## ‘partner’ repository. This software is not part of Ubuntu, but is
## offered by Canonical and the respective vendors as a service to Ubuntu
## users.
# deb http://archive.canonical.com/ubuntu gutsy partner
# deb-src http://archive.canonical.com/ubuntu gutsy partner

deb http://security.ubuntu.com/ubuntu gutsy-security main restricted
deb-src http://security.ubuntu.com/ubuntu gutsy-security main restricted
deb http://security.ubuntu.com/ubuntu gutsy-security universe
deb-src http://security.ubuntu.com/ubuntu gutsy-security universe
deb http://security.ubuntu.com/ubuntu gutsy-security multiverse
deb-src http://security.ubuntu.com/ubuntu gutsy-security multiverse

Vim: como deixar o vim colorido no ubuntu

Standard

Hoje estive procurando como deixar o vim colorido, o qual, acho o melhor editor para quem quer aprender a programar… aí vai a dica:

abra o arquivo /etc/vim/vimrc

(escolha o editor de sua preferência)

Basta somente remover o comentário da linha referente a:

syntax on

Comigo, removi aspas duplas, mas pode ter tralha (#), remova e coloque ele para moer 😛

OBS: Pode ocorrer o erro abaixo

Error detected while processing /usr/share/vim/vimrc:
line 20:
E319: Sorry, the command is not available in this version: syntax on
Press ENTER or type command to continue

Este erro será corrigido instalando a versão “recheada” do vim, fazendo um $ sudo apt-get install vim.

vzquota : (warning) Incorrect quota shutdown for id VEID, recalculating disk usage

Standard

Se você recebeu esta mensagem ou algo semelhante a:

vzquota : (warning) Incorrect quota shutdown for id VEID, recalculating disk usage
vzquota : (error) quota check : lstat `ssl_scache.dir': Input/output error

Use os comandos abaixo:

#vzquota <VEID> off
and then again start quota for that VPS
#vzquota <VEID> on

OBS: VEID -> ID da VM

Isso vai sanar o problema!

Google lanca talk para chat em tempo real dentro de site

Standard

Pessoal, sei que é muito off essa new, mas é que fiquei muito feliz com ela.
Hoje um amigo me falou que a google havia disponibilizado um talk para colocar no site, para conferir, busquei tudo que pude sobre o assunto, e funciona LEGAL!

Primeiro, basta conferir aqui:

Google Talk Chatback: converse com seus visitantes em tempo real

Depois basta acessar o site da google e ativar o recurso em:

http://www.google.com/talk/service/badge/New

Como criar um Link para adicionar minha página aos favoritos

Standard

Hoje venho aqui somente postar como se faz para adiconar uma ação ao seu site para quando as pessoas clicarem em “adicionar aos favoritos”, seu site seja adicionado aos favoritos delas.

<a href=”javascript: window.external.AddFavorite(‘http://littleoak.wordpress.com’,’Blog de TI do Little Oak’)”>Favoritar</a>

Coloque esta linha  como sendo um href de uma imagem ou de link (caso acima) que, ao ser clicada será aberta a caixa de diálogo do favoritos será adicionada. (funciona no I.E.)

MSN: como adicionar link do MSN em página da internet?

Standard

Estes dias estava percorrendo a procura de incrementar um site, corri atrás e não achei nada… até que um amigo meu foi, acessou um site e percebeu o que estávamos procurando… adicionar MSN no site, de maneira que quando alguém clicar no link ele adiciona o contato a sua lista de contatos. Segue abaixo:

<a href=”msnim:add?contact=fulano@hotmail.com”>Add para contato</a>

Feito isso, aonde você colocou vai aparecer estilo link mesmo, ao clicar (pelo I.E funfa) será adicionado em sua lista de contatos.