Hoje vou dar um resumo das dores de cabeça para iniciantes em PHP. As 14 questões levantadas abaixo esperam ser úteis para iniciantes em PHP.
1. As variáveis
get, post e session não podem ser transferidas entre páginas Na versão mais recente do PHP, as variáveis globais automáticas estão desativadas, portanto, para obter as variáveis enviadas da página anterior, use $_GET['foo'], $_POST. [ 'foo'],$_SESSION['foo'] para obter. Claro, você também pode modificar as variáveis globais automáticas para que estejam ativadas (o php.ini foi alterado para register_globals = On, considerando a compatibilidade, é melhor se familiarizar com o novo método de escrita);
2. Quando o apache2 usa o método get para passar parâmetros chineses no Win32, ocorrerá um erro.
Test.php
?
a=Hello&b=Hello.
(Olá). "&b="
.urlencode (de nada)
...
3. A sessão no win32 não funciona corretamente.
O padrão do php.ini é session.save_path = /tmp.
sob win32 Não é possível ler e gravar o arquivo da sessão, tornando a sessão inutilizável
. Basta alterá-lo para um caminho absoluto, por exemplo, session.save_path = c:windowstemp
4. Exibir informações de erro
quando display_errors = On e. error_reporting = E_ALL em php.ini, todos os erros e prompts serão exibidos. É melhor ativá-lo durante a depuração para correção de erros. Se você usar o método de escrita PHP anterior, a maioria das mensagens de erro serão sobre variáveis indefinidas. Haverá um prompt quando uma variável for chamada antes de receber um valor. A solução é detectá-la ou protegê-la.
Por exemplo, para exibir $foo, você pode if(isset($foo)) echo $foo ou echo @$foo
5. Mail() não pode enviar e-mails no Win32
. O Sendmail configurado no Linux pode ser enviado. chame o servidor smtp Para enviar e-mails, modifique o SMTP de php.ini = ip //ip é um servidor SMTP sem função de verificação (difícil de encontrar na Internet A melhor solução para enviar e-mails em PHP é usar soquete para). envie diretamente para o servidor de e-mail da outra parte em vez do servidor de encaminhamento.
6. Se a senha não estiver definida para a instalação inicial do mysql, você deve usar
update mysql.user set password="yourpassword" where user="root"
para alterar a senha
7.
O cabeçalho de erro já enviado geralmente ocorre quando você
.usar HEADER Ele pode Existem vários motivos: 1. Você PRING ou ECHO antes de usar HEADER 2. Há uma linha em branco na frente do seu arquivo atual 3. Você pode ter INCLUÍDO um arquivo e há uma linha em branco no final do arquivo. o arquivo ou este erro ocorrerá na saída.
8. Se não houver alteração após alterar o php.ini,
reinicie o servidor web, como IIS, Apache, etc., e então as configurações mais recentes serão aplicadas.
9. O PHP foi instalado em 2003 (o método de instalação do ISAPI é. solicitado por especialistas para aconselhamento).
O php4isapi.dll do PHP4 parece haver algum conflito com 2003 e só pode ser instalado no modo CGI:
Etapa 1, primeiro baixe um programa de instalação em www.php.net , eu instalei : php-4.2.3-installer.exe, você também pode encontrar a versão mais recente, certifique-se de que seu IIS6.0 esteja iniciado e acessível antes de instalar o php-4.2.3-installer.exe. Após a instalação, vá para o site padrão -> Configuração do aplicativo;
Etapa 2: Clique em extensãode
serviço da web -> Nova extensão de serviço da web
;
o caminho;
Passo 5: Basta confirmar;
Passo 6: Selecione a extensão do serviço PHP e clique em Permitir.
10. Às vezes, a instrução SQL não funciona.
A maneira mais fácil de depurar a falha na operação do banco de dados é repetir a frase SQL e ver se o valor da variável pode ser obtido.
11. A diferença entre include e require
Não há muita diferença entre os dois. Se o arquivo a ser incluído não existir, include avisa e continua a executar a seguinte instrução, solicita um erro fatal e sai de acordo. nos meus testes, ambos estão na plataforma win32. Ele é incluído primeiro e depois executado, portanto, é melhor não incluir instruções ou exigir nos arquivos incluídos, o que causará confusão no diretório. Talvez a situação seja diferente em *nux. Ainda não foi testado.
Se um arquivo não quiser ser incluído várias vezes, você pode usar include_once ou require_once## para ler e gravar dados do documento:
função r($nome_arquivo) {
$númarquivo=@fopen($nome_arquivo,"r ");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,filesize($file_name ));
@fclose($filenum);
retornar $arquivo_dados;
}
função w($nome_arquivo,$dados,$método="w"){
$filenum=@fopen($file_name,$method );
rebanho($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($númarquivo);
retornar $arquivo_dados;
}
www.devdao.com
12. A diferença entre isset() e empty() é
que ambos são usados para testar variáveis.
Mas isset() testa se uma variável recebeu um valor, e vazia() testa se uma variável à qual foi atribuído um valor está vazia. Se uma variável for referenciada em PHP sem receber um valor, isso será permitido, mas haverá um aviso. Se uma variável receber um valor nulo, $foo="" ou $foo=0 ou $foo=false, então vazio($foo) retornará verdadeiro e isset($foo) também retornará verdadeiro, o que significa que atribuir um valor nulo não faça logout.
Para cancelar o registro de uma variável, use unset($foo) ou $foo=NULL.
13. A instrução de consulta mysql contém palavras-chave
Quando o php consulta o mysql, às vezes o nome da tabela mysql ou o nome da coluna contém palavras-chave. Haverá erros na consulta neste momento. Por exemplo, se o nome da tabela for order, ocorrerá um erro durante a consulta. A maneira simples é adicionar `[acima da tecla tab] ao nome da tabela ou nome da coluna na instrução SQL para distingui-lo,
como select * from `order`.
14. Existem duas maneiras de fazer upload de vários arquivos de uma vez por meio do protocolo HTTP
, que são duas implementações do mesmo método. Os procedimentos específicos precisam ser projetados por você mesmo:
1. Configure várias caixas de entrada de arquivo no formulário e nomeie-as com matrizes, como segue:
<form action="" método=post>
<tipo de entrada=nome do arquivo=usefile[]>
<tipo de entrada=nome do arquivo=usefile[]>
<tipo de entrada=nome do arquivo=usefile[]>
</form>
Desta forma, faça o seguinte teste no lado do servidor
echo "<pré>";
print_r($_ARQUIVOS);
eco "</pre>";
2. Defina várias caixas de entrada de arquivo no formulário, mas com nomes diferentes, como segue:
<form action="" method=post>
<tipo de entrada=nome do arquivo=usefile_a>
<tipo de entrada=nome do arquivo=usefile_b>
<tipo de entrada=nome do arquivo=usefile_c>
</form>
Faça o mesmo teste no lado do servidor:
echo "<pré>";
print_r($_ARQUIVOS);
eco "</pre>";