Hello,
this script is meant to give visitors credits when they finish a questionlist.
However, it does not alway's work, from the 500 people who fill in the questionlist, only 150 get their credits. The other 350 see no error, it seems to work perfectly fine, except that they don't get credits.
I tested it with multiple accounts, but here everything works fine. I think that there goes something wrong when multiple users try to access the file at the same time.
Does anyone have an idea where I made a mistake?
checkies is my version for the credits, there are some Dutch parts in the code, if you do not understand anything ask me, i'll translate it.
include('database.php');
include_once("XMLParser.php");
$xmlData = array();
$xml = new XMLParser();
$xmlData["name"] = "communication";
//error functie, geeft input aan xml parser
function error($msg) {
global $xml, $xmlData;
$xmlData["children"][0]["name"] = "result";
$xmlData["children"][0]["attrs"]["type"] = "error";
$xmlData["children"][0]["cdata"] = $msg;
echo $xml->toXML($xmlData);
return -1;
}
//ok functie, geeft input aan xml parser
function ok($msg) {
global $xml, $xmlData;
$xmlData["children"][0]["name"] = "result";
$xmlData["children"][0]["attrs"]["type"] = "ok";
$xmlData["children"][0]["cdata"] = $msg;
echo $xml->toXML($xmlData);
return;
}
//functie user uit db halen als het email-adres bestaat
function get_user($email){
$sql = mysql_query("SELECT * FROM `phpbb_users` WHERE `user_email` = '$email'");
if (!$sql) return error("Query failed: ".mysql_error());
$user = mysql_fetch_array($sql);
if (!$user) return false;
return $user;
}
//haal enquetegegevens uit db
function get_enquete($enquete_id){
$sql = mysql_query("SELECT * FROM `cio_onderzoek_credits` WHERE `onderzoek` = '$enquete_id'");
if (!$sql) return error("Query failed: ".mysql_error());
$enquete = mysql_fetch_array($sql);
if (!$enquete) return false;
return $enquete;
}
//functie checkies toevoegen na enquete
function add_checkies($user, $enquete){
if(ereg("[[:space:]]$enquete[onderzoek]",$user[onderzoek])) return false;
$onderzoeken = $user[onderzoek]." ".$enquete[onderzoek];
$checkies = $user[checkies] + $enquete[credit];
$sql = mysql_query("UPDATE `phpbb_users` SET `checkies` = '$checkies', `onderzoek` = '$onderzoeken' WHERE `user_id` = '$user[user_id]'");
if (!$sql) return false;
return true;
}
//actie opvragen
$op = $_GET["op"];
if (!isset($op)) return error("No operation given.");
//als actie is enquete afgerond->checkies bijschrijven
if ($op == "enquete_afgerond") {
if (!isset($_GET["email"])) {
mysql_close($conn);
return error("Geen email opgegeven");
}
if (!isset($_GET["enquete_id"])) {
mysql_close($conn);
return error("Geen enquete opgegeven");
}
$email = $_GET["email"];
$enquete_id = $_GET["enquete_id"];
$user = get_user($email);
if ($user == false) {
mysql_close($conn);
return error("Gebruiker bestaat niet");
}
$enquete = get_enquete($enquete_id);
if ($enquete == false) {
return error("Enquete [$enquete_id] bestaat niet.");
}
$checkies = add_checkies($user, $enquete);
if ($checkies != true) {
return error("Niet gelukt om Checkies bij te schrijven.");
}
mysql_close($conn);
return ok("Checkies Bijgeschreven.");
}