Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve, Imasters
so iniciante ainda ! e estou fazendo uma enquete, e queria fazer um verificação de ip,
ai já fiz o ip ser gravado em um txt,
$insertip = $_SERVER['REMOTE_ADDR']."\n";
$aq = fopen($arquivo,"w");
fputs($aq,$insertip);
fclose($aq);
só que ai ele grava o ip, mais se outra pessoa loga ele sobrepõe o existente,
ai queria perdir ajuda pra eu construir um if(){}
tentei de algumas formas mais não consegui ele mostra erro, mais deve ser erro na minha construção e não consigo pensar em um argumento para fazer ele gravar em seguida.. vocês poderiam me dar uma mão com isso?
vo continuar pesquisando... agradeço desde já abraços !
$ip=$_SERVER['REMOTE_ADDR'];//pega ip
$arquivo= file_get_contents('pasta/ips.txt');//carrega arquivo
$verif_ocorr= strpos($arquivo, $ip);//verifica a ocorrência do ip
if($verif_ocorr==true){
echo '<font color="#FF0000" face="tahoma" size="2"><strong>Voce ja tem um voto registrado</strong>o </font>';
}else{
//grava voto...
}
O conteúdo do arquivo estava sendo sobrescrito porque você estava usando o modo w, de escrita.
No modo w, se o arquivo não existe, ele é criado e o conteúdo adicionado. Se ele existe, seu conteúdo é totalmente zerado e o novo dado adicionado.
Quer ver uma coisa bem bacana? Dá pra fazer com uma linha só, usando-se de file_put_contents():
file_put_contents( 'nome_do_arquivo.txt', $_SEVER['REMOTE_ADDR'] . PHP_EOL, FILE_APPEND );
Depois para verifica se já votou, pode usar in_array() em conjunto com file(), que lê o conteúdo do arquivo e coloca cada linha em um índice de array.
GustavoMZ, funciona perfeitamente, testei em outro arquivo e funcionou.. porem não consegui aplicar ele porque o envio da enquete é por AJAX, que pega o PHP como GET, ai coloquei no PHP o codigo e não acontece nada, mesmo eu mudando ele consegue enviar a enquete ainda ele não bloquea por causa que a função de get ta no AJAX, penso eu.. Obrigado mesmo pela ajuda !
e Bruno Augusto, puts que legau não sabia disso funciono direitinho tambem, fui no manual e dei uma lida lá e ja apliquei ao meu código...
vo posta aqui meu codigo AJAX caso vocês tenham alguma dica de como eu aplicar isso.. mais vo continuar pesquisando ..
<script type="text/javascript">
function getVote(int)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("poll").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","vote.php?vote="+int,true);
xmlhttp.send();
}Deixe a linha que chama a página PHP assim:
xmlhttp.open("GET","vote.php?ip=<?=$_SERVER['REMOTE_ADDR']?>&vote="+int,true);
E na página vote.php, em vez disso:
$ip=$_SERVER['REMOTE_ADDR'];//pega ipIsso:
$ip=$_GET['ip'];//pega ipDeve funcionar :huh:é fiz da forma que você enviou acima, so que ai dei 1 echo no if e outro no else, e coloquei pra gravar somente se não tiver o ip..
agora so mais uma pergunta, tem como fazer algum script para apagar esse txt de vez em quando?
mais funciono sim.. agradeço.. salvarão minha pele, kkk
vai o link da enquete, Clique aqui
ao invés de me ajudarem com esse if() acima se me ajudarem a fazer um if para identifica o ip no documento e manda a menssagem que essa pessoa ja votou enquanto o ip dela estiver ali.. eu tentei alguma coisas mais nada deu sucesso..
não estou sabendo como armar direito.. se alguem me der um caminho seguir .. fico grato.Abraços !