• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Datei inkludieren in PHP-Document

Gykonik

Mitglied
Hey Leute, ich habe mal eine Frage.
Ich rufe mit Javascript, bzw. Ajax ein Document auf, mit dem ich My-SQL Befehle durchführen möchte, also ein PHP-Document.

Nach langem debuggen habe ich herausgefunden, dass das Dokument auch richtig mit Ajax geöffnet wird, so wie ich es möchte. In dem PHP-Dokument steht folgendes drin:
PHP:
<?php
    require '../../Accounts/MySQL/mysql_users.php';
    include('../../../core.php');

    $allowed_gets = $allowed_gets_for_games;
   
    if (logged_in() === true) {
        if(isset($_REQUEST['game'], $_REQUEST['score']) && in_array($_GET['game'], $allowed_gets) == true) {
            $game = $_REQUEST['game'];
            // Erster Buchstabe vom Game ist groß geschrieben!
            $score = $_REQUEST['score'];
            // Score bzw. bei Racer die Zeit
            $userID = $session_user_id;

            write_top_ten($game, $score, $userID);
        }
    }
    */
?>

Dabei bekomme ich dann nur folgenden Fehler: "POST meineWebsite/saveHighscore.php 500 (Internal Server Error)"
Wieso?
Ich hab schon getestet, schon wenn ich den require command laufen lasse und nichts anderes bekomm ich den Fehler...
Ich überseh gerade glaube ich etwas gewaltig...

Und ich habe noch eine zweite Frage:
Ich kenne mich kaum mit Ajax aus, aber von dem was ich gelesen habe verstehe ich es folgendermaßen:
Ich habe folgendes gemacht:
Code:
jQuery.ajax({ 
        type: 'POST',
        url: 'PFAD/saveHighscore.php',
        dataType: 'json',
        data: "score="+score+"&game=Tetris",
        success: function() {
          console.log("ERFOLGREICH!");
        },
        error: function() {
          console.log("MISSLUNGEN!");
        }
      });

Soweit ich weiß wird dann das Dokument geöffnet, aber völlig unabhängig von allem anderen, sodass die Variablen und so, die in anderen Dokumenten alle zusammen in index.php includiert werden in der von Ajax geöffneten Datei nicht mehr vorhanden sind, oder?
 
Werbung:
Server Fehler 500 ist ein interner Server Fehler. Bist du sicher, dass das Dokument wirklich geöffnet und ausgeführt wird? Rufe das Dokument doch mal direkt über die URL auf mittels http://server/PFAD/saveHighscore.php?game=xxx&score=yyy. Ajax erlaubt auch nur Zugriffe auf Server, von denen die aufrufende HTML-Seite geladen wurde, also wenn PFAD keinen Servernamen enthält, der nicht auch zumindest in der eigene Sicherheitszone ist.

http://www.checkupdown.com/status/E500_de.html

Nachtrag: Ajax mittels jQuery habe ich noch nie genutzt, nur direkt. Aber bist du sicher, dass die Daten json-kodiert werden ( dataType: 'json'). Im PHP tust jedenfalls nichts, um es zu dekodieren.
 
Die Pfade waren nur Falsch...
Jetzt muss ich nur noch die SQL-Befehle hinbekommen

Also hat sich es glaube ich erledigt, trzdm danke ^^
 
Werbung:
Ok ich komme nicht weiter...
Ich werde es mal ausführlicher beschreiben, damit du mir auch helfen kannst

Also:

Ich habe eine index.php Datei, die die anderen Dateien alle inkludiert (welche sind uninteressant). Mein Ziel ist es bei einem Spiel via Ajax die Punktzahl in eine MySQL-Tabelle einzuzeichnen...
Ich habe folgenden Ansatz:
Code:
jQuery.ajax({
        type: 'POST',
        url: 'Pfad/saveHighscore.php',
        data: "score="+score+"&game=Tetris",
});

Dadurch wird die Datei aufgerufen und die Datei besteht aus folgendem:
PHP:
<?php
    require '../Accounts/MySQL/mysql_users.php';
    include("../../core.php");

    $allowed_gets = $allowed_gets_for_games;

    if (logged_in() === true) {
        if(isset($_REQUEST['game'], $_REQUEST['score']) && in_array($_REQUEST['game'], $allowed_gets) == true) {
            $game = $_REQUEST['game'];
            // Erster Buchstabe vom Game ist groß geschrieben!
            $score = $_REQUEST['score'];
            // Score bzw. bei Racer die Zeit
            $userID = $session_user_id;

            write_top_ten($game, $score, $userID);        
        }
    }
?>
$allowed_gets_for_games beziehe ich aus core.php, genauso wie $session_user_id (geht das? Ich hoffe schon, da ich es ja oben nochmal includiert habe...)
Und dann soll das Programm die Funktion write_top_ten aufrufen, die in mysql_users.php steht.

Die Funktion write_top_ten geht 100%tig, das habe ich schon ausprobiert und auch die Parameter $game und $score sind richtig...
Ich gehe stark davon aus, dass $allowed_gets oder $userID Fehler verursacht, anders kann ich es mir nicht erklären...

Irgendeine Idee? :s
 
Werbung:
Nein nein, auf keinen Fall.
Das ist eine PHP-Datei, das hat seinen Sinn und in anderen Dateien funktioniert das genau so.
Ich weiß nicht, wie du drauf kommst aber deine Aussage ist falsch.
Bei index.php habe ich genau das geiche stehen (include core.php) und es geht

Das kann gar nicht stimmen
 
Werbung:
Zuletzt bearbeitet:
lol...
Könnte mir jetzt mal bitte jemand antworten, der sich mit sowas auskennt?
Felix lieb gemeint aber bitte halt dich daraus
 
Werbung:
Richtig debuggen

1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Könnte mir jetzt mal bitte jemand antworten, der sich mit sowas auskennt?
Es hat dir schon jemand fundiert geantwortet, der sich auskennt, hast es aber scheinbar nicht erkannt.
Daher verrate ich es dir: glaube mal schön dem Spicelab und mit ein weinig Suchen nach seinen Begriffen in den üblichen Suchmaschinen wirst auch den Wahrheitsgehalt leicht prüfen können und mehr noch, sogar ein paar Details dazu finden.

Nachtrag: und die Tipps vom bdt600 solltest auch berücksichtigen, danach findest sicher 80% der Fehler selbst
 
Werbung:
@NetAktiv sry, das hat er im Nachhinein Editiert und ich habe es nicht gelesen

@bdt600 vielen Dank für die Antwort, die bringt leider überhaupt nichts. Ich öffne das Dokument ja nicht wirklich sondern nur in Ajax und da hilft echo und der ganze mist Null...
Ich weiß schon wie man debuggt, aber das kannst du nicht debuggen
Bitte informier dich vorher genauer... :s
 
Werbung:
Zurück
Oben