Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

admin

Módulo 03

Recommended Posts

Curso de PHP online

 

Este curso está sendo desenvolvido pelos moderadores prescot-san, walace, Cerrito e Fabyo.

 

Módulo 3

 

Introdução

    [*]Variáveis Predefinidas

    [*] Escopo de variáveis

    [*] Cookies

    [*] Sessions

Variáveis Predefinidas

 

$GLOBALS

Contém um referência para todas as variáveis que são atualmente disponíveis dentro do escopo global do script. As chaves desse array são os nomes das variáveis globais.

$GLOBALS existe desde o PHP 3.

 

$_GET

Variáveis postadas para o script via método HTTP GET. Análogo ao antigo array $HTTP_GET_VARS (que ainda continua disponível, mas em decadência).

 

$_POST

Variáveis postadas para o script via método HTTP POST. Análogo ao antigo array $HTTP_POST_VARS (que ainda continua disponível, mas em decadência).

 

$_COOKIE

Variáveis postadas para o script via cookies HTTP. Análogo ao antigo array $HTTP_COOKIE_VARS (que ainda continua disponível, mas em decadência).

 

$_FILES

Variáveis postadas para o script via transferência de arquivos HTTP. Análogo ao antigo array $HTTP_POST_FILES (que ainda continua disponível, mas em decadência).

Veja uploads via método POST para maiores informações.

 

$_ENV

Variáveis disponíveis no script do ambiente de execução. Análogo ao antigo array $HTTP_ENV_VARS (que ainda continua disponível, mas em decadência).

 

$_REQUEST

Variáveis postadas para o script por todas os mecanismos de input GET, POST, e COOKIE não podem ter seu conteúdo garantido de qualquer forma.

A presença e a ordem de inclusão das variáveis nesse array é definida de acordo com a diretiva de configuração variables_order. Este array não tem um equivalente nas versões anteriores do PHP 4.1.0. Veja também import_request_variables().

 

$_SESSION

Variáveis que estão atualmente registradas na sessão do script. Análogo ao antigo array $HTTP_SESSION_VARS (que ainda continua disponível, mas em decadência).

Veja a sessão funções de manipulação de Sessões para maiores informações.

 

$_SERVER

Variáveis criadas pelo servidor web ou diretamente relacionadas ao ambiente de execução do script atual. Análogo ao antigo array $HTTP_SERVER_VARS (que ainda continua

disponível, mas em decadência).

 

$_SERVER é um array contendo informações como headers, caminhos e localizações do script. Os itens deste array são criados pelo servidor web. Não há garantias que todos os servidores web gerem todas elas: alguns servidores talvez omitam algumas ou geram outras que não estão listadas aqui. Mesmo assim, um grande número dessas variáveis estão de acordo com a especificação CGI 1.1, então você pode esperar encontrá-las nesse array.

 

PHP_SELF

O nome do arquivo do script atualmente em uso, relativo ao document root. Por exemplo, $_SERVER['PHP_SELF'] em um script com o endereço

http://example.com/test.php/foo.bar pode ser /test.php/foo.bar. A constante __FILE__ contém o caminho completo e nome do arquivo (mesmo incluído) atual.

Se estiver rodando o PHP em linha de comando, esta variável não está disponível.

 

argv

Array de argumentos passado para o script. Quando o script é executado na linha de comando, isto permite um acesso aos parâmetros de linha de comando no estilo do C.

Quando chamado via método GET, ele conterá a query string.

 

argc

Contém o número de parâmetros da linha de comando passados para o script (se executando da linha de comando).

 

GATEWAY_INTERFACE

O número de revisão da especificação CGI que o servidor está utilizando, por exemplo : 'CGI/1.1'.

 

SERVER_NAME

O nome host do servidor onde o script atual é executado. Se o script está rodando em um host virtual, este será o valor definido para aquele host virtual.

 

SERVER_SOFTWARE

A string de identificação do servidor, fornecida nos headers quando respondendo a requests.

 

SERVER_PROTOCOL

Nome e número de revisão do protocolo de informação pelo qual a página foi requerida, por exemplo 'HTTP/1.0';

 

REQUEST_METHOD

Contém o método de request utilizando para acessar a página. Geralmente 'GET', 'HEAD', 'POST' ou 'PUT'.

 

QUERY_STRING

A query string (string de solicitação), se houver, pela qual a página foi acessada.

 

DOCUMENT_ROOT

O diretório raiz sob onde o script atual é executado, como definido no arquivos de configuração do servidor.

 

HTTP_ACCEPT

O conteúdo do header Accept: da requisição atual, se houver.

 

HTTP_ACCEPT_CHARSET

O conteúdo do header Accept-Charset: da requisição atual, se houver. Exemplo: 'iso-8859-1,*,utf-8'.

 

HTTP_ACCEPT_ENCODING

O conteúdo do header Accept-Encoding: da requisição atual, se houver. Exemplo: 'gzip'.

 

HTTP_ACCEPT_LANGUAGE

O conteúdo do header Accept-Language: da requisição atual, se houver. Exemplo 'en'.

 

HTTP_CONNECTION

O conteúdo do header Connection: da requisição atual, se houver. Exemplo: 'Keep-Alive'.

 

HTTP_HOST

O conteúdo do header Host: da requisição atual, se houver.

 

HTTP_REFERER

O endereço da página (se houver) através da qual o agente do usuário acessou a página atual. Essa diretiva é informada pelo agente do usuário.

Nem todos os browsers geram esse header, e alguns ainda possuem a habilidade de modificar o conteúdo do HTTP_REFERER como recurso. Em poucas palavras, não é confiável.

 

HTTP_USER_AGENT

O conteúdo do header User-Agent: da requisição atual, se houver. É uma string denotando o agente de usuário pelo qual a página é acessada.

Um exemplo típico é: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Além de outras coisas,

você pode utilizar este valor com get_browser() para personalizar a geração de suas páginas para as capacidades do agente do usuário.

 

REMOTE_ADDR

O endereço IP de onde o usuário está visualizado a página atual.

 

REMOTE_HOST

O nome do host que o usuário utilizou para chamar a página atual. O DNS reverso (lookup) do REMOTE_ADDR do usuário.

Nota: Seu servidor web precisa estar configurado para criar essa variável. Por exemplo, no Apache você precisa colocar um HostnameLookups On

dentro do httpd.conf. Veja também gethostbyaddr().

 

REMOTE_PORT

A porta TCP na máquina do usuário utilizada para comunicação com o servidor web.

 

SCRIPT_FILENAME

O caminho absoluto o script atualmente em execução.

Nota: Se o script for executado pela CLI com um caminho relativo, como file.php ou ../file.php, $_SERVER['SCRIPT_FILENAME'] irá conter o caminho relativo especificado pelo usuário.

 

SERVER_ADMIN

O valor fornecido pela diretiva SERVER_ADMIN (do Apache) no arquivo de configuração do servidor. Se o script está sendo executado em um host virtual, este será os valor definido para aquele host virtual.

 

SERVER_PORT

A porta na máquina servidora utilizada pelo servidor web para comunicação. Como default, este valor é '80'. Utilizando SSL, entretanto, mudará esse valor para a porta de comunicação segura HTTP.

 

SERVER_SIGNATURE

String contendo a versão do servidor e nome do host virtual que é adicionado às páginas geradas no servidor, se ativa.

 

PATH_TRANSLATED

O caminho real do script relativo ao sistema de arquivos (não o document root), depois realizou todos os mapeamentos de caminhos (virtual-to-real).

Nota: A partir do PHP 4.3.2, PATH_TRANSLATED não mais existe implicitamente sob a SAPI do Apache 2, ao contrário da mesma situação no Apache 1, onde ela tinha o mesmo valor da variável de servidor SCRIPT_FILENAME, quando a mesma não era configurada pelo Apache. Essa mudança foi realizada para conformidade com a especificação CGI, onde PATH_TRANSLATED deve existir somente se PATH_INFO estiver definida.

Apache 2 users may use AcceptPathInfo = On inside httpd.conf to define PATH_INFO.

 

SCRIPT_NAME

Contém o caminho completo do script atual. Útil para páginas que precisam apontar para elas mesmas (dinamicamente). A constante __FILE__ contém o caminho completo e nome do arquivo (mesmo incluído) atual.

 

REQUEST_URI

O URI fornecido para acessar a página atual, por exemplo, '/index.html'.

 

PHP_AUTH_USER

Quando executando sob o Apache como módulo e fazendo autenticaçào HTTP, esta variável estará definida com o username fornecido pelo usuário.

 

PHP_AUTH_PW

Quando executando sob o Apache como módulo e fazendo autenticaçào HTTP, esta variável estará definida com a senha fornecida pelo usuário.

 

AUTH_TYPE

Quando executando sob o Apache como módulo e fazendo autenticaçào HTTP, esta variável estará definida com o tipo de autenticação utilizado.

Esta é uma variável 'superglobal', ou automaticamente global. Isto significa que ela é disponível em todos os escopos (níveis) de um script.

Você não precisa fazer um global $_SERVER; para pode acessá-la dentro de funções ou métodos, como era necessário com $HTTP_SERVER_VARS.

 

Escopo de variáveis

 

Quando uma variável é usada dentro de uma função, pode haver uma outra variável com o mesmo nome que é utilizada em outra função ou no código do programa principal. São espaços de memória diferentes, e cada uma funciona dentro do seu contexto, ou seja, a variável definida dentro de uma função só pode ser acessada ali dentro. Fora dali seu valor não é acessível em nenhuma outra parte do programa, mas é possível usar dentro de uma função o valor de uma variável existente também no programa principal, tem dois jeitos para isso:

 

Defini-la como global no inicio da função ou utilizar o array predefinido $GLOBALS, que utiliza os nomes das variáveis como associativa

 

Exemplo:

 

[tr][/tr][tr][/tr]
PHP

<?php

 

$num = 1500;

function escopo()

{

global $num;

$num += 5;

echo $num."<br>";

}

echo $num."<br>";

escopo();

 

?>

 

Cookies

 

O famoso cookie que nós conhecemos hoje foi criado em junho de 1994

Antigamente cada visita a um site era como se fosse a primeira visita, sem forma automática de se saber se um usuário já esteve ali, ou que páginas havia consultado. Qualquer transação comercial tinha que ser feita do início ao fim em uma só visita, e os visitantes tinham que passar pelas mesmas páginas vezes seguidas ,era como visitar uma loja onde o vendedor tinha amnésia.

 

O criador do cookie chama-se Lou Montulli, ele foi o nono funcionario a ser contratado por uma empresa que logo depois se tornaria a Netscape Communications, Montulli era um hacker, mas naquele tempo o nome hacker era usado no bom sentido quando uma pessoa entendia muito de computadores. Quando ele teve a ideia de inventar o cookie a solução encontrada era que cada computador de site da Web colocasse um pequeno arquivo na máquina de cada visitante, que acompanhasse seus passos dentro do site visitado. Montulli chamou essa nova tecnologia de "objeto do estado de cliente persistente”, mas ele tinha um nome mais charmoso em mente, um do início da computação. Naquela época, as máquinas trocavam pedaços de informação para propósitos de identificação e os primeiros programadores chamaram os dados trocados de "magic cookies", biscoitos mágicos. Montulli chamou sua invenção, descendente direta desses, de "cookie", biscoito.

 

Foi um marco na história da computação: de um só golpe, os cookies mudaram a Web, que passou de um lugar de visitas descontínuas para um ambiente rico, no qual comprar, brincar e até viver, para alguns.

 

Fundamentalmente, os cookies alteraram a natureza da navegação pela Web. Ela passou de uma atividade relativamente anônima, como caminhar pelas ruas de uma metrópole, para um ambiente onde os registros das transações, movimentos e até desejos podem ser armazenados, avaliados, minados e vendidos.

 

Graças aos cookies, um cliente que faz uma compra em um site pode abandonar seu carrinho de compras antes de finalizar a compra e voltar mais tarde ao site, que perguntará se ele deseja fazer seu pedido.

Os cookies também permitem aos sites mostrarem anúncios diretamente ligados às partes do site visitadas pelo navegador. Assim, alguém visitando um site orientado para a saúde que lê informações sobre drogas para diabetes poderá ver um anúncio de nova medicação para a doença.

 

Todas essas funções podem ser feitas sem o conhecimento do nome do visitante, porque o identificador anônimo e único incluído no cookie, é suficiente. Mas, se um proprietário de site da Web combinar esse identificador com informações pessoais do visitante, do momento de sua inscrição no site, por exemplo, então o cookie se torna um mecanismo poderoso de monitoramento individual.

 

O php usa a função setcookie para enviar o cookie para o usuário essa função também é usada para excluir o próprio cookie, exemplo de criação de um cookie:

 

setcookie("nome_do_cookie", "valor_do_cookie", "tempo de expiração");

No tempo de expiração você pode usar a função time() + os segundos veja exemplo

 

[tr][/tr][tr][/tr]
PHP

<?

 

setcookie("cookie", "teste", time() + 3600);

 

?>

 

Esse cookie tem uma validade de 1 hora

 

[tr][/tr][tr][/tr]
PHP

<?

 

setcookie("cookie", "teste", time() + 3600*24*365);

 

?>

 

Esse cookie tem validade de um ano

 

3600 segundos = 1 hora

3600 segundos vezes 24 horas

24 horas vezes 365 dias

 

Para excluir um cookie basta fazer a mesmo sistema que criar ele, mas usando um prazo de expiração negativa.

 

[tr][/tr][tr][/tr]
PHP

<?

 

setcookie("cookie", "teste", time() – 3600*24*365);

 

?>

 

Veja acima o cookie que tinha validade de um ano será excluído pq foi passado que o tempo dele agora é de um ano atrás, ou seja, já acabou.

 

Sessions

 

Uma sessão (session) é um período de tempo durante o qual uma pessoa navega num site.

Uma sessão é gravada no servidor, e o tempo de duração de uma sessão pode ser ate o usuário fechar a página.

Quando o usuário entra no site criamos uma sessão e ela recebe um número identificador único, chamado de session_id, para uma pagina ter o acesso aos dados da sessão ela tem que ter esse número identificador.

 

Para criar uma sessão sempre se utiliza session_start() e antes de qualquer saída html.

 

Exemplo:

 

[tr][/tr][tr][/tr]
PHP

<?

 

session_start();

 

$_SESSION["teste"] = 1;

 

?>

 

Foi criado uma sessão com o nome se teste e valor 1

 

E nas paginas seguintes você pode restaurar esse valor assim:

 

 

[tr][/tr][tr][/tr]
PHP

<?

 

session_start();

 

echo $_SESSION["teste"];

 

?>

 

Você pode usar session_register() para registrar suas variáveis, no caso, o nome da variável na sessão será a mesma do nome da variável gravado, exemplo:

 

[tr][/tr][tr][/tr]
PHP $linguagem = "PHP";

session_register("linguagem");

Nesse caso foi gravada a variável $linguagem na variável de sessão “linguagem”, eis a vantagem de se usar $_SESSION que é recomendado a partir da versão 4.1, já que você poderá definir o nome da variável na sessão.

 

Obs.: session_register trabalha com register_globals on, e como está em extinção o uso em on, é sempre recomendado então usar $_SESSION, aliás, as facilidades são muito maiores, já que você trabalhará com elas como uma variável normal.

 

Onde posso usar sessões?

 

Na verdade, as sessões são geralmente usadas pra criar lojas virtuais e sistemas de login, onde o usuário entrará com usuário e senha em um formulário. Buscará no banco de dados (ou o que estiver usando com um) e se achar algum usuário gravará na sessão uma identificação que dirá que ele já foi logado. Isso somente durará até o fechamento do browser. Logo, grande parte dos websites ainda usam cookies por esse motivo. Até hoje, a única maneira de você sair de um site, entrar mais tarde e tudo estar do jeito que você via antes é usando os cookies.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tambem gostaria de parabenizar o pessoal responsavel por isso, realmente faltava algo assim desde o principio ate num sei onde vai ueahuaehea... mas ta rox, se mexer com o phpmyadmin e as conexao opa.. melhor ainda, podia ate ter uma sugestao de um projetinho no fim do curso ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para excluir um cookie, foi passado acima, utilizar a função setcookie com o valor de tempo_de_expiração com um número negativo. Isso pode ser feito mais facilmente com a função unset_cookie(), certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao existe essa função que você passou

 

http://br.php.net/manual/pt_BR/function.setcookie.php

 

Exemplo 1. setcookie() enviando cookies

 

<?php

$value = 'something from somewhere';

 

setcookie("TestCookie", $value);

setcookie("TestCookie", $value, time()+3600); /* expira em uma hora */

setcookie("TestCookie", $value, time()+3600, "/~rasmus/", ".example.com", 1);

?> 

 

 

 

Exemplo 2. Exemplo setcookie() de exclusão

 

<?php

// define a data de expiração do cookie para uma hora atrás

setcookie ("TestCookie", "", time() - 3600);

setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".example.com", 1);

?> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que andei pesquisando, só existe uma função para trabalhar com os cookies, que é a setcookies()?

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma duvida das variaveis pré definidas, como eu as uso ?eemplo em ASPpara ver o ip tambem utilizo o remote_addrRequest.servervariables("remote_addr")ele me traz o IP, só que dei apenas um echo e ele da erro... não entendi como utilizar essas variaveis, não é igual mostrar uma variavel comum ?echo $REMOTE_ADDR;Desculpa e ignorancia...rsAbraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kara $_SERVER['REMOTE_ADDR'] serve para mostrar ou coletar o ip da pessoa que está acessando sua página...você pode usar ela numa enquete por ex, onde queira restringir a um voto por ip...pra fazer isso você grava essa variavel me banco por exemplo e depois verifica se aquele ip já existe ou não...caso exista não vota novamente...espero que tenha lhe ajudado...abraçosMarcio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só completando sobre o $_SERVER

 

$_SERVER é uma variavel predefinida

 

Variáveis criadas pelo servidor web ou diretamente relacionadas ao ambiente de execução do script atual.

 

veja mais:

 

http://www.php.net/manual/pt_BR/reserved.v...ariables.server

 

outro jeito de pegar o ip

 

getenv -- Obtém uma variável de ambiente

 

<?php
$ip = getenv("REMOTE_ADDR"); // obtém o número ip do usuário
?> 

 

http://br2.php.net/manual/pt_BR/function.getenv.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

A uma dúvida, qual a melhor forma de se matar sessions ?Igual np asp eu uso session.abandon alem que limpo as mesmas com session("nome") = emptyPra se fazer um logout qual melhor forma de se limpar e matar sessions ?Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://br2.php.net/session_destroy

 

http://br2.php.net/manual/pt_BR/ref.session.php

 

agora se for autenticação por HTTP nao tem como fazer logout, digo isso por segurança os navegadores nao deixam deslogar só fechando o navegador mas tirando o IE que nao tem segurança porque no IE ele deixa deslogar usando javascript

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia !!! Peguei este exemplo:$nome = $_POST["nome"]; na importação de uma variavel externa, gostaria de saber se tenho q defirnir alguma coisa no arquivo HTML ?Pois não esta funcionando e o dreamw diz q o erro é aqui !Agradeço a ajuda !!Starsky

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!!

 

Estava com uma dúvida e vim consultar o imaster sobre as variavéis pré definidas, eu li todo o material e também no manual do PHP, mas não entendi, ou melhor, não consegui "traduzir" para o código que eu tenho aqui.

 

Estou estudando o OS commerce, e não entendi o que acontece nessa linha:

PHP

[*]if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'];

 

Alguém poderia me esclarecer, não consegui relacionar a definição com esse código!

 

Obrigada!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho uma duvida sobre session bom eu to fazendo os exemplos mas nao consegui enteder como funciona a session aqui no php no asp e simples você cria ela e ja sera agora aqui nao consigo criar a session nem verificar se ela ta com valor nulo vou postar como estou fazendo.

 

<?php

session_start();

if($_SESSION["usuario"]==""){ // ele da esse erro Notice: Undefined index: usuario in C:\inetpub\wwwroot\cjprofile\admin\index.php on line nessa linha

echo "você não esta logado";

exit;

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.