[Powered by Google Translate] [Semana 8, Continuação] [David J. Malan] [Harvard University] [Esta é CS50.] [CS50.TV] Este é CS50, de modo que este é o fim da Semana 8 aqui. Nós, naturalmente, tinha um pouco de um furacão no início desta semana, então agora é realmente só você e eu nesta sala de aula, mas hoje, continuamos nossa conversa sobre PHP e sobre a programação web em geral, e também introduzir a idéia de bancos de dados, especialmente um chamado MySQL, que é bastante popular nos dias de hoje, em grande parte devido à sua escalabilidade, bem como porque o seu ser livre e de código aberto. Mas, primeiro, um olhar de onde paramos da última vez. Lembre-se que estávamos a olhar para os vários exemplos Frosh mensagens instantâneas, e esta foi a forma horrível que eu vim com uns 15 + anos atrás a fim de que os alunos sobre registo campus para esportes caloiro intramurais sem realmente ter de percorrer mais em todo o quintal para Wigglesworth a deslizar um pedaço físico de papel debaixo da porta alguns Proctor. Em vez disso, mudou tudo online, mas para isso é necessário fazer uso de algumas tecnologias, para um, precisávamos de HTML, linguagem de marcação de hipertexto, que mais uma vez é esta linguagem de marcação com o qual você construir páginas web estruturalmente. Usando um pouco de CSS estes dias, as folhas de estilo em cascata, pelo qual usamos estilizações da página web usando uma sintaxe um pouco diferente, enquanto que o HTML foi tudo sobre a sua estrutura. Precisamos também de introduzir uma linguagem de programação web. Neste caso, vamos usar o PHP e PHP vai permitir-nos a saída de conteúdo de forma dinâmica, bem como fazer as coisas como programáticas envio de e-mails, como foi o caso sobre a nota que saiu na semana passada. Lembre-se que o código para isso foi em 2 partes. Um deles, tivemos froshims3.php, e este foi em grande parte de marcação com um formulário HTML dentro dele, um pouco de CSS aqui em os atributos de estilo para que a forma em si seria centrado na página, mas para além disso tivemos algumas entradas forma representativa, um campo de texto, uma caixa de seleção, alguns botões de rádio, um menu de seleção, e um botão de envio. E através deste formulário, submetidos a um arquivo que foi aparentemente chamado register3.php, que por si só parecia um pouco algo como isto. Agora, a maior parte do código em register3.php, recall, era tudo sobre e-mail. Ele fez um pouco de validação do formulário que foi enviado para assegurar que os campos foram realmente desde que se esperava. Em seguida, chamado algumas funções PHP usando um pouco nova sintaxe, mesmo que seja emprestado de C. Este operador seta nos permite fazer uso de algo chamado programação orientada a objetos. Nós não vamos entrar nesse em detalhes aqui, mas sei que por agora é uma maneira de ter funções associadas com os objetos, que são um tipo especial de estrutura, como vimos em C. Mas, por agora, basta ter fé em que esta é a sintaxe correta para usar ao usar uma biblioteca como esta biblioteca PHPMailer. E então, no final deste arquivo que tinha gerado dinamicamente um e-mail que foi enviado para a minha conta jharvard@cs50.net da minha conta jharvard@cs50.net, e informado ao usuário, assim, que foram registrados para este esporte. Isso é muito bonito o que o site de mensagens instantâneas Frosh fez todos esses anos atrás quando eu implementado, concedido, em um idioma diferente, mas mostra-lhe, talvez, o poder que você tem agora que você pode se expressar não só programaticamente a um nível baixo em uma linguagem como C, mas a um nível muito mais elevado com estas aplicações do mundo real, como e-mail muito para realmente resolver alguns problemas do mundo real. Agora, é claro, apesar de eu usar esse script para gerar algum dinamicamente a partir de e-mails jharvard@cs50.net, o que é de fato uma conta que eu tenho acesso, a não ser muito cuidadoso para enviar email somente de contas que são, na verdade, o seu próprio, para que as coisas se você em um pouco de água quente na vida. Com isso dito, vamos agora transição para a resolução de um problema completamente diferente, a de estados de retenção. Agora, o que isso realmente significa? HTTP, este protocolo de transferência de hipertexto, é na verdade um protocolo sem estado, eo que isto significa é que quando você puxa algo como Google.com e tecle enter normalmente o seu navegador tem algum tipo de ícone que, então, girando resulta em alguma página da Web que está sendo baixado, e depois que pequeno ícone parar de girar, e que de fato sugere HTTP que tenha concluído algum tipo de conexão com o servidor e é isso. O HTTP é stateless no sentido de que ele não mantém uma conexão persistente com o servidor no Skype mesma forma faz ou Gchat faz porque com HTTP o pressuposto é que uma vez que você foi buscar uma página web que é isso. Agora, na realidade estes dias em sites como Facebook e Google Maps e Twitter e afins não há dinamismo muito mais pelo qual mesmo depois que o ícone parar de girar você pode de fato ter mais atualizações do servidor, mais tweets, mais atualizações de status no Facebook e afins. Mas mesmo que está usando uma técnica que nós vamos falar em uma ou duas semanas conhecido como Ajax usando uma linguagem chamada JavaScript, mas no final do dia, o HTTP é ainda sem estado. E ainda se você quiser alguma forma lembrar de coisas sobre um usuário mesmo depois de terem desligado do servidor PHP faz dar-lhe um meio de fazer isso porque, como vimos pela última vez, PHP tem um número de superglobals, e uma superglobal é, novamente, uma variável global especial que é entregue a você pelo servidor web e pelo próprio PHP. Você não tem que fazer nada para colocar valores em que, e entre os superglobals que temos visto até agora são obter e postar, que é onde os campos do formulário são colocados automaticamente para você, bem como um par de outros que nós não vimos ainda. Dentro de $ _SERVER são algumas variáveis ​​especiais relacionados com o próprio servidor. Qual é o endereço IP, o que protocolo, HTTP ou HTTPS que você usa, o método de solicitação que você usa e afins, por isso há algumas interessantes, detalhes suculentos sobre o servidor, e, na verdade, o usuário de lá também. Há $ _COOKIE, que é onde essas coisas chamados cookies são armazenados. Nós não vamos gastar tempo com os cookies-se hoje, mas sei agora que um cookie é apenas um pequeno pedaço de informação que um servidor web pode plantar em um navegador e por sua vez a sua memória RAM ou disco rígido seu computador para armazenar informações sobre um usuário, por exemplo, seu nome de usuário de modo que eles não tem que digitá-lo cada vez que entrar ou algum número exclusivo ou identificador para esse usuário de modo que você não tem que incomodar-los com os mesmos tipos de perguntas sobre preferências no futuro, mas a maioria de interesse agora é de R $ _SESSION. Este superglobal, que, como os outros, é entregue a você automaticamente pelo PHP quando você está escrevendo baseado em PHP sites pode armazenar o que quiser, strings, inteiros, pontos flutuantes, valores, matrizes, objetos, realmente qualquer coisa que você quer, e ele permite que você guarde-o de tal forma que, mesmo se o usuário visitar você agora e depois volta de um minuto a partir de agora ou 5 minutos a partir de agora, porque eles levam o seu tempo antes de clicar em algum outro link PHP irá garantir que o que você colocar na sessão que superglobal minutos ou 5 minutos atrás ainda estará lá quando o usuário retorna. E debaixo da capa desta superglobal é implementado por meio de essas coisas chamados cookies, mas por enquanto, é apenas uma abstração qual é uma espécie de o equivalente a um carrinho de compras. O que quer que você, programador, coloque em que array associativo superglobal vai estar lá algum número de minutos depois até que você apagá-lo ou até que o usuário fecha seu navegador completamente. Vamos dar uma olhada em um exemplo de como essa coisa é realmente utilizada. Em counter.php entre peças de hoje de código temos a linha a seguir. No início deste arquivo, temos um monte de comentários azuis, que são desinteressantes para agora. Mas, na linha 13, temos uma nova linha, session_start, e que, na verdade, faz exatamente o que diz. Inicia-se sessões. Ele permite que você use esse grande _SESSION superglobal $, e é tão simples como isso. Agora, se continuar a procurar na linha 16, vamos tentar descobrir o que esta página web vai fazer. If (isset ($ _SESSION ["contador"]), então vá em frente e guarde na variável de contador, contador de minúsculas, $ _SESSION ["Contador"]. Este parece ser declarar uma variável local chamada contador dentro da qual está colocando uma cópia de tudo o que está dentro da superglobal chamado sessão no local "contador". Outra, aparentemente, este contador local pouco variável, é inicializado a 0. Mas, em seguida, algumas linhas mais tarde, em 26 aviso que a cópia da sessão de balcão, sua chave, tem um valor atribuído novo, que é o seu valor atual mais 1. Em suma, este arquivo parece estar atualizando um contador que está armazenado dentro do superglobal sessão aumentando-o de 1, mas retém uma primeira cópia do valor anterior armazenando-o em uma variável local chamada $ contador, e aqui vamos ver o que permanece. Acontece que é muito bonito apenas HTML. Na parte inferior desta página vemos na linha 37 que já visitaram este site número do contador de vezes, por isso há um par de características interessantes aqui. Um deles, esta é claramente uma variável, mas isso não basta apenas colocar $ Contador no corpo de seu HTML porque, naturalmente, se é só lá entre seu PHP HTML vai assumir que é apenas HTML. Você literalmente quer US $ contador a ser impresso na tela. Mas, em vez de cair em modo PHP com este pedaço de sintaxe que pode inserir dinamicamente um valor aqui muito semelhante em espírito para o que fizemos da última vez com inserir valores em cordas. Na verdade, esta é apenas uma notação abreviada para dizer algo como isso literalmente, print ($ contador) ou mesmo algo como printf (% s, contador), ou mesmo, como você pode ter visto online ou em livros didáticos, há uma função em PHP chamado eco que faz a mesma coisa, e de todos aqueles são apenas formas mais fôlego de dizer