Jump to content


Xmagnum's Content

There have been 42 items by Xmagnum (Search limited from 17/04/2023)



Ordernar por                Order  

#83079 <?php Challenge?>

Posted by Xmagnum on 22/04/2003, 22:34 in PHP

Bem pessoal, faz mais ou menos 4 meses que eu aprendi php, e ja fiz um programa PHP (http://www.helpmasters.kit.net/) de portal, tipo o PHPnuke, conheço bem essa linguagem, e procuro participar de alguma equipe, se alguem quiser me adotar.
==> hehehehhehe
Mas, em todo caso meu MSNM é:
xmagnum@hotmail.com



#90460 Problemas Com Funções... To Fikando Velho

Posted by Xmagnum on 03/05/2003, 12:02 in PHP

Talvez com cookies, mas ñ tenho certeza



#90472 Problemas Com Funções... To Fikando Velho

Posted by Xmagnum on 03/05/2003, 12:13 in PHP

Eu tinha pesnsado em algo diferende, tipo, ele armazena o cookie que começa com o numero 0, ai ele mostra o wall 0, e modifica o cookie para o wall 1, e assim até acabar.



#90442 Problemas Com Funções... To Fikando Velho

Posted by Xmagnum on 03/05/2003, 11:23 in PHP

cara, vc pode continuar com o rand, mas faça o seguinte, no começo do script coloque o seguinte código:
function make_seed() {
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
srand(make_seed());
ok? Se ñ der certo, diga qual é o erro.



#77041 Curso Php

Posted by Xmagnum on 13/04/2003, 14:40 in Artigos, Dicas e Tutoriais de PHP

Introdução

Antes de começarmos a falar do PHP, é interessante abordar o passado. Há muito tempo atrás, a informação na Internet era encontrada por meio das ferramentas Gopher ( http://www.gopher.org ). Talvez para a época isso fosse suficiente, mas hoje é bem difícil encontrar usuários dessa técnica.

O Gopher reinava absoluto até que surgiu a Web e o primeiro navegador, o Mosaic, que possuía a capacidade de exibir o texto e imagens, o que faria com que a Internet se aproximasse mais dos simples mortais. Surgia um novo jeito de formatar a informação contida nos servidores de forma mais agradável e ilustrada. Mas ainda assim, a informação era estática.

Tudo muito bonito, mas ainda faltava dinamismo às páginas. Assim surgiu o CGI, (Common Gateway Interface) programas executados sob requisição do navegador e a saída deste programa era encaminhada de volta ao navegador. Por exemplo: para exibir a data em uma página, era necessário executar um programa CGI nos servidor. Este programa lia a data do sistema e informava ao navegador que cuidava da exibição na tela. Para entender um pouco mais de CGI consulte os tutoriais disponíveis aqui.

Esta dupla HTML/CGI durou até fins de 1998, início de 1999, sendo utilizada até hoje.

E, como sempre, alguém inventou algo melhor. Os programas CGI eram escritos, em sua maioria, com as linguagens C e PERL. E, por isso, causavam uma série de problemas nos servidores, que não vêm ao caso, mas para exemplificar: imagine um site que receba 10 visitas por segundo. Se ele executar um programa CGI em cada uma dessas visitas, serão abertos 10 processos por segundo, o que podia fazer com que o servidor gastasse mais tempo gerenciando estas "threads" do que servindo páginas, função para o qual fora projetado.

E para resolver este problema tiveram a brilhante idéia de inserir os comandos que seriam o programa CGI na página HTML, de modo que o servidor, ao enviar esta página, executasse o bloco do comando, no mesmo processo. Deste modo, para exibir a data em nossa página, bastava inserir, em algum ponto desta página, o comando para que a data fosse inserida.

Aqui começamos o assunto. Hoje podemos usar comandos da linguagem, que é grátis, portável, aberta, escalável.

Como você já deve estar curioso, vamos ver o código de uma página com uma porção PHP.

1 <html> 
2 <body bgcolor=white> 
3 <center> 
4 < 5 </center> 
6 </body> 
7 </html>

Vamos "destrinchar" esta página:
Se você não entendeu as três primeiras linhas, vale a pena dar uma olhada no tutorial HTML. A novidade está na linha 4. Note que ela se assemelha com uma TAG HTML, mas tem suas particularidades, por exemplo, um sinal de interrogação para abrir e para fechar. Isto faz com que esta página, quando estiver sendo enviada pelo servidor, passará pelo interpretador do PHP, de modo que apenas código HTML puro chegue ao navegador. Se o usuário acionar o "View Source" de seu navegador, verá o seguinte:

1 <html> 
2 <body bgcolor=white> 
3 <center> 
4 Hello World! 
5 </center> 
6 </body> 
7 </html>

Este exemplo, não tem muita utilidade, mas serve para ilustrar a idéia por trás do PHP.

Vamos ver algo mais útil:
Digamos que em nosso site exista uma página secreta, que só pode ser aberta por quem possuir o código de acesso. Como o HTML não traz nenhuma função para isso, teremos de fazer esta validação usando um outro programa. Este programa deverá ler o valor do campo LOGIN e SENHA do HTML e exibir a página secreto.htm se o par login/senha estiver correto ou a página senhainvalida.htm caso contrário. Pelo que já vimos, isto pode ser feito usando um CGI ou um script in-line (ASP, PHP, etc). Começaremos usando um CGI em PERL:

Código da página login.htm

<html> 
<body bgcolor=white> 
<center> 
<form action=login.pl method=post> 
Login: <input type=text name=login><br> 
Senha: <input type=text name=senha><br> 
<input type=submit value=" Entrar "> 
</form> 
</center> 
</body> 
</html>


Vamos ver como ficaria o código do CGI login.pl

#!/usr/bin/perl 
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pares = split(/&/, $buffer); 

foreach $par (@pares) { 
($campo, $valor) = split(/=/, $par); 


$valor =~ tr/+/ /; 
$valor =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 
$valor =~ s///g; 


$FORM{$campo} = $valor; 
} 

if (($FORM{'login'} ne 'scott') || ($FORM{'senha'} ne 'tiger'))
{
print "Location: senhainvalida\.htm\n\n"; 
} else {
print "Location: paginasecreta\.htm\n\n";
}
E vejamos como seria o código em PHP. Para isto, o valor ACTION do formulário teria que ser mudado para login.php3.

<?php
If (($login <> "scott") || ($senha <> "tiger")) {
Header("Location: senhainvalida.htm\n\n");
} else {
Header("Location: paginasecreta.htm\n\n");
}
?>

Vamos discutir o código acima:

A primeira linha é padrão, ela abre um bloco de código PHP. A segunda, faz a comparação dos valores de login e senha. Repare que para recuperar o valor dos campos de formulário basta referenciar aos nomes destes campos como variáveis do PHP. Isto significa que a variável $login conterá o valor digitado no campo LOGIN do HTML e a $senha a mesma coisa, não sendo necessário tratar todo o "Buffer" do HTTP, como é feito no PERL.

Dependendo do resultado da comparação da linha 2, o programa seguirá pela linha 3 ou 5. Se o login ou a senha não estiver correto, é executada a linha 3 que devolve um comando para o navegador abrir a página senhainvalida.htm, do contrário, o fluxo é desviado para a linha que dá o camando para o navegador exibir a página secreta.

Lógico que este não é um método seguro de se proteger uma página, mas em termos didáticos é suficiente.
=============================================
Agora que você já conheceu um pouco mais do PHP, vamos conhecer mais detalhes da linguagem. Neste módulo você aprenderá como tratar string e números no PHP e no final estará apto a criar um script de envio de informações de um formulário por e-mail.

Para aprender uma nova linguagem, costumamos verificar os pontos que listo abaixo:

1) Comentários
Todo programa deve possuir comentários, visando o entendimento do código em consultas posteriores.
No PHP, existem três tipos de marcadores de comentário, que são:
// e # para comentário de uma linha. Por exemplo:

// atribui o nome à variável
$nome = "Valdir Leite"

$email = "valdirleite@ig.com.br" # atribui o E-mail à variável

e para comentários que ocupem mais de uma linha, usamos os marcadores /* */.

/*
Nas linhas abaixo, atribuiremos os valores
Do nome e do e-mail às respectivas variáveis 
*/
$nome = "Valdir Leite"
$email = "valdirleite@ig.com.br"
2) Variáveis
Para começar, vamos ver como o PHP trata suas variáveis (ou constantes), que podem ser variáveis escalares ou não-escalares. As variáveis escalares são aquelas que podem ser retrabalhadas, ou "divididas em pedaços menores", enquanto as não escalares são as arrays (matrizes) e os objetos.

A identificação de uma variável, independente do seu tipo é pelo sinal $ colocado como primeiro caractere, como abaixo:

$nome = "Valdir Leite";
$matricula = 9843825
$conex = ocilogon("scott", "tiger", "ORA8");

A primeira variável é do tipo string; a segunda, inteiro (ambas escalares); e a terceira é uma variável que possui a referência de um objeto de conexão com um banco de dados Oracle.

Vale lembrar que, como a linguagem C, as variáveis $nome e $Nome são consideradas diferentes, pois o PHP as trata como sensíveis ao caso.

Na versão 4 do PHP, as variáveis podem receber valor por referência. Isto significa que ao para atribuir o valor a uma variável não usamos um valor, mas um "ponteiro" para o valor em questão. Na verdade, este "ponteiro" é uma outra variável:

$nome = "Valdir";
$identificacao = &$nome;

Deste modo, a variável $identificacao recebe o valor de $nome e, se uma das duas for atualizada, a outra também será, mantendo o mesmo valor em ambas. Mas não vamos aprofundar nisto, pois é ciosa de versão 4.0, que será tratada posteriormente.

3) Operações Matemáticas
As operações no PHP também seguem o padrão das outras linguagens (+, -, *, /, sin(), cos()). Além destas, o PHP tem um completo conjunto de operações matemáticas, que podem ser consultadas nesta página: (http://br.php.net/manual/ref.math.php3)

Um exemplo para calcular o valor líquido de um preço, depois de aplicar 10% de desconto sobre o preço bruto:

$valorbruto = 10;
$desconto = 10 * $valorbruto / 100; 
$valorliquido = $valorbruto - $desconto;

4) Operações com strings
Operações com strings são uma das características mais desenvolvidas do PHP. Entre as mais importantes estão:
strlen(), que permite saber quantos caracteres possui a string:
     echo "A palavra 'internet' possui " . strlen("internet") . " caracteres ";
substr(), que devolve uma substring da string informada:
     echo substr("abcde", 2 , 2); // Esta linha irá exibir os caracteres "cd";
strpos (), para saber se determinado caractere (ou substring) está contida em uma string:
    if strpos ($email, "@") {
        echo("Seu e-mail parece estar correto!\n");
     } else {
        echo("O e-mail está inválido\n");
     }
No exemplo acima, verificamos se o caractere "@" está contida em uma variável $email. Se estiver, exibe a primeira mensagem. Do contrário, exibe a segunda.

Outras funções relacionadas à operações com strings podem ser encontradas em:
http://br.php.net/ma...ef.strings.html

5) Controlando o fluxo e LOOPS
As funções usadas para controlar o fluxo do programa e execução de "loops" são:

if ... else ... else if, que segue o padrão da linguagem C:
if ($sexo == "m") {
     echo "Você é do sexo Masculino\n";
} elseif ($sexo == "f") {
     echo "Você é do sexo Feminino\n";
} else {
     echo "Por favor, informe corretamente seu sexo\n";
}
switch, uma maneira de controlar o fluxo onde a variável de controle do fluxo pode ter várias opções de valores. Este tipo de controle poderia ser feito com uma seqüência de "ifs" e "elseifs", mas o uso do switch torna o código mais legível e faz com que seja executado mais rapidamente, pois a verificação da variável "$sexo" só é feita uma vez e depois comparada com as opções de cada "case". Se não estiver em nenhuma delas, é executado o bloco sob o "default". Já com o "elseif", a comparação é feita novamente a cada sentença. Neste exemplo, a diferença não é tão grande, mas quando o tipo de verificação vai ficando mais complexo a velocidade começa a ser sentida. Na maioria dos casos, vale a pena optar pelo switch.


switch ($sexo) {
     case "m":
        echo "Você é do sexo Masculino\n";
        break;
     case "f"
        echo "Você é do sexo Feminino\n";
        break;
     case default:
echo "Por favor, informe corretamente seu sexo\n";
break;
}
Sempre inclua o comando break no final do case. Caso contrário, a execução continuará até encontrar o final do switch (ou a instrução break), fazendo com que as instruções de mais de um case sejam executadas.

while, que permite repetir o código enquanto uma condição for verdadeira:
while ($contador > 0) {
     $contador = $contador - 2;
}
for, para execução de um loop determinada quantidade de vezes:
for ($i==0; $i<100; $i++) {
     echo "$i\n";
}
Tratando formulários
Com as informações que você já possui, podemos passar para exemplos práticos, úteis no dia-a-dia de um webmaster.

Vamos fazer, passo-a-passo, um script para receber os dados de um formulário, consistir as informações e enviar o resultado por e-mail. Este formulário possui campos para digitação do nome, e-mail e telefone. Todos os campos são obrigatórios e a consistência do campo e-mail deve ser feita apenas verificando a existência do caractere @, para facilitar as coisas. Já o campo telefone deve ter, sete oi oito caracteres. Tendo este cenário, mãos a obra!

Vamos ao programa:

<?php

$erro = "";

if ($nome == "") {
     $erro .= "Digite seu Nome\n"; } 

if ((strlen($telefone) > 8) or (strlen($telefone) < 7)) {
     $erro .= "O número do telefone deve ter sete ou oito caracteres\n";
}

if strpos ($email, "@") = 0 {
     $erro .= "O e-mail digitado não é válido\n"
}
?>

Esta primeira parte faz a consistência dos dados e altera o valor da variável $erro, caso alguma das condições não seja satisfeita. Para prosseguir, devemos verificar a ocorrência de erros e então enviar o e-mail se erros não tiverem ocorrido ou enviar uma tela de resposta informando qual o erro aconteceu. Como o valor de $erro antes da verificação dos campos é "", basta testar se a variável ainda tem este valor para saber se aconteceu ou não um erro. Vamos continuar:

echo("<html><title>Envie o formulário
abaixo</title><body><center>\n"); # Cabeçalho de resposta.

If ($erro == "") { // Não houve nenhum erro no preenchimento do formulário
mail("valdirleite@ig.com.br", "Dados do Formulário"," Nome: $nome\n E-mail: $email\n Telefone: $telefone\n","From: $email\nDate: $date\n";
echo("Obrigado por enviar este formulário!\n");
} else
echo("Não foi possível enviar o formulário!<br>Verifique as mensagens abaixo<br><br><b> $erro \n");
}
echo("</center></body></html>\n");
Pronto!

As novidades neste script são:
· O comando mail() que é a função nativa do PHP para envio de e-mail. Sua sintaxe é a seguinte: mail(Destinatário, Assunto, Mensagem, Informações_Adicionais);
· O echo() que é o equivalente do print no PERL e do response.write do ASP;
=============================================

Funções, Strings e Bancos de Dados
Depois do script que envia e-mail, vamos fazer um outro que guarde as informações de um formulário HTML em um banco de dados.

Vamos usar o MySQL como banco de dados. Sugiro que você dê uma olhada no site http://www.tcx.se e leia um pouco sobre este servidor SQL. Vale a pena, pois ele é muito bom.

Funções
As funções no PHP não diferem muito das outras linguagens. Algumas características das funções:
• Devem ser declaradas antes de serem usadas.
• Podem receber parâmetros por valor ou por referência.
• Podem ter quantidade variável de parâmetros (Apenas a partir da versão 4).
• Os parâmetros podem ser declarados com um valor default.
• Uma vez definida, uma função não poderá ser "redefinida".

Alguns exemplos de funções:

/*
Esta função retorna TRUE ou FALSE, dependendo da validade ou não do e-mail informado.
*/
function verifica_email($email){
     if strpos ($email, "@") = 0 {
        return false;
     } else {
        return true;
     }
}

/*
Neste exemplo calculamos o valor líquido, tendo o valor bruto e o desconto a ser aplicado. Se o desconto não for informado, utilizaremos 10% como padrão.
*/
function valor_liquido($valor_bruto, $desconto = 10) {
        return ($valor_bruto - ($valor_bruto * $desconto/100));
}
Os dois exemplos acima receberam seus parâmetros por valor. Isso significa que as alterações de variáveis realizadas dentro da função só terão efeito no contexto da função, e estas mudanças não refletirão no resto do script. Em alguns casos pode ser interessante que os valores dos parâmetros sejam alterados pela função, e que seus novos valores reflitam no script como um todo. Para conseguir isto, usamos a técnica de passagem de parâmetro por referência. Vamos ver um exemplo:
function completaURL(&$v_URL) {
     $v_URL .= "http://".$v_URL;
}

$URL = "www.ibestmasters.com.br";
completaURL($URL);

echo "A URL completa fica assim: $URL\n";
Daqui a pouco vamos ver um pouco mais sobre funções.

Strings
No módulo 2, foram vistas algumas operações com string. Vamos completar com estas, que são muito úteis no uso com banco de dados e para formatar a saída HTML:

• addslashes(str): Esta função insere uma barra antes dos caracteres ', ", \ e NULL. Deve ser usada para formatar valores que serão inseridos em um banco de dados, pois estes caracteres, em especial o primeiro, podem causar erros no momento da inserção

Exemplo:

$sql = "insert into dados (produto, descricao) values ('".addslashes($prod) . ", '".addslashes($descr). "')";
Usando a função addslashes teremos certeza que a variável $sql estará formatada de acordo com a especificação da cláusula INSERT INTO. Se alguma das variáveis ($prod ou $descr) possuir acima, a função cuida de inserir uma barra (\) antes deles, para que a sentença seja entendida pelo banco.

• htmlspecialchars(string): Função muito útil, pois "traduz" alguns caracteres nos seus equivalentes em HTML, conforme a tabela abaixo

  Caracter    htmlspecialchars() 
  &                &amp;amp;

  "                  &amp;quot;
  <                &amp;lt;
  >                &amp;gt;

• nl2br(string): Converte os caracteres CRLF, que indicam quebra de linha, em <BR>, que também indica quebra de linha, na linguagem HMTL.

• rawurlencode(string): Formata uma string de acordo com a especificação RFC1738, que padroniza as URLs. Se quiser saber mais sobre as RFCs, veja em http://www.rfc.org. Basicamente, o que esta função faz é substituir os caracteres não alfanuméricos em seus correspondentes hexadecimais, visando o uso em URLs.

Exemplo:

$palavra = "açafrão ou tâmara";
$url = "http://server/pesquisa.php3?p=".rawurlencode($palavra);

Esta função é muito útil quando queremos passar parâmetros via URL, como mostra o exemplo acima. No script do próximo módulo voltaremos a usá-la.

• ucwords (string): Converte os primeiros caracteres de strings em maiúsculo.

Exemplo:

$nome = ucwords("valdir henrique dias leite");
echo($nome); //Esta linha exibirá Valdir Henrique Dias Leite

Acesso à banco de dados
Como foi dito na apresentação do PHP, o acesso à banco de dados é um dos pontos fortes desta linguagem. Ele possui acesso nativo a ADABAS, ORACLE, SYBASE, SQL SERVER, DBASE, INFORMIX, mSQL, MySQL, POSTGRESQL, além de suportar ODBC, fazendo com que o PHP possa trabalhar praticamente com todos os bancos de dados existentes.

Neste módulo vamos ver apenas as apenas as funções relativas ao banco MySQL, pois esta dupla PHP/MySQL está sendo preferida por uma boa parte dos desenvolvedores, particularmente no ambiente Linux/Apache.

O MySQL é um servidor SQL e portanto devemos seguir alguns procedimentos e regras para acesso aos seus dados. Se você está acostumado com o Oracle ou SQL Server não terá dificuldades, mas se você usa somente bancos de dados do tipo Access ou DBF, poderá ter dificuldades em entender o mecanismo usado pelo MySQL, mas vou tentar ser o mais didático possível. E aguarde, pois estou preparando um tutorial apenas sobre servidores SQL...

A primeira regra é ter um banco de dados cadastrado e um usuário com acesso à este banco de dados. Vale lembrar que o MySQL não é um banco de dados, e sim um servidor de dados. Tenha isto em mente para entender o exemplo.

Digamos que temos um banco de dados Clientes com o usuário admin e senha admin. O primeiro passo é "logar" ao servidor. Para isso usamos o comando mysql_connect e informamos o servidor, login (usuário) e senha. Veja abaixo:

$conn = mysql_connect ("localhost" , "admin" , "admin");
Este comando abrirá uma conexão com o MySQL da máquina local (localhost), usando o usuário admin cuja senha também é admin. Uma refrência a esta conexão será gravada na variável $conn.

Depois de conectados ao servidor, devemos conectar ao banco de dados propriamente dito, usando o comando mysql_select_db, que precisa de dois parâmetros: O nome do banco de dados e a conexão. Caso a conexão não seja informada, ele tentará usar a última criada. Em nossos exemplos, iremos sempre informar os dois parâmetros.

$db = mysql_select_db("clientes", $conn);
Neste ponto já temos uma conexão com o servidor e já criamos um link com o banco de dados. Agora podemos enviar os comandos SQL de desejarmos. Se você não souber SQL, volte a este site em algumas semanas que você vai encontrar um tutorial de SQL.

Agora segue nosso exemplo prático: Vamos usar o script do módulo passado e alterá-lo de modo que os dados digitados no formulário sejam gravados no banco de dados clientes antes de enviar o e-mail.

<?php

$erro = "";

# Verificar se o campo NOME está vazio.
if ($nome == "") {
       erro .= "Digite seu Nome\n";
} 

# Verificar a quantidade de caracteres no campo TELEFONE.
if ((strlen($telefone) > 8) or (strlen($telefone) < 7)) {
       $erro .= "O número do telefone deve ter 7 ou 8 caracteres\n";
}

# Testar vamor do campo E-mail, verificando o caracter "@"
if strpos ($email, "@") = 0 {
       $erro .= "O e-mail digitado não é válido\n";
}

# Cabeçalho de resposta.
echo("\n");
echo("<center>\n");

if ($erro == "") {
     ;$conn = mysql_connect("localhost" , "admin" , "admin");
       $db = mysql_select_db("clientes", $conn);
       $sql = mysql_query("insert into dados (nome, email, telefone)
values ('".addslashes($nome). "','".addslashes($email)."',
'".addslashes($email)."')" or die("Não foi possível atualizar a tabela");
       mysql_connect($conn);
       mail("valdirleite@ig.com.br", "Dados do Formulário"," Nome: $nome\n 
E-mail: $email\n Telefone: $telefone\n","From: $email\nDate: $date\n");
       echo("Obrigado por enviar este formulário!\n");
} else {
       echo("Não foi possível enviar o formulário!
Verifique as mensagens abaixo:

\n");
       echo("<b>$erro </b>\n");
       echo("<br><br><a href=form.htm>Voltar\n");
}
       echo("</center>");
?>
As linhas em negrito foram acrescentadas para que o script possa gravar os dados do formulário na tabela DADOS do banco de dados CLIENTES, que está no mesmo servidor onde está sendo rodado o script (LOCALHOST).

Este é o procedimento padrão para usar servidores de banco de dados com o PHP:

• Conectar ao servidor
• Abrir o banco de dados (um servidor SQL pode ter mais de um banco de dados)
• Enviar os comandos SQL
• Fechar o banco de dados
• Desconectar ao servidor

A novidade deste exemplo fica por conta do comando die que finaliza o script caso a função que o precede não possa ser executada.
=============================================
Bancos de Dados e Recursos avançados
Este módulo 4 é a última parte da primeira série deste tutorial. Vamos falar um pouco mais sobre bancos de dados e mostrar algumas funções e recursos avançados do PHP. No script do módulo 3, fizemos a inclusão das informações em uma tabela de um banco de dados MySQL. Hoje veremos como consultar estas informações.

"SELECT"

Vale a pena repetir o método de trabalho com servidores de bancos de dados:

- Conectar ao servidor
- Abrir o banco de dados
- Enviar os comandos SQL
- Fechar o banco de dados
- Desconectar ao servidor
Sendo que as duas últimas geralmente não precisam ser feitas explicitamente, pois quando o script terminar, o banco de dados é fechado e a conexão é encerrada automaticamente.

A consulta aos dados contidos em uma tabela é feita usando o comando SELECT, da linguagem SQL. Este comando diz ao banco para separar, de todos os dados contidos em uma tabela, apenas aqueles que precisamos. Se o SQL fosse em português e se quisermos saber quais pessoas, dentre as que preencheram nosso formulário, têm o primeiro nome Maria, bastaria executar o comando: SELECIONE TUDO DE DADOS ONDE O NOME PAREÇA COM MARIA. Como o SQL é escrito em inglês, basta traduzir (com algumas pequenas adaptações) a frase acima, que ficaria assim: SELECT * (ou ALL) FROM DADOS WHERE NOME LIKE MARIA.

No padrão SQL, podemos informar como queremos a comparação do "parecido", especificando se o que queremos começa, termina ou contém o texto a ser comparado. Como queremos saber todo mundo cujo primeiro nome é Maria, quer dizer que vamos separar todos os dados que iniciam com Maria. Na linguagem SQL, a sentença ficará assim: Select * From Dados Where Nome Like "Maria%";

No MySQL:

$conn = mysql_connect ("localhost" , "admin" , "admin"); #Abre a conexão $db = mysql_select_db("clientes"); #Abre o banco de dados $result = msql_query("select * from dados where nome like 'Maria%'");
Além das funções SQL que já vimos, (SELECT e INSERT) existem várias outras disponíveis. Consulte um tutorial de SQL para conhecê-las.

Restringindo o acesso de usuários

No exemplo de hoje, vamos fazer um script para consultar as informações que foram gravadas na nossa tabela. Para isso deverá ser feita a validação de usuário, de modo que apenas as pessoas autorizadas possam acessar a página de consulta.

O PHP não consegue, sozinho, validar um usuário. Portanto devemos usar um dos métodos descritos seguintes: Se o servidor for o Apache, basta usar um arquivo com as diretivas de autenticação (Geralmente estas informações ficam em um arquivo chamado .htaccess no diretório que queremos proteger). Neste caso a todo o trabalho de validação fica por conta do servidor e, para sabermos qual usuário está "autenticado", basta verificar a variável $REMOTE_USER.

Um outro método é usar um cabeçalho de autenticação do HTTP e verificar o valor das variáveis $PHP_AUTH_USER e $PHP_AUTH_PW para saber o usuário e senha digitados, respectivamente. Com estes valores podemos consultar um banco de dados para verificar se estão corretos.

O pedaço do código para verificar a autenticação será este:

<?php
if ($PHP_AUTH_USER = "") { #Se for nulo, forçar o pedido de autenticação
Header("WWW-Authenticate: Basic realm=\"Acesso Restrito\"");
Header("HTTP/1.0 401 Unauthorized");
echo("Mensagem que será exibida se o usuário pressionar o botão cancelar ou entrar com uma senha inválida três vezes consecutivas.");
} else {
(...) #Continuação do código para validar as informações entradas.
}
?>
Como já foi dito, o método de autenticação mais eficaz é o do servidor web, mas neste caso o PHP apenas consegue ver o nome do usuário, já autenticado. Não iremos tratar em detalhes o mecanismo de autenticação do Apache. Para mais informações, consulte o site www.apache.org.

Com o exemplo 1 e 2, já é possível escrever o script proposto. Tente fazê-lo e se houver qualquer dúvida, sinta-se a vontade para enviar um e-mail para valdirleite@ig.com.br que tentarei ajudá-lo da melhor maneira.

Dicas e códigos úteis

Se você seguiu este tutorial desde o início, já tem informações suficientes para escrever pequenas aplicações em PHP. Vamos ver algumas dicas e códigos que podem ser úteis em seu dia-a-dia.

a) - Como enviar um arquivo (upload) pelo browser, usando um código PHP.

Os browsers Netscape e Internet Explorer (versões 3 ou superiores) possuem um tipo de campo de formulário que permite o envio de arquivos de máquina do usuário para o servidor. Isto é muito útil para, por exemplo, receber curriculuns, fotos e qualquer outro tipo de arquivo, sem a necessidade de liberação de um acesso por FTP.

Vamos ver como fazer isto:

O FORMULÁRIO HTML:
<form action=upload.php3 method=post ENCTYPE="multipart/form-data">
<input type=file name=file><br><br>
<input type=submit value="Enviar">
</form>
Este código exibirá na página um campo com um botão que, ao ser clicado, abre o caixa de diálogo de seleção de arquivo. Escolhido o arquivo, basta clicar no botão enviar, que o resto fica por conta do script upload.php3

Upload.php3
O que este script deve fazer é copiar o arquivo temporário criado pelo navegador para a pasta do cliente.

<?php
if((!$file) or ($file=='none') or ($file_name=='')) {
    echo("<html><body bgcolor=white>");
    echo("Não foi possível enviar o arquivo!</p>");
        echo("<p align=center><a
href=javascript:history.back();>");
    echo("<img src=../img/volta.gif border=0></a>");
        echo("</body></html>");
        exit;
} else {
        $dest = "/clientes/".$REMOTE_USER."/".$file_name;
        if(@exec("cp $file $dest")!=0) {
    echo("<html><body bgcolor=white>");
            echo("Não foi possível copiar o arquivo!<br>\n");
    echo("</body></html>");
            exit;
        }
}
header("Location: ./sucesso.htm");
exit;
?>
As novidades deste script são:
Comando EXEC, que executa um comando do sistema operacional. Neste caso, ele tenta copiar o arquivo temporário, cuja referência está na variável $file para a pasta do cliente. O sinal arroba (@) colocado antes dele é para indicar ao interpretador que não exiba mensagens de erro relativos ao comando. Levamos em consideração que exista um diretório /clientes/nome_do_cliente, onde para pegar o nome_do_cliente usamos a variável $PHP_AUTH_USER, como vimos no início deste artigo.

B) - Trabalhando com Datas

- Função para verificar se uma data está correta:
checkdate($mes, $dia, $ano);

- Função para saber o dia da semana de uma data específica
date("D", mktime(0,0,0,$mes,$dia,$ano));
Exemplo:

date("D", mktime(0,0,0,2,12,2000)) #resultará "Sat"
c) - Consistindo um CPF

<?php
    function consistecpf($valor) {
$digito1 = 0;
$digito2 = 0;
$cpf = trim($valor); 

if (strlen($cpf) < 11) { 
return false;
    } else {
for ($i=1; $i<10; $i++) { 
$digito1 += strval(substr($cpf,$i-1,1))*$i; 
$digito2 += strval(substr($cpf,$i,1))*$i; 
    } 
return((($digito1%11)*10)+($digito2%11))==strval(substr($cpf,-2)); 
}
?>
d) - FTP e HTTP

Algumas vezes pode ser útil que nosso script execute um outro script ou então transfira um arquivo para outro servidor. Para isso, podemos executar comandos HTTP e FTP de dentro do PHP. Veja os exemplos:

HTTP: Podemos fazer, dentro do script PHP, uma chamada a outro script ou programa CGI hospedado em outro servidor. Isto é muito útil quando queremos consultar algum dado em um servidor remoto, ou até mesmo para abrir uma página, usando o protocolo HTTP. Para isso, basta chamar a função Header("location: pagina.htm") para redirecionar para uma página específica ou então o usar o comando abaixo para executar um CGI passando parâmetros via URL:

Header("location: http://server/cgi/script.pl?p=1&t=".$param),

Onde $param é uma variável que pode vir de uma consulta a banco de dados ou mesmo de um formulário.

Outra função HTTP importante é o uso de "cookies" para gravar alguma informação no browser de quem estiver visitando sua página. Para gravar um "cookie", usamos a função setcookie(), como mostrado abaixo:

setcookie("Visitou","Sim",time()+3600);

O comando acima gravará um cookie chamado "Visitou" com o valor "sim", com apenas uma hora de duração. Note que o 3600 é o número de segundos além do horário atual que o cookie deve ficar ativo. Se no lugar de 3600, usássemos 36000, o cookie seria ativo por 10 horas.

FTP: A sequencia de tarefas para uso do protocolo FTP é Conectar ao Servidor, Identificar-se (Login e Senha), Enviar/Buscar arquivo(s), Desconectar. Os comandos para cada uma destas tarefas são:

$conn = ftp_connect();
$log = ftp_login($conn, 'login', 'pass');
ftp_put($con, 'arquivo_remoto', 'arquivo_local', FTP_ASCII/FTP_BINARY);
ftp_quit($conn);
e) - Tratamento de Erros

O PHP tem um esquema especial de "debugging" (tratamento e verificação de erros), que é acessado por uma porta TCP, que permite acompanhar a execução dos scripts e ver quaisquer erros que estiverem acontecendo.

Além disso o tratamento de erros pode ser feito no próprio script, conforme explicado abaixo:

O PHP possui 4 níveis de erros e avisos, que são:
1 - Erros de normais de Funções
2 - Avisos Normais
4 - Erro de interpretação
8 - Avisos que você pode ignorar, mas que podem causar danos à execução normal do script.

O padrão do PHP é o nível 7 (1 + 2 + 4), mas este nível pode ser alterado tanto no arquivo de configuração quanto em tempo de execução, chamando a função error_reporting($nivel) com o nível desejado.
Se usarmos o valor 0 (zero) nenhum aviso ou mensagem de erro será gerada em tempo de execução. Neste caso, podemos usar uma variável especial ($php_errormsg) que conterá o último erro gerado pelo script, para possamos criar rotinas específicas para tratamento de erros. Podemos fazer uma analogia ao comando on error resume next do ASP, técnica muito útil para personalizarmos mensagens de erro para o usuário, entre outras coisas.


----

Não poste em seu tópico com fonte maior que 3.



#90437 Função Cortar!

Posted by Xmagnum on 03/05/2003, 11:17 in PHP

Se vc quer cortar o arquivo txt é melhor vc usar isso:
function cortar($frase, $quantidade) {
 $tamanho = strlen($frase);
 if($tamanho > $quantidade)
     $frase = substr_replace($frase, "...", $quantidade, $tamanho - $quantidade);
 echo $frase;
}
$quantidade = "17"; 
$frase = join("",file("dicas-headlines.txt"));
cortar($frase, $quantidade);
A e, nunca use nos includes HTTP://, nem nas funções referntes a arquivos, ok?



#90456 Função Cortar!

Posted by Xmagnum on 03/05/2003, 11:58 in PHP

cara, manda esse arquivo txt



#88572 Tirar Msgs De Erros Desnecessarias

Posted by Xmagnum on 30/04/2003, 22:24 in PHP

E ai pessoal, bem, o meu host tem um php antigo, acho que por volta do 4.0.6, e eu gostaria de saber como tiras essas msgs desnecessarias, tipo essas que são causadas por um argumento ñ dado numa função:
Warning: Missing argument 2 for entrar() in /home/good/public_html/site/index.php on line 14

Warning: Missing argument 3 for entrar() in /home/good/public_html/site/index.php on line 14



#84006 Comparacao De Tabelas

Posted by Xmagnum on 24/04/2003, 12:09 in PHP

1º - Cara, depende dos tipos, isso aivai no seu script;
2º - Sua pergunta ñ esta clara, tente mandar o script da criação das tabelas.



#76845 Como fazer para aparecer o remetente desse form

Posted by Xmagnum on 13/04/2003, 10:26 in PHP

Para redirecionar é bem facil, é so colocar a função 'Header' no final do codigo.
<?

################
# CODED BY ·X· #
################

# Quem recebe
$recipient0 = "<mail@mail.com>";
$recipient1 = "$nome <$mail>";

# Assunto do e-mail
$subject0 = "orgiapontocom";
$subject1 = "orgiapontocom";

# Corpo da mensagem
$message0 .= "http://www.orgiapontocom.blogger.com.br";

$message1 .= "meublogger";
$message1 .= "http://www.orgiapontocom.blogger.com.br<br>De: $nome2 <$mail2>";

# Quem envia
$headers0 .= "De: $nome2 <$mail2>\n";
$headers0 .= "Content-Type: text/html; charset=iso-8859-1\n";

$headers1 .= "De: $nome2 <$mail2>\n";
$headers1 .= "Content-Type: text/html; charset=iso-8859-1\n";

# Envia e-mails
mail("$recipient0","$subject0","$message0","$headers0");
mail("$recipient1","$subject1","$message1","$headers1");
Header("Location: pagina_de_agradecimento.html");
?>



#77001 Como fazer para aparecer o remetente desse form

Posted by Xmagnum on 13/04/2003, 13:53 in PHP

Qual foi o erro?



#76832 Como fazer para aparecer o remetente desse form

Posted by Xmagnum on 13/04/2003, 10:00 in PHP

Olha, este codigo mostra o Remetente, se você testa-lo ele vai mostrar o e-mail do visitante, mas se o que você quer, é que apareça o Remetente na mensagem então é so modificar o 'mail.php':
<?

################
# CODED BY ·X· #
################

# Quem recebe
$recipient0 = "<mail@mail.com>";
$recipient1 = "$nome <$mail>";

# Assunto do e-mail
$subject0 = "orgiapontocom";
$subject1 = "orgiapontocom";

# Corpo da mensagem
$message0 .= "http://www.orgiapontocom.blogger.com.br";

$message1 .= "meublogger";
$message1 .= "http://www.orgiapontocom.blogger.com.br<br>De: $nome2 <$mail2>";

# Quem envia
$headers0 .= "De: $nome2 <$mail2>\n";
$headers0 .= "Content-Type: text/html; charset=iso-8859-1\n";

$headers1 .= "De: $nome2 <$mail2>\n";
$headers1 .= "Content-Type: text/html; charset=iso-8859-1\n";

# Envia e-mails
mail("$recipient0","$subject0","$message0","$headers0");
mail("$recipient1","$subject1","$message1","$headers1");

?>



#84020 Mural Em Php

Posted by Xmagnum on 24/04/2003, 12:39 in PHP

Cara, ja que vc quer um bom, é melhor vc fazer um, posso ajudar,
mas, vc tem que me responder algumas perguntinhas:
Onde vc vai guardar os dados? (.TXT OU MySql)
Vai ter Smileys?



#84986 Alguem Conhece Este Erro

Posted by Xmagnum on 25/04/2003, 19:55 in PHP

Cara, tenho certeza (mas certeza ñ é necessariamente verdade) que é problema no sever.



#84591 Alguem Conhece Este Erro

Posted by Xmagnum on 25/04/2003, 11:17 in PHP

Simples, isso é erro do server, parece que as informações de um certo forumulario ñ foi recebido pelo servidor, e como forma de segurança ele cancela o script, okz?



#84964 Como Limpar?

Posted by Xmagnum on 25/04/2003, 18:56 in PHP

Abra este arquivo do skin:
Skin\s1\skin_boards.php
Agora é so deletar a linha 108 a 113, okz?



#84013 Como Organizar Mensagens Por Data

Posted by Xmagnum on 24/04/2003, 12:30 in PHP

Faça o seguinte, quando vc gravar no arquivo TXT grave da seguinte forma:
$msg='msg escrita';
$conteudo_antigo=join("",file('nome_do_arquivo.txt'));
$fp = fopen($users_file, "w");
$fw = fwrite($msg.'
'.$conteudo_antigo, $new_list);
fclose($fp);
Se ñ funcionar, mande o codigo que vc usa para gravar, okz?



#92928 Preciso De Ajuda Em Js.

Posted by Xmagnum on 06/05/2003, 10:04 in HTML, CSS e Metodologias

Adicione esse código na pagina que diz que a msg foi enviada. Mas, so no final do html! Depois de 5 segundos a pagina fecha.
setTimeout("top.window.close()",5000);
Deu certo?



#84021 Dúvida Sobre Bd!

Posted by Xmagnum on 24/04/2003, 12:46 in PHP

Cara, acho melhor vc guardar num so BD, pq pode complicar, vc tera que criar uma coneção diferente para cada script. Alem disso, tem o negocio dos BDs, tem alguns hosts que estabelecem limites a vc. E para completar, a questão da edição, vc tera que mudar de DB para editar algo, que é mt chato.

Em fim, ébem melhor usar so um DB, okz?

(Desculpem, acho que minha resposta ta meio que,inflada, hheheheh)



#76708 Phpbb...

Posted by Xmagnum on 13/04/2003, 01:57 in PHP

erickcouto, vc esta errado, da pra traduzir a administração, se o rudesign quiser, pode pega-lo com todos os pacotes em portuques no link a seguir:
http://unix.wmonline.../phpBB_1757.zip



#84593 Problema Com O Lycos!

Posted by Xmagnum on 25/04/2003, 11:22 in PHP

Foxn, isso acontece no phpBB tb, a partir da verção 2.0.4, é problema com a lycos, okz?



#84027 Problema Com O Lycos!

Posted by Xmagnum on 24/04/2003, 12:59 in PHP

Cara, esse problema ñ pode ser bem resolvido, é um problema com a lycos,
quando nos usamos a função header com a url que tenha http:// ele vai para a pagina da lycos,
tende, isso ja aconteceu comigo, foi no phpBB 2.0.4, e como o seu é o invision eu ñ sei bem resolver,
tente usar uma verção anterior do invision, no phpBB eu usei a verção 2.0.1 e ñ deu problema.
Tente fazer isso, ou vc terá que pagar um servidor se ñ conceguir resolver de outro modo.
Okz?



#270974 Erro Invision

Posted by Xmagnum on 04/01/2004, 19:53 in PHP

Cara, qual o nome do seu Host? tipow, o forum fire ta com um problema por causa do Host dele.



#85044 Alguem Pode Me Ajudar?

Posted by Xmagnum on 25/04/2003, 21:16 in PHP

Duas coisinhas:
1º - qual a url desse script
2º - o erro é no DB, vc ja ativou o php na lycos? Se ja tente colocar como db assim: chattheweb2003_db_uk
deu certo?



#85291 Alguem Pode Me Ajudar?

Posted by Xmagnum on 26/04/2003, 10:06 in PHP

manda o link de download desse programa, ai eu vejo se é erro do programa ou ñ




IPB Skin By Virteq