Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Como podem perceber, ao enviar um cookie, dá esse erro, mas não encontro a solução, afinal, não tem nenhum código HTML antes ou depois...
<?php
$usuario = $_POST["usuario"];
$senha = $_POST["senha"];
include "config.php";
if(empty($usuario) && empty($senha)){
alert("Dados incorretos!");
echo '<meta http-equiv="refresh" content="1; url=index.php">';
}else{
$sql = mysql_query("SELECT * FROM usuarios WHERE usuario = '$usuario' and senha = '$senha' LIMIT 1")or die(mysql_error());
$num = mysql_num_rows($sql);
if($num == 0){
alert("Dados incorretos!");
echo '<meta http-equiv="refresh" content="1; url=index.php">';
}else{
setcookie("usuario", $usuario, time()+3600);
echo '<meta http-equiv="refresh" content="1; url=home.php">';
}
}
Erro:
Warning: Cannot modify header information - headers already sent by (output started at /home/site/public_html/admin/login.php:1) in /home/site/public_html/admin/login.php on line 15
No arquivo config.php não tem nenhum header...
Mesmo eu tirando TODOS "<meta http-equiv="refresh" content="1; url=home.php">", o erro persiste.
O erro ainda persiste.
Ah, outra coisa, tirei aquelas funções "alert()" que fiz, e o erro persiste também.
Primeiro, altere:
if(empty($usuario) && empty($senha)){ para if(empty($usuario) || empty($senha)){... Depois remova o espaço que eu notei antes da tag de abertura do PHP, até mesmo uma linha em branco é lida como HTML pelo PHP, pode ser esta a causa!
&& e || não é a causa do problema, eu já tinha tirado os espaços
tirei todos espaços
e o erro ainda persiste =/
Eu sei que não é a causa do problema, mas não tem lógica se os dois campos forem em branco... O certo seria "Se usuário ou a senha forem em branco", ou seja, se qualquer um dos dois forem em branco, e não "Se tanto usuário como senha estiverem em branco". Bom, deixa essa parte pra lá.
Talvez seja alguma coisa do config.php, você já verificou? E cara, você também deve iniciar a sessão com
session_start(); mesmo que sejam cookies. Eles também são interpretados como sessões.
verifique o encode do arquivo, deixe ele como utf-8 without BOM. poste como esta codigo agora, pq alert() n existe no php.
Realmente, eu sempre confundo & com ||, pensei que & seria ambos.
O alert foi uma função que fiz mesmo.
Mudei pra BOM e sem erros agora!
Muito obrigado.
Mudei pra BOM e sem erros agora!
qual encode do arquivo vc deixou? qual editor/IDE vc usa?
Eu uso notepad++ e antes tava UTF-8 com BOM, aí mudei para sem.
Realmente, eu sempre confundo & com ||, pensei que & seria ambos.
O && é ambos. Você quer que dê erro quando pelo menos um desses campos for vazio, não só quando os 2 forem vazios.
Adicione "ob_start();" na primeira linha!