Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit switch($var)...

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit switch($var)...

    moin

    ich habe eine website erstellt und testweise auf meinen server hochgeladen:
    http://web156.s2.okayspace.de/Sokrates-Site/

    hier findet ihr die info.php
    http://web156.s2.okayspace.de/info.php

    auf dieser seite verwende ich zum einbinden meiner inhalte folgenden code:

    Code:
    switch($pago)
    {
    case "start": include("inc/start.php"); break;
    case "allg": include("inc/allgemeines.php"); break;
    default: include("inc/start.php"); break;
    }
    der link zu einem inhalt wird wie folgt generiert:
    Code:
    index.php?pago=allg
    Auf meinem Server funktioniert das ohne Probleme, aber wenn ich das nun auf dem betreffenden Zielserver hochlade, dann bekomme ich nur die Startseite gezeigt (mit dem default inhalt) aber ich komme nicht auf die "unterseiten". bei klick auf einem link komme ich immer nur zur startseite.

    hier der link zur seite:
    http://www.bwl.uni-kiel.de/bwlinstitute/Sokrates/neu/

    und hier die dazugehörige php-info:
    http://www.bwl.uni-kiel.de/bwlinstit...s/neu/info.php


    ich hoffe ihr könnt mir da helfen. ich habe keine lust alles wieder statisch umzubauen.


    mfg alex

    P.S.: Guten Rutsch


  • #2
    register_globals ist das stichwort

    sprich deine variablen mit $_GET['pago'] an und es wird funktionieren.

    mfg
    robo47
    robo47.net - Blog, Codeschnipsel und mehr
    | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

    Kommentar


    • #3
      dein pago= in der URL wird nur als Variable gespeichert, wenn besagte register _globals serverseitig aktiviert sind. Besser ist es, wenn du im Endeffekt auf deinem Server die Abfrage so lassen möchtest, vorher den übergebenen Wert für pago in die Variable zu speichern:

      PHP-Code:
      <?php
      // vorheriger Code
      if(isset($_GET['pago'])) { $pago $_GET['pago']; }
      else { 
      $pago 'start'; }
      // dein Code (switch)
      ?>
      Dann sollte es problemlos funktionieren.
      HTH,
      Dejot

      Nachtrag: in Code eingefügt: durch das else sparst du dir das Default. Du kannst eigentlich sowieso das komplette Switch durch ein if ersetzen und die Seiten, die aufgerufen werden sollen, in einem array speichern und auslagern z.B.. ist aber nur so ein Vorschlag von mir.

      Kommentar


      • #4
        ok - dankeschön. werde es nächstes jahr hochspielen

        Kommentar


        • #5
          mmh, komisch, dass ich eine Frage im Fortgeschrittenen-Forum beantworten konnte. Sicher, dass die hier richtig ist?

          Kommentar


          • #6
            Zitat von dejot
            mmh, komisch, dass ich eine Frage im Fortgeschrittenen-Forum beantworten konnte. Sicher, dass die hier richtig ist?
            naja dein weg ist nicht elegant und etwas unnötig, weil du mit $_GET die variable sowohl bei register_globals on oder off benutzen kannst und somit es nicht nötig ist, auf ein gesetzt zu überprüfen und dann zuzuweißen.

            mfg
            robo47
            robo47.net - Blog, Codeschnipsel und mehr
            | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

            Kommentar


            • #7
              kurz und knapp:
              PHP-Code:
              <?php

                 
              if( isset($_GET['var']) )
                 {
                     switch(
              trim($_GET['var']))
                     {
                         case 
              'start':
                             echo 
              'Do something.';
                             break;

                         
              // [..]

                         
              default:
                             echo 
              'The default-case.';
                     }
                 }
                 else
                 {
                     
              // print the link to reload this site with an URL-parameter
                     
              printf'[url="%s"]reload this site[/url]',
                              
              $_SERVER['PHP_SELF'] . 'var=start' )
                 }

              ?>
              man sollte schon noch mit trim arbeiten .. sonst kann das richtige in der URL stehen, aber weil es per hand eingegeben wurde und sich ein leerzeichen eingeschlichen hat wird die seite nicht geöffnet.

              grüße ben ..

              allerdings ist das keine fortgeschrittenenfrage.

              Der Beitrag wurde verschoben, wegen...
              ... Postings im falschen Forum.

              Bemerkung:
              Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.

              moved to PHP - Anfänger
              [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

              Kommentar

              Lädt...
              X