A origem sai de uma lista que o código conhece, o destino tem nome gerado por você e a cópia passa por um arquivo temporário. Assim copy() não sobrescreve nem lê o que não deve.
Fuso horário no PHP 8.5 testado: instante em UTC, data de calendário sem conversão, agendamento com hora local e fuso, Etc/GMT invertido e base de fusos velha.
Escolha entre 301, 302, 307 e 308, configure o redirecionamento no Apache, no nginx ou no PHP, evite cadeias e valide o parâmetro de retorno para não virar porta de golpe.
O fluxo completo de exclusão: POST com token, id validado, DELETE com id e dono como parâmetros, conferência de linhas afetadas e exclusão lógica para poder desfazer.
Regras diferentes pedem if com nome. Um valor com vários casos pede match ou um array. Entenda a comparação frouxa do switch e quando o enum resolve de vez.
Monte cadastro e login com password_hash, password_verify, consulta com parâmetro, sessão regenerada e limite de tentativas, sem nunca guardar a senha legível.
Escreva a consulta a partir da tela: colunas nomeadas, LIMIT, filtro por parâmetro, ORDER BY por lista branca e um índice que combine. Menos dados, menos vazamento.
Como centralizar com Flexbox ou Grid um bloco de qualquer altura, sem margem negativa calculada nem script de resize, e sem cortar o conteúdo em telas pequenas.