Latest web development tutorials
×

PHP curso

PHP curso PHP breve introdução PHP instalar PHP gramática PHP variável PHP echo/print PHP Tipos de dados PHP constante PHP corda PHP operadores PHP If...Else PHP Switch PHP ordem PHP Classificação de uma matriz PHP superglobais PHP While circulação PHP For circulação PHP função PHP Variáveis ​​mágicas PHP namespaces PHP Object-Oriented

PHP formulário

PHP formulário PHP Autenticação de formulários PHP formulário - campos obrigatórios PHP formulário - -mail de verificação e URL PHP instância de formulário completo PHP $_GET variável PHP $_POST variável

PHP Tutorial avançado

PHP arrays multidimensionais PHP data PHP conter PHP arquivo PHP Carregar arquivo PHP Cookie PHP Session PHP E-mail PHP segurança E-mail PHP Error PHP Exception PHP filtro PHP Filtro avançado PHP JSON

PHP 7 novos Recursos

PHP 7 novos Recursos

PHP banco de dados

PHP MySQL breve introdução PHP MySQL conexão PHP MySQL Criação de um banco de dados PHP MySQL Criar uma tabela de dados PHP MySQL inserir dados PHP MySQL Inserir dados múltiplos PHP MySQL instruções preparadas PHP MySQL ler dados PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX breve introdução AJAX PHP AJAX banco de dados AJAX XML AJAX busca em tempo real AJAX RSS Reader AJAX voto

PHP manual de referência

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP Processamento de imagem PHP RESTful

PHP validação de formulário

Este capítulo explica como usar os nossos dados de formulário PHP apresentados pela validação do cliente.


PHP validação de formulário

nota Em se tratando de forma PHP é preciso considerar a segurança.

Neste capítulo, vamos mostrar-lhe PHP Formulário de Processamento de segurança de dados, a fim de impedir que hackers e spam que precisamos para garantir a validação de dados do formulário.

formulário HTML descrito nesta seção contém os seguintes campos de entrada: deve ser usado com os campos de texto opcionais, botões de rádio e botões de apresentar:

View Code >>

Acima forma as regras de validação são os seguintes:

campo As regras de validação
nome Obrigação. + Conter apenas letras e espaços
E-mail Obrigação. + Deve ser um endereço de e-mail válido (incluindo '@' e '.')
local Obrigação. Se estiver presente, ele deve conter uma URL válida
observação Obrigação. campo de entrada multi-linha (campo de texto)
sexo Obrigação. Você deve selecionar um

Primeiro, vamos olhar para o código de formulário HTML simples:


campo de texto

"Nome", "E-mail", e no campo "URL" é um elemento de entrada de texto, o campo "notas" é uma textarea. código HTML da seguinte forma:

“名字”: <input type="text" name="name">
E-mail: <input type="text" name="email">
网址: <input type="text" name="website">
备注: <textarea name="comment" rows="5" cols="40"></textarea>

botão de rádio

campo "Sexo" é um botão de opção, o código HTML se parece com isso:

性别:
<input type="radio" name="gender" value="female">女
<input type="radio" name="gender" value="male">男

elementos de formulário

HTML código do formulário da seguinte forma:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Utilize estemétodo = método "post"formulário para enviar dados.

nota O que é $ _SERVER [ "PHP_SELF"] variáveis?

$ _SERVER [ "PHP_SELF"] é uma variável super global, retorna o nome do arquivo script atualmente em execução associado com a raiz do documento.

Assim, $ _SERVER [ "PHP_SELF"] irá enviar os dados do formulário para a página atual, em vez de saltar para uma página diferente.

nota O que é htmlspecialchars () método?

htmlspecialchars () para alguns personagens pré-definidos em entidades HTML.

Os personagens pré-definidos são:

  • & (E comercial) torna-se & amp;
  • "(Aspas duplas) torna-se & quot;
  • '(Aspas simples) torna-se & # 039;
  • <(Menor que) torna-se & lt;
  • > (Maior que) se torna & gt;


formulário de PHP necessária para provocar a atenção para onde?

$ _SERVER [ "PHP_SELF"] variáveis ​​poderia ser usada por hackers!

Quando os hackers usando cross-site scripting ligação HTTP para o ataque, $ _ SERVER [ "PHP_SELF"] variável será implantado no script de servidor. A razão é que arquivo de scripting executável cross-site está ligado ao caminho atrás, por isso, $ _SERVER [ "PHP_SELF"] string conterá links HTTP por trás do código JavaScript.

nota XSS também conhecido como CSS (Script Cross-Site), ataques cross-site scripting. Um atacante malicioso para inserir página Web maliciosa no código html, quando um usuário visitar a página, Web incorporado dentro do código html será executado para alcançar o propósito específico do usuário mal-intencionado.

Especifique o seguinte arquivo de formulário chamado "test_form.php":

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

Agora, usamos a URL para enviar o endereço "test_form.php" especificada, conforme mostrado no código acima é modificado como segue:

<form method="post" action="test_form.php">

Ao fazê-lo bem.

No entanto, tendo em conta o usuário digite o seguinte endereço na barra de endereço do navegador:

http://www.w3big.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

O URL acima, será interpretado como o seguinte código e executá-lo:

<form method="post" action="test_form.php/"><script>alert('hacked')</script>

Adicionar um código de tag script e adicionar comando alerta. Quando a página é carregada irá executar o código Javascript (o usuário verá uma janela pop-up). Este é apenas um exemplo simples para ilustrar PHP_SELF variável será usada por hackers.

Por favor, note que qualquer código JavaScript pode ser adicionado à tag <script>! Os hackers podem usar essa página para redirecionar para um servidor em outra página, o arquivo página de código para proteger o código malicioso, o código pode ser modificado para obter o variáveis ​​globais ou dados de formulário do usuário.


Como evitar o $ _SERVER [ "PHP_SELF"] sendo explorada?

$ _SERVER [ "PHP_SELF"] por htmlspecialchars () para evitar ser explorado.

formar código da seguinte forma:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

htmlspecialchars () para alguns personagens pré-definidos em entidades HTML. Agora, se o usuário quiser usar variáveis ​​PHP_SELF, os resultados são de saída da seguinte forma:

<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

A tentativa de vulnerabilidade falhou!


validação de dados de formulário Use PHP

Primeiro de tudo, apresentaram dados para a função de usuário () é processado através htmlspecialchars do PHP.

Quando usamos os htmlspecialchars () função, o usuário tenta apresentar os seguintes campos de texto:

<script>location.href('http://www.w3big.com')</script>

O código não será executado, porque ele vai ser guardado como código de escape HTML da seguinte forma:

&lt;script&gt;location.href('http://www.w3big.com')&lt;/script&gt;

O código acima é seguro e pode ser exibida ou inserir a mensagem na página.

Quando o usuário envia o formulário, vamos fazer as duas coisas seguintes:

  1. Use PHP aparar function () para remover os dados de entrada do usuário caracteres desnecessários (tais como: espaço, tabulação, nova linha).
  2. Use stripslashes PHP () função para remover a barra invertida de dados de entrada do usuário (\)

Deixe estas funções de filtragem escritos em função da nossa própria definição, isso pode aumentar consideravelmente a reutilização de código.

A função chamada test_input ().

Agora, podemos test_input function () para detectar todas as variáveis ​​em $ _POST, código de script é a seguinte:

Exemplos

<?php
// 定义变量并默认设置为空值
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data)
{
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

Correndo instância »

Note-se que quando executamos o script acima, em US $ _SERVER [ "REQUEST_METHOD"] para detectar se o formulário é enviado. Se REQUEST_METHOD é POST, o formulário será enviado - os dados serão verificados. Se o formulário não for apresentado irá ignorar a verificação e exibe um em branco.

Use os itens de entrada nos exemplos acima são opcionais, mesmo que o utilizador não introduzir quaisquer dados podem ser exibidos corretamente.

Na próxima seção, vamos descrever como para validar os dados inseridos pelo usuário.