Hej, jag har nyligen betalat för ett system där kunderna ringer ett samtal och sedan blir "VIP" i en månad. En av de självklara funktionerna som ska funka är att om de köpt en månad men sedan köper igen innan deras månad gått ut så ska tiden fyllas på med en månad till (eller fler månader om de skulle köpa fler gånger).
När de ringt ett samtal så får de en kod, koden fyller de sedan i på min hemsida och sedan aktiveras deras VIP.
Problemet är att när man köper fler än en gång så fungerar det felfritt att fylla i den första koden och aktivera sitt VIP, men när man sedan försöker fylla i den andra koden så får man
"HTTP-fel 500 (Internal Server Error): Ett oväntat tillstånd gjorde att servern inte kunde uppfylla begäran."
Koden som läggs i databasen medan den väntar aktivering försvinner för övrigt om man får ovanstående error och blir alltså ogiltig, samtidigt som inget av det som skulle ha skett egentligen sker.
Jag kan inte PHP och utvecklaren har av någon anledning inte hört av sig om detta på ett tag, och då det skapar bekymmer på servern när folk köper för riktiga pengar men inte får allt de ska ha så söker jag därför om möjligt hjälp av er här på WN som lyckats hjälpa mig med problem i kod förut. Nedanstående är som jag förstår det koden som berättar vad som ska hända när en person fyllt i sin kod.
Ser ni något fel som orsakar felet jag nämnde?
PHP-kod:
<?php
require_once('app.class.php');
$posted = false;
if (isset($_POST['submit'])) {
$data['submittedmode'] = (isset($_POST['type-vip'])) ? safe($_POST['type-vip']) : '';
$data['submittedcode'] = (isset($_POST['code'])) ? safe($_POST['code']) : '';
$data['submittedusername'] = (isset($_POST['username'])) ? safe(strtolower($_POST['username'])) : '';
if ($data['submittedcode'] == MASTER_CODE) {
// So let's fake it.
$fakedata = array();
$fakedata['paynr'] = 1;
$fakedata['custnr'] = 1;
$fakedata['code'] = MASTER_CODE;
$fakedata['tax'] = 1;
$fakedata['created'] = time();
$fakedata['expires'] = strtotime("+30 days", $fakedata['created']);
$fakedata['mode'] = (isset($_POST['type-vip'])) ? safe($_POST['type-vip']) : '';
$app = new App($fakedata);
$app->insert();
}
$posted = true;
$app = new App($data);
$app->load();
// if ($app->codeExists() AND $app->data['submittedcode'] == $app->data['code']) {
// Här kollar vi så koden är giltig.
if ( $app->codeExists() || $data['submittedcode'] == MASTER_CODE ) {
// Här kollar vi om han förlänger..
if ($app->vipAlreadyExists()) {
$app->extendVip();
$app->load();
$message = "Tack för att du fyllt på ditt VIP igen, det är aktivt till ".date("Y-m-d H:i:s", $app->data['expires']).".";
} else {
if ($app->alreadyExists()) {
$app->toggleVIPStatus();
$app->load();
}
$message = "Tack för köpet! Din VIP aktiveras inom kort och går ut ".date("Y-m-d H:i:s", $app->data['expires']).".";
$ws = new Websend(MINECRAFT_IP);
$ws->connect(MINECRAFT_PASSWORD);
$username = $data['submittedusername'];
// Vanlig VIP, eller VIP+?
if ($app->data['mode'] == 1) {
// Nu kör vi websends för VIP.
$ws->doCommandAsConsole("manuadd ".$username." new");
$ws->doCommandAsConsole("kit supervip ".$username."");
$ws->doCommandAsConsole("eco give ".$username." 30000");
} else if ($app->data['mode'] == 2) {
// Nu kör vi websends för VIP+.
$ws->doCommandAsConsole("manuadd ".$username." vipp");
$ws->doCommandAsConsole("kit vip ".$username."");
$ws->doCommandAsConsole("eco give ".$username." 10000");
}
}
$ws->doCommandAsConsole("bcast Tack ".$username." att du donerade. Din rank har aktiverats."); // Tackar spelaren så alla ser det.
// När allt är klart så sätter vi så koden redan är använd.
$app->setUsedCode();
} else {
$message = "Koden du angivit är ej giltig.";
}
}
?>
Oerhört tacksam för hjälp.