Gerar senha no PHP

Provavelmente vocês algum dia já esqueceram a senha de acesso a algum site, e precisaram clicar naquele famoso link "Recuperar Senha".

E quando clicamos, é solicitado o e-mail utilizado dirante o cadastro, para que seja enviada uma nova senha, para nosso e-mail, e esta senha, normalmente não é a senha que cadastramos, isto porque, o sistema teve que reiniciar sua senha e gerar uma nova senha, já que você a esqueceu.

Por motivos de segurança os sites guardam as senhas em banco de dados criptografada (usando MD5, crypt, etc).

Neste exemplo, veremos como utilizar o PHP[bb] para gerar uma senha aleatória, randômica, em nosso site.

NOTA: no código abaixo, estarei utilizando a numeração nas linhas apenas para melhor visualização e explicação do código. Não digitem estes números de linhas em seu código.

1. <?php

2.

3. $CaracteresAceitos = 'abcdxywzABCDZYWZ0123456789';

4.

5. $max = strlen($CaracteresAceitos)-1;

6.

7. $password = null;

8.

9. for($i=0; $i < 8; $i++) {

10.

11. $password .= $CaracteresAceitos{mt_rand(0, $max)};

12.

13. }

14.

15. echo $password;

16.

17. ?>



Vamos a explicação:

Linha 1:

Abrimos a TAG do PHP

Linha 3:

Criamos uma variável de nome $CaracteresAceitos que irá armazenar letras e números necessários para gerar nossa senha.

Linha 5:

Criamos a variável $max e utilizamos a função "strlen" para contar quantos caracteres a variável $CaracteresAceitos tem.

Linha 7:

Criamos a variável $password e atribuímos a ela o valor null

Linha 9:

Criamos um loop para que nossa senha tenha o tamanho máximo de 8 caracteres

Linha 11:

Concatenamos (.=) a variável $CaracteresAceitos em nossa variável $password, e utilizamos a função mt_rand() para gerar uma senha aleatória, baseada no conteúdo da variável $CaracteresAceitos

Linha 13:

Fechamos a chave do loop

Linha 15:

Utilizamos o echo para exibir o novo valor da variável $password, gerada de forma randômica

Linha 17:

Fechamos a TAG do PHP.

Créditos: Oberaldo Bull

Posted by Programador ASP

Captcha ASP (Proteger formulário de spams)

Uma forma bem fácil de evitar que scripts maliciosos utilizem seus formulários para envio de SPAM é criar uma imagem de forma dinâmica com caracteres que serão validados antes do formulário enviar o e-mail.

Obs: Primeiramente seu provedor deverá ter suporte ao componente ASPJPEG.

Vamos criar um arquivo ASP chamado img.asp ondeo mesmo irá apenas para validar os caracteres. Veja o código abaixo:


img.asp


<%
'Função para gerar conjunto de letras aleatórias
Function aleatorio(quantidade)
  numero = array("A","B","C","D","E","F","G","H","I", "J","K","L","M","N","O","P","Q","R","S","T","U","V", "W","X","Y","Z","a","b","c","d","e","f","g", "h","i","j","k","l","m","n","o","p","q","r", "s","t","u","v","w","x","y","z","1","2","3" ,"4","5","6","7","8","9","0")
  Randomize
  do while len(senha) < quantidade
    num = numero(Int(ubound(numero) * Rnd ))
    senha = senha + num
  loop
  aleatorio = Trim(senha)
end function
'Aqui chamamos a função e armazenamos o resultado da mesma em uma sessão.
'Troque o 6 pela quantidade de caracteres que deseja sortear.
Session("Senha") = aleatorio(6)
'Cria o objeto Jpeg
Set Jpeg = Server.CreateObject("Persits.Jpeg")
'Imagem usada como fundo no caso mandei um JPG qualquer com o nome de imagem
Path = Server.MapPath("imagemFundo.jpg")
'Abre a imagem existente
Jpeg.Open Path
'Salva a imagem. Aqui foi usada a pasta teste, que obrigatoriamente deve ter permissão de escrita.
'Altere-a pela pasta onde será salva a imagem.
'LEMBRE-SE A PASTA DEVERÁ TER PERMISSÃO DE ESCRITA
Jpeg.Save Server.MapPath("captcha.jpg")
'Define altura e largura da imagem.
Jpeg.Width = 200
Jpeg.Height = 40
'Define cor, fonte, tamanho e tipo de qualidade do texto
Jpeg.Canvas.Font.Color = &H800000
Jpeg.Canvas.Font.Family = "Verdana"
Jpeg.Canvas.Font.Size = "36"
Jpeg.Canvas.Font.Bold = True
Jpeg.Canvas.Font.Quality = 4
'Desenha as bordas da imagem.
Jpeg.Canvas.Pen.Color = &H800000
Jpeg.Canvas.Pen.Width = 1
Jpeg.Canvas.Brush.Solid = False
Jpeg.Canvas.DrawBar 1, 1, Jpeg.Width, Jpeg.Height
Jpeg.Canvas.PrintText 30, 0, "" & Session("Senha") & ""
'Envia a imagem para o navegador.
Jpeg.SendBinary
'Remove a instância do objeto da memória
Set Jpeg = Nothing
%>


OBS: O script acima irá gerar uma imagem (binários), portanto não pode conter código HTML junto.

Agora vamos ver como fica o formulário que vai exibir a imagem gerada no script anterior e autenticar os caracteres, vamos chamálo de validar.asp


validar.asp

<%
' Verifica se o valor digitado no campo do formulário é o mesmo que gerou a imagem no script img.asp
if request.ServerVariables("REQUEST_METHOD") = "POST" then
  if Request.Form("txt_key") = Session("Senha") then
    Response.Write "Formulário confirmado!"
  else
    Response.Write "Preencha o campo com os caracteres da imagem!"
  end if
end if
%>
<form name="form1" method="post" action="">
  <input name="txt_key" type="text" id="txt_key" size="10">
  <input type="submit" name="Submit" value="Enviar">
  <br />
  <img src="img.asp">
</form>


Posted by Programador PHP

Criando RSS 2.0 (Really Simple Syndication) com PHP e MySQL

Definição de RSS segundo a Wikipédia: "RSS é um subconjunto de 'dialectos' XML que servem para agregar conteúdo ou 'Web syndication', podendo ser acedido mediante programas ou sites agregadores. É usado principalmente em sites de notícias e blogs."


1º Passo: Copie o comando SQL abaixo e cole no seu console MySQL:

create database rss;

use rss;

create table noticias (


not_id int(6) not null auto_increment,


not_titulo varchar(60) not null,


not_texto text not null,


not_data date not null,


not_hora time not null,


constraint primary key(not_id)

);


2º Passo: Crie um arquivo PHP chamado Rss.class.php.



3º Passo: Edite o arquivo recém-criado e insira o seguinte código:

<?php

class Rss

{


#Declaracao de variaveis


private $conexao = null;




private $servidor;


private $usuario;


private $senha;


private $alias;




/**


* Construtor


*/


public function __construct()


{


#Dados para conexao com o banco de dados


$this- >servidor = "localhost";


$this- >usuario = "root";


$this- >senha = "vertrigo";


$this- >alias = "rss";




#Efetua a conexao com o banco e seleciona a base de dados


$this- >conexao = mysql_connect($this->servidor, $this->usuario, $this->senha);


if ($this- >conexao)


{


mysql_select_db($this- >alias, $this->conexao);


}


}




/**


* Gera o RSS 2.0


*


* @param String $titulo titulo do rss


*


* @param String $link url do site


*


* @param String $descricao descricao do rss


*


* @param String $tabela tabela do banco de dados que será puxada as informacoes


*


* @param String $campo campo da tabela pelo qual sera ordenado, de forma decrescente, o rss


*


* @param String $destino url de destino das noticias - Ex: http://www.site.com.br/noticia?id=


*


* @return void


*/


public function rss($titulo, $link, $descricao, $tabela, $campo, $destino)


{


#Seleciona os dados no banco de dados


$sql = "SELECT * FROM $tabela ORDER BY $campo DESC;";


$res = mysql_query($sql);




#Cria a variavel $xml com o codigo xml necessario para criar o RSS


$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>";


$xml .= "<rss version=\"2.0\">";


$xml .= "<channel>";


$xml .= "<title>$titulo</title>";


$xml .= "<link>$link</link>";


$xml .= "<description>$descricao</description>";


$xml .= "<language>pt-br</language>";




#Verifica se o numero de linhas resultantes da query eh maior do que zero


if (mysql_numrows($res) > 0)


{


# "Quebra" a matriz


while ($dados = mysql_fetch_array($res))


{


$xml .= "<item>";


$xml .= "<title>$dados[1]</title>";


$xml .= "<link>$destino$dados[0]</link>";


$xml .= "</item>";


}


}




$xml .= "</channel>";


$xml .= "</rss>";




#Retorna o valor da variavel $xml


return $xml;


}

}

?>


4º Passo: Crie um arquivo chamado index.php, no mesmo diretório que o Rss.class.php, e insira o seguinte código:

<?php

require_once("Rss.class.php"); //chama o arquivo

$obj_rss = new Rss(); //instancia a classe

echo $obj_rss->rss("Exemplo de RSS 2.0", "http://www.seusite.com.br", "Últimas notícias", "noticias", "not_id", "http://www.seusite.com.br/noticia.php?id="); //escreve o valor retornado do metodo

?>


5º Passo: Basta inserir registros no banco de dados, acessar o arquivo index.php e pronto! Você já terá seu script RSS a disposição! Inseri dois registros no banco de dados, como exemplo, e obtive o seguinte resultado:





Créditos para Tiago Hillebrandt


Posted by Programador ASP

Script para login em ASP

Olá Galera

Segue a seguir como criar script para login em ASP, acho que ajudará alguns iniciantes ou não. Se tiverem dúvidas escrevam-me.

login.asp

' Arquivo com as configurações de conexão do site

<!--#include virtual = "/conexao/config.asp"-->

' Arquivo com algumas funções do site

<!--#include virtual = "/conexao/funcoes.asp"-->



<%

acao = request.Form("acao")

login = request.Form("login")

senha = request.Form("senha")



if acao <> "" then

if login <> "" and senha <> "" then

sql = "select * from usuario where login_usuario = '" & login & "' and ativo_usuario = 'sim'"

set rs = conn.execute(sql)

if not rs.eof then

if senha = rs("senha_usuario") then

session("login_usuario") = rs("login_usuario")

session("nome_usuario") = rs("nome_usuario")

session("id_usuario") = rs("id_usuario")

session("privilegio") = rs("privilegio_usuario")

session("acesso_a") = rs("acesso_a_usuario")



response.Redirect("default.asp")

elseif senha <> rs("senha_usuario") or senha = "" then

resposta = "Senha errada"

end if

else

resposta = "Login não encontrado"

end if



set rs = nothing

else

resposta = "Prencha os campos!"

end if

end if

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//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=iso-8859-1" />

<title>Login Leo Lima</title>

</head>



<body>

<form name="login" id="login" method="post" action="">

<table border="0" align="center" id="login">

<%if resposta <> "" then%>

<tr>

<td colspan="2">

<font color="#990000" size="1" face="Verdana, Arial"><strong>

<%=resposta%>

</strong></font></td>

</tr>

<tr>

<td height="8" colspan="2"></td>

</tr>

<%end if%>

<tr>

<td colspan="2">Usu&aacute;rio</td>

</tr>

<tr>

<td colspan="2"><input name="login" type="text" id="login" size="30" /><input name="acao" type="hidden" id="acao" value="logar" /></td>

</tr>

<tr>

<td colspan="2">Senha</td>

</tr>

<tr>

<td colspan="2"><input name="senha" type="password" id="senha" size="30" /></td>

</tr>

<tr>

<td></td>

<td height="8"></td>

</tr>

<tr>

<td colspan="2"><input type="submit" id="Submit" name="Submit" value="Entrar" /></td>

</tr>

</table>

</form>

</body>

</html>

Vc terá somente que setar as tabelas do seu banco nos campos para validação do login e senha e nas sessions que serão gravadas para posterior consulta nas páginas protegidas.

Um exemplo de como vc pode fazer o script para as páginas protegidas é o seguinte:


if session("logado") = "" or isempty(session("logado")) then
response.Redirect("login.asp")
end if


abs

Funções para array PHP

Essas funções permitem a interação e manipulação de arrays de várias formas. Arrays são essenciais para armazenar, gerenciar, operar sobre um conjunto de variáveis.

Arrays simples e multidimensionais (matrizes) são suportados, e podem ser criados pelo usuário ou por outras funções. Existem diversas funções específicas para banco de dados com o intuito de preencher arrays com os dados retornados em consultas, e vários outros tipos de funções também retornam arrays.

» Função array() - Permite a criação dinâmica de um array.


$fruta = array('banana', 'tomate', 'mamão');

$favorito = array('animal' => 'cachorro', 'carro' => 'stilo');

$planExcel =
array(

array('1 Célula da 1 Linha', '2 célula da 1 linha'),

array('1 Célula da 1 Linha', '2 célula da 1 linha'),

);

» Função count() - Informa quantos elementos determinado o array possui.

echo count($fruta);

Resultado da função: 3

» Função sizeof() - Idêntica à count, retornará um valor inteiro contendo o número de elementos
de um array.


echo sizeof($fruta);

Resultado da função: 3

» Função reset() - Você pode pensar: "apaga o array". Cuidado, essa é uma função que parece, mas não é.

Na verdade, sua função é colocar o índice para o primeiro elemento do array e retornar o valor desse elemento.


echo reset($fruta);

Resultado da função: banana

» Função end() - Faz exatamente o inverso da função reset, colocando o índice para o último elemento do array e retornando o valor deste.


echo end($fruta);

Resultado da função: mamão

» Função prev() - A partir da posicao do indice, desloca-se para o elemento anterior e retorna valor deste.

echo prev($fruta);

» Função next() - A partir da posição do índice, avança para o próximo elemento e retorna valor deste. Caso você esteja no último elemento e utilize esta função, o resultado será vazio.

echo next($fruta);

Resultado: mamao

» Função pos() - Retorna o conteudo do elemento atual do array.

echo pos($fruta);

Resultado: mamao

» Função key() - Retorna o indice do elemento atual do array

echo key($fruta);

Resultado: 2

» Função each() - Cria um novo array com apenas o elemento posicionado no array informado

$cesta = each($fruta);

echo pos($fruta);

Resultado: mamao

» Função shuffle - Essa funcao "mistura" aleatoriamente o array, trocando as posicoes de seus elementos.

shuffle($fruta);

echo $fruta [0] . "|" . $fruta[1] . "|" . $fruta[2];
Resultado: Array Original: banana/tomate/mamao

Depois da funcao: tomate/banana/mamao

» Funcao sort() - Coloca os elementos em ordem crescente.

sort($fruta);

echo $fruta [0]. "|" . $fruta[1] . "|" . $fruta[2];

Resultado: Array original: banana/tomate/mamao

Depois: banana/mamao/tomate

» Função rsort() - Coloca os elementos em ordem decrescente.

rsort($fruta);

echo $fruta [0]. "|" . $fruta[1] . "|" . $fruta[2];

Resultado: Array original: banana/tomate/mamao
Depois: tomate/mamao/banana