Tutorijali.Net forum

Full Version: Jednostavna Ajax anketa
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Ima neko ideju kako da rjesim ovaj problem da korisnik moze da glasa samo jednom, ali moram ovako preko txt fajlova. Ja sam uspio da upisem u fajl IP adresu korisnika, uporedim da li je ta ip adresa vec postoji u fajlu i da ispisem poruku da je korisnik vec glasao. Problem se javlja da kako da korisniku ostampam samo rezultat ako je glasao a ako nije da mu stampam formu da glasa.Zna neko kako ovo da rjesim. Hvala unaprijed


poll_vote.php
Code:
<?php
$vote = $_REQUEST['vote'];

//Hvatanje IP adresa  i upis u datoteku
if (!empty($_SERVER['HTTP_CLIENT_IP']))  
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))  
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
$imefajla="voters.txt";
$fp= fopen($imefajla,"w");
fputs($fp, $ip."\n");



//get content
$filename = "poll_result.txt";
$content = file($filename);

//put content in array
$array = explode("||", $content[0]);
$yes = $array[0];
$no = $array[1];

if ($vote == 0)
  {
  $yes = $yes + 1;
  }
if ($vote == 1)
  {
  $no = $no + 1;
  }

//insert votes to txt file
$insertvote = $yes."||".$no;
$fp = fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);

?>



<h2>Result:</h2>
<table>
<tr>
<td>Yes:</td>
<td>
<img src="poll.gif"
width='
<?php echo(100*round($yes/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($yes/($no+$yes),2)); ?>%
</td>
</tr>
<tr>
<td>No:</td>
<td>
<img src="poll.gif"
width='<?php echo(100*round($no/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($no/($no+$yes),2)); ?>%
</td>
</tr>
</table>

anketa.php
Code:
<html>
<head>
<script type="text/javascript" src="poll.js"></script>
</head>
<body>

<?php

//Hvatanje IP adrese
     if (!empty($_SERVER['HTTP_CLIENT_IP']))  
        {
          $IP=$_SERVER['HTTP_CLIENT_IP'];
        }
        elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))  
          $IP=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else
        {
          $IP=$_SERVER['REMOTE_ADDR'];
        }

        $fp = fopen("voters.txt",'r');
        
        while (!feof($fp))
        {
                        //OVAJ DEO NE RADI,TJ TREBA OBEZBEDITI KADA JE OVAJ USLOV ISPUNJEN DA SE STAMPA KOMENTAR 'Vec ste glasali' I REZULTAT ANKETE U SUPROTNOM DA SE STAMPA ANKETA ZA GLASANJE
            $ip=fgets($fp);
            if($IP=$ip)
            {
                echo'Vec ste glasali <p>';
                
            }
            if($IP!=$ip)
            {
            echo'';
            }
        
        }
        

?>

<div id="poll">
<h3>Do you like PHP and AJAX so far?</h3>
<form>
Yes:
<input type="radio" name="vote" value="0" onclick="getVote(this.value)" />
<br />No:
<input type="radio" name="vote" value="1" onclick="getVote(this.value)" />
</form>
</div>

</body>
</html>
Ne znam zasto kazes da si je ti napisao, kada sam ja prije par godina koristio tu istu skriptu.
PHP Code:
if($IP=$ip

bi trebalo biti

PHP Code:
if($IP==$ip

ostalo nisam ni gledao inače = je operator pridruživanja, a == operator usporedbe
zero Wrote:Ne znam zasto kazes da si je ti napisao, kada sam ja prije par godina koristio tu istu skriptu.

Kao prvo nisam nigdje rekao da sam je ja napravio sto ce reci da LAZES.
Kao drugo upisivanje IP adrese u txt i fajl,prolazak kroz fajl i uporedjivanje IP adresa sam ja licno dopisao tako da ako cemo da cepidlacimo, istu skriptu opet nisi mogao da koristis i ispade da opet LAZES. Jeli tako?
Kao trece ova skripta ima da se skine sa jedno 15-ak sajtova koliko sam skontao i sta sa tim???

#danielvast, tacno je da je i tu greska ali to opet nece rjesiti problem.
Ovo bi moglo bit zanimljivo :)))
Kako kome, meni ne :P
A da nam das sta pise u datoteci <<voters.txt>> ili da ispises varijablu $ip i visdis sta ti ispisuje, malo jeste tesko raditi debugging u PHP-u ali moras se nekeko snalaziti.
Pa znas sta u voters se upise Ip adresa posjetioca stranice. Posto radim u lokalu upise se 127.0.0.1. Nije to problem to radi oko upisa u fajl i ovaj dio za uporedjivanje ip adresa, ali meni treba sad kad ja ustanovim da ako je neko glasao sa 127.0.0.1 i ako opet otvori anketu sa te adrese da mu ispise poruku da je on vec glasao i da prikaze samo rezultat. Znaci gledaj ovde:

Code:
$ip=fgets($fp);
            if($IP==$ip)
            {
                echo'Vec ste glasali <p>';
                //OVDE TREBA OBEZBJEDITI STAMPAJNE REZULTATA
                
            }
            if($IP!=$ip)
            {
            //OVDE TREBA PONOVO STAMPATI ANKETU DA KORISNIK GLASA
            }
Pa onda u cemu je problem jel radi if sto bi trebao raditi?

Edit mislim da bi to trebalo izgledati ovako::

PHP Code:
<html>
<
head>
<
script type="text/javascript" src="poll.js"></script>
</head>
<body>

<?php

//Hvatanje IP adrese
     
if (!empty($_SERVER['HTTP_CLIENT_IP']))   
        {
          
$IP=$_SERVER['HTTP_CLIENT_IP'];
        }
        elseif (!empty(
$_SERVER['HTTP_X_FORWARDED_FOR']))  
          
$IP=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else
        {
          
$IP=$_SERVER['REMOTE_ADDR'];
        }

        
$fp fopen("voters.txt",'r');
        
$ips = array();
        while (!
feof($fp))
        {
        
//OVAJ DEO NE RADI,TJ TREBA OBEZBEDITI KADA JE OVAJ USLOV ISPUNJEN DA SE STAMPA KOMENTAR 'Vec ste glasali' I REZULTAT ANKETE U SUPROTNOM DA SE STAMPA ANKETA ZA GLASANJE 
            
$ip=fgets($fp);
            
array_push($ips,$ip);
        }
        if(
in_array($IP$ips))
        {
             echo 
'Vec ste glasali!';
        }
        else
        {
            echo 
'<div id="poll">
                     <h3>Do you like PHP and AJAX so far?</h3>
                     <form>
                      Yes:
                     <input type="radio" name="vote" value="0" onclick="getVote(this.value)" />
                     <br />No:
                     <input type="radio" name="vote" value="1" onclick="getVote(this.value)" />
                     </form>
                     </div>'
;
        }
?>
</body>
</html> 

Ako ima gresaka popravi ovo sam ovdje napisao.
Sta ti radi ova in_array() ?
Pages: 1 2
Reference URL's