Door
Hans Zijlstra
op 30-10-2018 20:04
gewijzigd op 17-12-2019 10:17
9.283 views
Hallo allemaal,
ik ben bezig om een stempagina te maken voor een school zodat binnenkort ook digitaal gestemd kan worden. Ik heb hiervoor tutorials gelezen over sql en php. Vervolgens heb ik een login gezocht in php die ik ook heb gevonden. daarna een stemsysteem die ik ook heb gevonden wat prima is voor het doel waarvoor deze gebruikt moet worden.
Echter nu moeten ouders stemmen en kan dat niet vanaf dezelfde computer vanwege een cookie die gemaakt wordt. Ik heb getracht dit weg te laten maar ik blijf tegen het probleem aanlopen.
Daarnaast heb ik een S_SESSION('username') aangemaakt om deze te valideren om te kijken of deze user gestemd heeft of niet. Ik kan dit echter niet goed testen omdat ik de foutmelding steeds krijg dat ik heb gestemd. Ik heb nieuwe users in de database toegevoegd om het te testen maar die hebben allemaal al gestemd.
ook heb ik de cookie naar time() -3600 gezet zodat deze verwijderd werd maar niets hielp.
het doel is dus te controleren of de user die inlogt gestemd heeft en maar een keer kan stemmen.
ik ben nieuw hier dus ik hoop dat iemand mij de juiste richting op wil wijzen. ervaring met PHP etc is beginnend.
Oude mysql_***() functies?
En één query die je uitvoert en de ander overschrijft? Je maakt nu twee opdrachten als string aan, en voert enkel de laatste uit.
Ik heb hier veelvuldig gelezen dat msql verouderd is, maar de stempagina moet donderdag werken :-)
aangezien ik beginner ben moet het eerst maar even zo, de andere optie is mij ook nog te hoog gegrepen.
ik heb nu de inlog geregeld (zij het in msql en het kan zeker nog verbeterd worden qua beveiliging) en ga na inlog verwijzen naar stempagina waarbij ik ook een kolom en deze update van 0 naar 1 zodat de gebruiker maar een keer kan stemmen.
ik heb dankzij jullie hulp het aantal inlogpogingen in de msql tabel. Ook heb ik een pagina aangemaakt met twee kandidaten en een submit button.
<?php
@session_start();
error_reporting(0);
include("config.php");
?>
<html>
<head>
<title>MR stempagina</title>
</head>
<body>
<?php echo $_SESSION['user_info']['name'] ?>, u kunt hier stemmen.
<form action="stemmen.php" method="POST">
<p>Welke ouder wilt u als vertegenwoordiger van de ouders van de HBK afdeling in de medezeggenschapsraad?</p>
<input type="radio" name="kandidaat" value="piet"> piet<br>
<input type="radio" name="kandidaat" value="hein"> hein<br>
<p><input type="submit" name="stem" value="stem"></p>
<?php
if(isset($_POST['kandidaat'])){
$kandidaat = $_POST['kandidaat'];
header("Location: vote.php");
}
else{
$kandidaat = NULL;
echo "kies uw kandidaat";
}
?>
<?php
$error = '';
if(isset($_POST['stem'])){
$sql = "SELECT * FROM ".$SETTINGS["kandidaat"]."";
$sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
$kandidaat = mysql_fetch_assoc($sql_result);
if(!empty($kandidaat)){
$_SESSION['user_info'] = $user;
$query = " UPDATE ".$SETTINGS["kandidaat"]." SET aantal = aantal+1 WHERE id=".$kandidaat['id'];
//$query = " UPDATE ".$SETTINGS["USERS"]." SET pogingen = pogingen+1 WHERE id=".$user['id'];
mysql_query ($query, $connection ) or die ('request "Could not execute SQL query" '.$query);
}
else{
$error = 'u heeft niet gestemd';
}
}
?>
</form>
</body>
</html>
als ik stem wordt het aantal van de eerste kandidaat in de tabel kandidaten geüpdatet ondanks dat er op de andere kandidaat is gestemd. Waar gaat dit fout?
is het mogelijk om twee een kolommen in twee tabellen te updaten zodra er is gestemd.
ik wil graag een stem bij de geselecteerde kandidaat en bij de user een 1 in het vakje gestemd. Dan wilde ik bij de stemknop de controle doen of bij die user een 1 staan en dan de melding geven dat hij heeft gestemd. Echter de user info wordt niet onthouden?
graag uw helpende hand.
[size=xsmall]Toevoeging op 12/11/2018 12:24:43:[/size]
hallo inmiddels heb ik de user info op de nieuwe pagina opgelost.
Ik weet niet of je zelf de server beheert waar je site op staat.
Maar zodra deze mogelijk door je webhosting-beheerder van PHP 7 wordt voorzien zal je script niet meer werken, omdat je oude mysql_xxx()-functies gebruikt. Ik raad aan om dit zo snel mogelijk aan te passen.
Verder hoort er na een location-header een exit(); te staan. Je script wil je dan natuurlijk ook graag laten stoppen.
...
Maar zodra deze mogelijk door je webhosting-beheerder van PHP 7 wordt voorzien zal je script niet meer werken, omdat je oude mysqli-functiesmysql-functies gebruikt. Ik raad aan om dit zo snel mogelijk aan te passen.