Zie de volgende poll (demo)
Dit is een ajax poll van w3schools. Werkt op zich prima, maar hoe kan ik zorgen dat je 1x per ip-adres kan stemmen? En hoe kan ik zorgen dat niet iedereen de file "poll_result.txt" kan zien?
- Hulp nodig met ajax-poll script
-
18-10-2009, 21:21 #1
- Berichten
- 576
- Lid sinds
- 18 Jaar
Hulp nodig met ajax-poll script
-
-
19-10-2009, 00:47 #2
- Berichten
- 164
- Lid sinds
- 16 Jaar
IP opslaan in een database na het stemmen en het script laten kijken of de bezoeker al gestemd heeft.
-
19-10-2009, 07:24 #3
- Berichten
- 576
- Lid sinds
- 18 Jaar
Bedankt voor de reactie. Zou je kunnen uitleggen hoe ik dat moet doen? Zo handig ben ik nog niet daarmee.
Ik heb de volgende bestanden:
poll.php
PHP Code:<script src="poll.js"></script>
<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>
PHP Code:<script src="poll.js"></script>
<?php
$vote = $_REQUEST['vote'];
//get content of textfile
$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>
</body>
</html>
PHP Code:var xmlhttp;
function getVote(int)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url="poll_vote.php";
url=url+"?vote="+int;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("poll").innerHTML=xmlhttp.responseText;
}
}
function GetXmlHttpObject()
{
var objXMLHttp=null;
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return objXMLHttp;
}
PHP Code:0||0
-
19-10-2009, 12:21 #4
- Berichten
- 376
- Lid sinds
- 18 Jaar
Tabel in dbase aanmaken "gestemd":
ip varchar 15
Na stemmen:
SELECT ip FROM gestemd WHERE ip = '".$_SERVER['REMOTE_ADDR']."' LIMIT 1
Als daar 0 records uit komen >
INSERT INTO gestemd SET ip = '".$_SERVER['REMOTE_ADDR']."'
en stem verwerken naar TXT file zoals nu gebeurt (zou het zelf in dbase doen, maar ok).
-
19-10-2009, 12:50 #5
- Berichten
- 1.483
- Lid sinds
- 16 Jaar
SELECT
COUNT(1) AS rows
FROM
`gestemd`
WHERE
`ip` = '".$_SERVER['REMOTE_ADDR']."'
rows geeft dan het aantal getroffen rijen aan.
-
19-10-2009, 16:18 #6
- Berichten
- 164
- Lid sinds
- 16 Jaar
Mja dit is een oplossing, maar dan krijg je dus dat je altijd moet stemmen voordat je de uitslag kunt zien. Als je ip dan al opgeslagen is telt enkel je stem niet. Zou er eerder voor kiezen dat als je ip opgeslagen staat, je gelijk bij de uitslagen komt, toch?
-
19-10-2009, 21:28 #7
- Berichten
- 576
- Lid sinds
- 18 Jaar
Bedankt voor de reacties. Ben er nog niet zo handig mee, maar zal morgen eens kijken of ik er uit kom.
-
19-10-2009, 22:39 #8
- Berichten
- 376
- Lid sinds
- 18 Jaar
Dan voer je de check uit voor het stemmen ipv erna?
-
20-10-2009, 06:51 #9
- Berichten
- 164
- Lid sinds
- 16 Jaar
idd :) maar dat moet ie wel weten
-
20-10-2009, 09:40 #10
- Berichten
- 576
- Lid sinds
- 18 Jaar
Ik ben er mee bezig geweest, maar heb totaal geen verstand van hoe en wat omtrend php/databases. Weet niet precies welke code ik waar moet plaatsen. Is het mogelijk dat iemand de juiste codes hier post? Pff, lastig:)
-
21-10-2009, 07:46 #11
- Berichten
- 164
- Lid sinds
- 16 Jaar
In de regels van het forum staat niet alles voor te kauwen, maar je in de goede richting te duwen. Zoek in Google naar 'ajax polls one ip' en je komt heel wat phpcode tegen. Neem deze door, vergelijk ze met elkaar en je leert een hoop.
-
21-10-2009, 18:13 #12
- Berichten
- 576
- Lid sinds
- 18 Jaar
Is helemaal goed. Ik ga m'n best doen. Mocht ik er dan nog niet uitkomen laat ik het hier horen.
Bedankt voor alle reactie's.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic