WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Får HTTP-fel 500 (Internal Server Error) i mitt script (https://www.wn.se/forum/showthread.php?t=1056982)

Dakota 2013-02-24 15:21

Får HTTP-fel 500 (Internal Server Error) i mitt script
 
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.

yakuzaemme 2013-02-24 15:25

Du kan lägga till mig på Skype, zyptox, så fixar vi det :)

Dakota 2013-02-24 15:27

Citat:

Ursprungligen postat av yakuzaemme (Inlägg 20463333)
Du kan lägga till mig på Skype, zyptox, så fixar vi det :)

Har nu lagt till dig :)

Dakota 2013-02-24 16:03

Citat:

Ursprungligen postat av Dakota (Inlägg 20463334)
Har nu lagt till dig :)

Efter en liten snabb koll i koden så tog det någon minut för yakuzaemme att fixa felet. Jätteglad och tacksam för hjälpen!


Alla tider är GMT +2. Klockan är nu 06:35.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson