O PHP está gravando este erro nos logs: "Aviso: Uso de constante indefinida".
Erro nos logs:
PHP Notice: Use of undefined constant department - assumed 'department' (line 5)
PHP Notice: Use of undefined constant name - assumed 'name' (line 6)
PHP Notice: Use of undefined constant email - assumed 'email' (line 7)
PHP Notice: Use of undefined constant message - assumed 'message' (line 8)
Linhas de código relevantes:
$department = mysql_real_escape_string($_POST[department]);
$name = mysql_real_escape_string($_POST[name]);
$email = mysql_real_escape_string($_POST[email]);
$message = mysql_real_escape_string($_POST[message]);
O que significa e por que estou vendo?
A mensagem de erro ocorre devido ao fato infeliz de que o PHP declarará implicitamente um token desconhecido como uma sequência constante de mesmo nome.
Ou seja, está tentando interpretar isso (observe as aspas ausentes):
A única maneira válida de que isso seria uma sintaxe válida no PHP é se anteriormente havia uma constante
department
definida. Por isso, infelizmente, em vez de morrer com um erro fatal neste momento, ele emite este aviso e age como se uma constante tivesse sido definida com o mesmo nome e valor:Existem várias maneiras de obter essa mensagem de erro, mas todas elas têm a mesma causa raiz - um token que pode ser uma constante.
Citações ausentes:
$my_array[bad_key]
Este é o problema no seu caso, e é porque você tem chaves de matriz de string que não foram citadas. A correção das chaves da string corrigirá o erro:
Mudança:
Para:
Cifrão variável ausente:
var_without_dollar
Outro motivo para você ver essa mensagem de erro é se você deixar de fora
$
de uma variável ou$this->
de um membro. Por exemplo, qualquer um dos seguintes itens causaria uma mensagem de erro semelhante:Caractere inválido no nome da variável:
$bad-variable-name
Um problema semelhante, porém mais sutil, pode resultar se você tentar usar um caractere não permitido em um nome de variável - um hífen (
-
) em vez de um sublinhado_
seria um caso comum.Por exemplo, isso está OK, pois sublinhados são permitidos em nomes de variáveis :
Mas isso não é:
Será interpretado da mesma forma que isto:
Referindo-se a uma constante de classe sem especificar o escopo da classe
Para se referir a uma constante de classe, você precisa especificar o escopo da classe
::
; se você perder isso, o PHP pensará que você está falando de um globaldefine()
.Por exemplo:
Usando uma constante que não está definida nesta versão do PHP ou está definida em uma extensão que não está instalada
Existem algumas constantes definidas pelo sistema que existem apenas em versões mais recentes do PHP, por exemplo, as constantes de opção de
round()
modo quePHP_ROUND_HALF_DOWN
existem apenas no PHP 5.3 ou posterior.Portanto, se você tentou usar esse recurso no PHP 5.2, diga:
Você receberá esta mensagem de erro:
fonte
self::
parte. Está funcionando agora.você provavelmente esqueceu de usar
""
.Por exemplo:
mudar para:
fonte
Você deixou de colocar aspas simples em torno de suas chaves de matriz:
deveria estar:
fonte
A maneira correta de usar variáveis de postagem é
Use aspas simples (')
fonte
fonte
Inserir aspas simples.
Exemplo
fonte
Não tenho certeza se existe alguma diferença, estou usando o ignitor de código e "" eu uso os nomes e ele funciona muito bem.
Saudações,
Jorge.
fonte
Parece que as constantes de busca predefinidas desapareceram com a extensão MySQL, portanto, precisamos adicioná-las antes da primeira função ...
// constantes de busca predefinidas
Eu testei e consegui.
fonte