Dauntless comenta php. Sistema de comentários simples usando AJAX. sintaxe de comentário php: comentário de linha única

Uma vez escrevi sobre . Então, nós só consideramos lá " ambicioso"representantes. No entanto, nem sempre seus " ambição"Isso nos ajuda, muitas vezes dói. Um pouco mais abaixo vou mostrar um exemplo onde você pode ver claramente o que eles às vezes fazem, e também mostrar como reduzir seu ardor e fazer quantificadores de repetição são "preguiçosos".

Vejamos um exemplo simples e já clássico:

$str = "Pequeno linha c negrito seleção.";
.*<\/b>
echo $resultado_str;
?>

Talvez você esteja esperando algo assim: Bold_highlight pequeno aqui com bold_highlight aqui". Ou seja, apenas substituindo o conteúdo dentro da tag<b> à string que especificamos junto com a própria tag. No entanto, isso não é inteiramente verdade, pois é aqui que " ganância de quantificadores". E como resultado, a substituição não estava dentro de cada tag<b>, mas desde a primeira tag de abertura até a última tag de fechamento. Isso é que é ganância.

Veja como escrever este código para que a substituição aconteça da maneira que queremos:

$str = "Pequeno linha c negrito seleção.";
$result_str = preg_replace("/ .*?<\/b>/i", "bold_highlight_here", $str);
echo $resultado_str;
?>

Tudo o que mudamos é o regex após o quantificador de repetição " .* "ponto de interrogação, que é apenas torna o quantificador "preguiçoso". Agora o resultado será: " Um pequeno destaque em negrito aqui com um realce em negrito aqui. que é o que estávamos tentando alcançar.

Eu realmente espero que você entenda o problema. quantificadores de "ganância" e entender como eles funcionam. E também percebi como isso pode ser corrigido com um simples sinal " ? ". Este tópico é muito importante e um grande número de iniciantes em expressões regulares comete os mesmos erros relacionados a "ganância" de quantificadores de repetição, portanto, se você ainda não percebeu todo o significado até o fim, releia o artigo novamente.

25.04.2017


Olá a todos!
Continuamos a aprender o básico do PHP do zero!
Nesta aula vou falar o que é um comentário em PHP e na prática vamos tentar escrever seu comentário no código. Mas isso não é tudo. Também quero dizer a você como comentar o código e por que isso deve ser feito.

O que é um comentário emPHP
Comentar emPHPé uma dica do desenvolvedor php para orientação rápida no código, bem como para edição.

Um comentário em PHP não é visível para o usuário que abriu a página da web para visualização. Mesmo que o usuário decida procurar fonte página, o comentário ainda não estará visível, pois todos os arquivos php.

Comentário do código PHP

Existem 2 tipos de comentários para o código PHP:

→ uma linha
→ multilinha

⇒ Comentário de linha única para PHP
Para um comentário de uma linha, use os caracteres "//" ou "#"

Após esses caracteres, tudo o que for escrito em uma linha será ignorado e tratado como comentário.

Inscreva-se para atualizar"; # inscreva-se (isto é um comentário) ?>


Inscreva-se para atualizar

⇒ Comentário multilinha para PHP
Um comentário multilinha para PHP começa com "/*" e termina com "*/".
Qualquer coisa entre esses caracteres será ignorada e tratada como um comentário.
Um comentário de várias linhas é usado se houver várias linhas na entrada.

Na tela, você verá apenas o seguinte texto:

Olá leitores do blog - site !!!

PS: Sempre comente seu código. Se você acha que vai se lembrar de tudo o que fez no código em 1 a 2 anos, está enganado, a chance é muito pequena. Mesmo que você se lembre, terá que gastar muito tempo estudando - o quê, onde e por quê ...
Torne o futuro agradável para você - comente o código e então você dirá a si mesmo "OBRIGADO!!!".
Deixe um comentário no código, levará 1 minuto do seu tempo, mas economizará um dia inteiro no futuro.

Comente o código PHP

Digamos que você escreveu um código php, mas por algum motivo você precisa remover 2 linhas do código.
Não tenho pressa em remover algo do código, especialmente se for código php, é melhor comentar. E de repente será necessário devolver o código. É mais fácil descomentar do que escrever código de uma nova maneira.

Como comentar o código emPHP
Um exemplo com um comentário de uma única linha:

Inscreva-se para atualizar"; ?>

Um exemplo com um comentário de várias linhas.

Etapa 1 - XHTML

Primeiro, vamos ver a marcação de comentário. Código dado gerado pelo PHP com classe Comente .

demo.php

Nome do usuário
30 de junho de 2010

Texto do comentário

div avatar contém um link (se o usuário digitou a URL correta ao postar o comentário) e a imagem do avatar que obtemos de gravatar.com . Voltaremos a gerar a marcação na etapa do PHP. No final segue div nome div Tempo e texto do comentário.

Outro elemento importante em XHTML é o formulário de comentário. ela manda com PUBLICAR. Todos os campos, exceto URL, devem ser preenchidos.

demo.php

Adicione um comentário

O formulário é enviado usando AJAX. A verificação é executada em segundo plano submit.php. Cada campo tem um elemento correspondente rótulo, com conjunto de atributos para .

Etapa 2 - PHP

PHP lida com a comunicação com o banco de dados Dados MySQL e gera a marcação para o comentário. Ele também obtém o final da solicitação AJAX e insere os dados do comentário na tabela comentários.

demo.php

/* / Selecione todos os comentários e preencha o array $comments com objetos */ $comments = array(); $resultado = mysql_query("SELECT * FROM comments ORDER BY id ASC"); while($linha = mysql_fetch_assoc($resultado)) ( $comentários = novo Comentário($linha); )

A consulta MySQL seleciona todos os registros da tabela e preenche a matriz $comentários objetos de classe Comente. Essa matriz é gerada posteriormente quando o script é executado.

demo.php

/* / Imprime os comentários um a um: */ foreach($comments as $c)( echo $c->markup(); )

Cada comentário tem um método marcação(), que gera o código HTML correto, pronto para ser exibido na página. A seguir estão as definições de classe e método.

A classe recebe uma linha do banco de dados (obtida usando mysql_fetch_assoc()) e armazená-lo em uma variável $dados. Está disponível apenas para o método de classe.

comment.class.php - Parte 1

class Comment ( private $data = array(); public function __construct($row) ( /* / Construtor */ $this->data = $row; ) public function markup() ( /* / Este método gera marcação XHTML para */ // Defina um alias para evitar escrever $this->data toda vez: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"] ) ( // Se uma URL foi inserida ao adicionar um comentário, // determine as tags de link de abertura e fechamento $link_open = ""; $link_close = ""; ) // Converta a hora para o formato UNIX: $d["dt" ] = strtotime ($d["dt"]); // Necessário para definir a imagem padrão: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]) ."/ img/default_avatar.gif"; return "
".$link_open." ".$link_close."
".$link_open.$d["nome"].$link_close."
".date("d M Y",$d["dt"])."

".$d["corpo"]."

"; }

O script usa gravatar para representar o avatar nos comentários. Gravatar é um serviço muito útil que combina um avatar com um endereço de e-mail. A imagem do avatar pode ser facilmente obtida passando a função codificada md5() seu endereço de e-mail em gravatar.com.

O script determina a URL na qual é executado e determina o endereço exato da imagem default_avatar.gif. Essa imagem é passada junto com o hash md5 e, se nenhum avatar for encontrado para o endereço de e-mail fornecido, uma imagem alternativa será exibida.

comment.class.php - Parte 2

public static function valid(&$arr) ( /* / Este método é usado para validar dados enviados via AJAX. / / Retorna verdadeiro/falso dependendo da validade dos dados, e preenche / o array $arr, que é passado como um parâmetro com dados ou */ $errors = array(); $data = array(); // Use a função filter_input introduzida no PHP 5.2.0 if(!($data["email"] = filter_input(INPUT_POST ,"email",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Por favor, digite um e-mail válido."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL) )) ( // Se uma URL inválida foi inserida no campo URL, // aja como se nenhuma URL tivesse sido inserida: $url = ""; ) // Use um filtro com uma função de retorno de chamada: if(!($data[ "body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Comentário::validate_text")))) ( $errors["body"] = "Por favor, insira o texto do comentário."; ) if(!($data["nome"] = filter_input(INPUT_POST,"nam e",FILTER_CALLBACK,array("options"=>"Comentário::validate_texto")))) ( $errors["name"] = "Por favor, digite um nome."; ) if(!empty($errors))( // Se houver erros, copie o array $errors para $arr: $arr = $errors; return false; ) // Se a entrada estiver correta, limpe os dados e copie-o para $arr : foreach($data as $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // email deve estar em letras minúsculas: $arr["email"] = strtolower( trim($arr["email"])); retornar verdadeiro; )

Método validar()(também parte de uma classe) é definido como estático. Isso significa que ele pode ser chamado diretamente com a construção comentário::validate(), sem criar um objeto de classe. Este método valida dados que são passados ​​por AJAX.

O método usa novo recurso filtro, que se tornou disponível em PHP 5.2.0. Dessa forma, podemos verificar e filtrar facilmente os dados que são passados ​​para o script. Por exemplo, filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL) significa que verificamos se $_POST["url"] URL correto. Se sim, a função retorna o valor da variável, caso contrário, retorna o valor falso.

Antes de usar tal função, era necessário usar expressões regulares para validar os dados (usando uma série de construções E se). Um benefício adicional é que obtemos os dados antes de fazer qualquer transformação específica.

Também é possível definir uma função que realizará modificações adicionais nos dados.

comment.class.php - Parte 3

função estática privada valid_text($str) ( /* / Este método é usado como FILTER_CALLBACK */ if(mb_strlen($str,"utf8")<1) return false; // Кодируем все специальные символы html (<, >, ", & .. etc) e converta // o caractere de nova linha em uma tag
: $str = nl2br(htmlspecialchars($str)); // Remova quaisquer novas linhas restantes $str = str_replace(array(chr(10),chr(13)),"",$str); retornar $str; )

último método validar_texto passado como uma função de retorno em duas chamadas filter_input. Ele converte todos os caracteres HTML especiais, o que efetivamente bloqueia ataques XSS. Também substitui novas linhas por tags
.

submit.php

/* / Este array será preenchido com dados / que são passados ​​para o script, / ou mensagens de erro. /*/ $arr = array(); $validates = Comentário::validate($arr); if($validates) ( /* Tudo bem, insira os dados no banco de dados: */ mysql_query(" INSERT INTO comments(name,url,email,body) VALUES ("".$arr["name"]."", "".$arr["url"]."", "".$arr["email"]."", "".$arr["corpo"]."")"); $arr["dt "] = date("r",time()); $arr["id"] = mysql_insert_id(); /* / Os dados em $arr são preparados para consulta mysql, / mas precisamos exibi-los, então / estamos preparando todos os elementos do array: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); /* Imprime a marcação do comentário recém inserido: */ echo json_encode (array("status "=>1,"html"=>$insertedComment->markup())); ) else ( /* Exibir mensagens de erro */ echo "("status":0,"erros":". json_encode($arr ).")"; )

submit.php busca um comentário dos dados por meio de uma solicitação AJAX. Valida e gera um objeto JSON contendo marcação XHTML com um comentário incorporado ou uma lista de erros. propriedade de uso do jQuery status para determinar o que deve ser exibido - uma mensagem de erro ou adição de marcação de comentário à página.

Abaixo estão dois exemplos.

Resposta bem-sucedida

( "status": 1, "html": "Código Html do comentário vem aqui...")

Propriedade html contém o código do comentário.

Resposta de erro

( "status": 0, "errors": ( "email": "Por favor, insira um e-mail válido.", "body": "Por favor, insira um corpo de comentário.", "name": "Por favor, insira um nome." ) )

Quando há um erro, o jQuery percorre o objeto errors e exibe mensagens próximas aos campos com erros.

Etapa 3 - CSS

Agora que a marcação foi gerada e exibida corretamente na página, podemos passar para o estilo.

estilos.css - Parte 1

.comment, #addCommentContainer( /* Estilo para comentários */ padding:12px; width:400px; position:relative; background-color:#fcfcfc; border:1px sólido branco; color:#888; margin-bottom:25px; / * Cantos arredondados e sombras CSS3 */ -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; -moz-box-shadow:2px 2px 0 #c2c2c2; -webkit-box- shadow:2px 2px 0 #c2c2c2; box-shadow:2px 2px 0 #c2c2c2; ) .comment .avatar( /* / O avatar está posicionado absolutamente. / Offset externo para o comentário div /*/ height:50px; left:- 70px; position :absolute; width:50px; background:url("img/default_avatar.gif") no-repeat #fcfcfc; /* Centralizar verticalmente: */ margin-top:-25px; top:50%; -moz- box-shadow :1px 1px 0 #c2c2c2; -webkit-box-shadow:1px 1px 0 #c2c2c2; box-shadow:1px 1px 0 #c2c2c2; )

div .Comente e #addCommentContainer têm o mesmo estilo. Várias regras CSS3 são usadas para arredondar cantos e refletir sombras.

estilos.css - Parte 2

.comment .avatar img( display:block; ) .comment .name( tamanho da fonte:20px; padding-bottom:10px; color:#ccc; ) .comment .date( tamanho da fonte:10px; padding:6px 0; position:absolute; right:15px; top:10px; color:#bbb; ) .comment p, #addCommentContainer p( font-size:18px; line-height:1.5; overflow-x:hidden; ) #addCommentContainer input, # addCommentContainer textarea( /* Estilo de entrada */ display:block; border:1px solid #ccc; margin:5px 0 5px; padding:3px; font-size:12px; color:#555; font-family:Arial, Helvetica, sans -serif; ) #addCommentContainer textarea( largura:300px; ) label( font-size:10px; ) label span.error( color:red; position:relative; right:-10px; ) #submit( /* botão "Enviar" " */ background-color:#58B9EB; border:1px solid #40A2D4; color:#FFFFFF; cursor:pointer; font-family:"Myriad Pro",Arial,Helvetica,sans-serif; font-size:14px; font -weight:bold; padding:4px; margin-top:5px; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; ) #s enviar:hover( cor de fundo:#80cdf5; cor da borda:#52b1e2; )

Na segunda parte, definimos os estilos para comentários e elementos de formulário. Observemos o seletor entrada, que destaca elementos dependendo de um atributo modelo.

Passo 4 - jQuery

Agora vamos passar para jQuery.

script.js

$(document).ready(function()( /* O código a seguir é executado somente depois que o DOM é carregado */ /* Este sinalizador evita que vários comentários sejam enviados: */ var working = false; /* Capturando o envio do formulário evento: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(working) return false; working = true; $("#submit").val("Working.. "); $("span .error").remove(); /* Enviar campos de formulário para submit.php: */ $.post("submit.php",$(this).serialize(),function(msg )( working = false; $ ("#submit").val("Enviar"); if(msg.status)( /* / Se a inserção foi bem-sucedida, adicione um comentário / abaixo do último na página com um efeito slideDown /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Se houver são erros, percorrer o objeto / msg.errors e exibi-los na página /*/ $.each(msg.errors,function(k,v)( $("label").append(" "+v+""); )); ) ),"json"); )); ));

Usamos uma chamada de função $(documento).pronto() Um que associa uma função ao evento. Variável trabalhando atua como um sinalizador que sinaliza que uma solicitação AJAX está em andamento (evitando assim a duplicação do mesmo comentário).

Na função return da requisição POST AJAX, verificamos a propriedade status para determinar se o comentário foi inserido com sucesso. Se sim, adicionamos a marcação resultante à página após o último comentário com animação Deslize para baixo.

Se houver problemas, exibimos mensagens de erro adicionando período erro ao elemento correspondente rótulo(atributo do elemento rótulo contém Eu iria entrada que tem um erro).

Preparar!

Conclusão

Para rodar o script no seu servidor você precisa criar uma tabela comentários em seu banco de dados MySQL. Você pode fazer isso com o código SQL do arquivo tabela.sql, que deve ser inserido na guia SQL do phpMyAdmin. Então você precisa definir os parâmetros de conexão do banco de dados MySQL no arquivo conectar.php .

Os comentários em PHP são semelhantes aos comentários usados ​​em HTML. Na sintaxe do PHP, os comentários sempre começam com uma sequência especial de caracteres e qualquer texto que apareça entre esses caracteres especiais será ignorado pelo interpretador.

Em HTML, o principal objetivo de um comentário é servir como uma nota para os desenvolvedores que podem visualizar o código-fonte do seu site. Os comentários do PHP diferem porque não serão exibidos aos visitantes. A única maneira de visualizar os comentários do PHP é abrir o arquivo para edição. Isso torna os comentários PHP úteis apenas para programadores PHP.

Caso você tenha esquecido ou não saiba como os comentários são feitos em HTML, veja o exemplo abaixo.

sintaxe de comentário php: comentário de linha única

Enquanto o html possui apenas um tipo de comentário, o PHP possui dois tipos. O primeiro tipo que discutiremos é o comentário de linha única. Ou seja, um comentário que diz ao interpretador para ignorar o que quer que aconteça naquela linha à direita dos comentários. Para usar este comentário, use os caracteres "//" ou "#" e todo o texto à direita será ignorado pelo interpretador PHP.

Psst...Você não pode ver meus comentários PHP!"; // echo "nada"; // echo "Meu nome é Humperdinkle!"; # echo "Eu também não faço nada"; ?>

Resultado:

Olá Mundo! Psst...Você não pode ver meus comentários PHP!

Observe que vários de nossos comandos de eco não foram processados ​​porque os comentamos com caracteres de comentário especiais. Esse tipo de comentário costuma ser usado para escrever rapidamente sobre códigos complexos e ofuscados ou para remover temporariamente uma linha de código PHP (para fins de depuração).

sintaxe de comentário php: comentário multilinha

Assim como os comentários HTML, os comentários multilinha em PHP podem ser usados ​​para comentar grandes blocos de código ou para escrever comentários em várias linhas. Comentários multilinha em PHP começam com "/*" e terminam com "*/". Qualquer coisa entre esses caracteres será ignorada.

Resultado.