alfi: URL zerlegen, Werte weiterleiten

Hallo @All,

vielleicht kann mir hier einer bei meinem Problem helfen.

Um es kurz zu machen, ich schreibe für mein Forum ein Script um Flash-Games spielen zu können. Das klappt auch soweit wunderbar.
Allerdings werden die SPielstände von den Spielen mit dieser URL übermittelt:

index.php?act=Name&do=newscore

Hinter "newscore" sind dann die zwei Werte, einmal der Name des Spiels und das Ergebnis.

Die Foren-Software kennt aber nur "action" und nicht "act".

Daher dachte ich mir, ich lese auf der "index.php" per $_GET alle Teile aus und stecke sie als Variable in die neue URL und übermittle so quasi die Werte an die richtige Seite.

Mein Code dazu war:

  
switch($_GET['act'])  
 {  
  case 'Arcade':  
   switch($_GET['do'])  
   {  
    case 'newscore':  
      $gname=$_POST['gname'];  
      $gscore=$_POST['gscore'];  
     header('Location: index.php?page=SeitenName&action=newscore&gname='.$gname.'&gscore='.$gscore.'');  
    break;  
   }  
  break;  
 }  

Das blöde ist, das funktioniert aber nur, wenn man schon auf der Spieleseite ist. Wenn man das Forum aber normal aufrufen möchte, liest er "act" als "Undefined index: act"

Meine Frage, wie kann ich der Index-Datei sagen, es soll nur bei dieser einen bestimmten URL das machen was ich oben beschrieben habe?

Ich hoffe, ihr könnt mir helfen, wäre super.

Schonmal Danke und schönes Wochenende
Alfi

  1. Allerdings werden die SPielstände von den Spielen mit dieser URL übermittelt:

    index.php?act=Name&do=newscore

    Die Foren-Software kennt aber nur "action" und nicht "act".

    Meine Frage, wie kann ich der Index-Datei sagen, es soll nur bei dieser einen bestimmten URL das machen was ich oben beschrieben habe?

    Ich verstehe den Problem nicht so ganz. Entweder öffnest du die Datei index.php und änderst dort die Abfrage des Parameters act in action oder du änderst die Spiele dahingehend, dass sie statt act action liefern. Wo ist denn da die Schwierigkeit?

    1. Die Spiele kann ich nicht ändern, wäre zu aufwendig und es soll ja universell, also nicht nur in meinem Forum eingesetzt werden können.

      Die Idee "action" in "act" umzuschreiben  habe ich jetzt mal überlesen, wenns recht is. Wenn ich das ändern würde, müsste ich die komplette Foren-Software dahingehend umschreiben. Ich hoffe, es versteht sich von selbst daß das erstens irrsinniger Aufwand und zweitens wohl auch eine Verletzung gegen das Copyright des Herstellers wäre (glaube ich jetzt einfach mal)...

      Gibts für meine Methode im ersten Post denn keine Möglichkeit? Evtl. mit "IF" oder sowas???

      Ich verstehe den Problem nicht so ganz. Entweder öffnest du die Datei index.php und änderst dort die Abfrage des Parameters act in action oder du änderst die Spiele dahingehend, dass sie statt act action liefern. Wo ist denn da die Schwierigkeit?

      1. Die Idee "action" in "act" umzuschreiben  habe ich jetzt mal überlesen, wenns recht is.

        Mir ist's wurscht. Es ist dein Problem, nicht meines.

        Wenn ich das ändern würde, müsste ich die komplette Foren-Software dahingehend umschreiben. Ich hoffe, es versteht sich von selbst daß das erstens irrsinniger Aufwand

        Das Einfügen der Zeile $_GET["action"] = $_GET["act"]; am Anfang des Skriptes finde ich nun nicht so irrsinnig, aber gut.

        und zweitens wohl auch eine Verletzung gegen das Copyright des Herstellers wäre (glaube ich jetzt einfach mal)...

        Glaube ich mal nicht.

        1. Wenn ich das am Anfang einfüge, bekomme ich eine Fehlermeldung "Undefined Index : act"

          Erklär mir doch mal bitte, was dein Vorschlag bezwecken soll, ich verstehs ned ganz. Ich kann die Startseite des Forums nicht aufrufen, solange mein Code wie im ersten Post gezeigt, drin steht.
          Ich brauch ne Lösung, wie ich meinen (angepassten) Code drinstehen lassen kann, das Forum trotzdem normal läuft UND die URL "index.php?act=Arcade&do=newscore" richtig ausgelesen und die Werte weitergeleitet werden...

          Da hilft mir ein "mir ist das wurscht" wenig, sorry...

          Das Einfügen der Zeile $_GET["action"] = $_GET["act"]; am Anfang des Skriptes finde ich nun nicht so irrsinnig, aber gut.

          und zweitens wohl auch eine Verletzung gegen das Copyright des Herstellers wäre (glaube ich jetzt einfach mal)...

          Glaube ich mal nicht.

  2. Das blöde ist, das funktioniert aber nur, wenn man schon auf der Spieleseite ist. Wenn man das Forum aber normal aufrufen möchte, liest er "act" als "Undefined index: act"

    Hi,
    das ist keine Fehlermeldung sondern ein Hinweis von PHP dass du auf ein nicht gesetztes Array-Element zugreiffst (klar, 'act' ist ja in dem Moment nicht gesetzt). Diese Hinweise (Notices) zeigt man normal nur auf einem Testsystem an, nicht auf einem Produktivsystem, aber das ist nicht so wichtig.
    Du umgehst die Meldung indem du einfach schaust, ob $_GET['act'] gesetzt ist, beispielsweise mit isset() oder mit einer anderen Funktion die in einem Array nach indizes sucht.

    Gruß,
    Andreas