PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Ersatz von$_GET durch $_SESSION (http://www.selfphp.de/forum/showthread.php?t=26173)

DetlevK 02.04.2021 13:11:18

Ersatz von$_GET durch $_SESSION
 
Bisher wurden Variablen über $_GET weiter gereicht. Das funktioniert, stellt aber durch die Sichtbarkeit der Parametr in der Adresszeile ein Sicherheitsrisiko dar.

Codeausschnitt:
Code:

<!-- Vorbelegung von Sprache und Hauptkategorie -->
(isset($_GET['lang'])) ? $lang = $_GET['lang'] : $lang = "DE";
  $_SESSION['lang'] = $lang;
  (isset($_GET['hauptkat'])) ? $hauptkat = $_GET['hauptkat'] : $hauptkat = "Kleidung";
...
<!-- Sprachumschaltung Deutsch/Englisch -->
<section id="menubar">
  <ul>
    <li><a class="menubutton" href="#menu"><img src="../Buttons/menu.png"></a></li>
    <?php
      if ($lang == "DE")
      {
        ?>
        <li class="language"><a href="index.php?lang=EN&hauptkat=<?=$hauptkat?>">English</a></li>
        <li class="language"><a class="active" href="index.php?lange=DE&hauptkat=<?=$hauptkat?>">Deutsch</a></li>
        <?php
      }
      else
      {
        ?>
        <li class="language"><a class="active" href="index.php?lange=EN&hauptkat=<?=$hauptkat?>">English</a></li>
        <li class="language"><a href="index.php?lange=DE&hauptkat=<?=$hauptkat?>">Deutsch</a></li>
        <?php
      }
    ?>
  </ul>
</section>
...
<!-- Auswahl der Hauptkategorie -->
...
    <ul>
      <?php
      //Kategorien nach Hauptkategorien geordnet
      $sql_hk = "SELECT * FROM Hauptkategorien";
      $result_hk = mysqli_query($db, $sql_hk);
      while($object_hk = mysqli_fetch_object($result_hk))
      {
        $hkat = ($lang == "DE") ? $object_hk->Deutsch : $object_hk->Englisch; //Bezeichnung Link Hauptkategorie
        $hk = $object_hk->Deutsch; //Interne Bezeichnung der Hauptkategorie
        if ($hk == $hauptkat)
        {
          ?>
          <li><a href="index.php?hauptkat=<?=$hk?>&lang=<?=$lang?>" class="active"><?=$hkat?></a></li>
          <?php
        }
        else
        {
          ?>
          <li><a href="index.php?hauptkat=<?=$hk?>&lang=<?=$lang?>"><?=$hkat?></a></li>
          <?php
        }
      }
      ?>
    </ul>
...

Wenn ich jetzt analog anstelle von $_GET die Veriablen in $_SESSION versuche abzulegen, funktioniert entweder nichts mehr oder ich schaffe es zwar für die Sprachumschaltung aber nicht für die Auswahl der Hauptkategorie.

Falls gewünscht, kann ich auch einen nicht funktionierenden Ansatz hier einstellen, vielleicht findet ja jemand den Logik-Fehler, den ich hier vermute.

Wer den derzeitigen Code in Aktion sehen möchte:

http://reifrockmaus.de

mfg

Detlev

DetlevK 02.04.2021 19:05:40

Ergänzung: Ersatz von$_GET durch $_SESSION
 
Hier der erste fehlerhafte Ansatz

Code:

//Vorbelegung von Sprache und Hauptkategorie
  (isset($_SESSION['lang'])) ? $lang = $_SESSION['lang'] : $lang = "DE";
  (isset($_SESSION['hauptkat'])) ? $hauptkat = $_SESSION['hauptkat'] : $hauptkat = "Kleidung";

...

  <section id="menubar">
  <ul>
    <li><a class="menubutton" href="#menu"><img src="../Buttons/menu.png"></a></li>
    <?php
      if ($lang == "DE")
      {
        $_SESSION['lang'] = "EN";
        $_SESSION['hauptkat'] = $hauptkat;
        ?>
        <li class="language"><a href="index.php">English</a></li>
        <li class="language"><a class="active" href="index.php">Deutsch</a></li>
        <?php
      }
      else
      {
        $_SESSION['lang'] = "DE";
        $_SESSION['hauptkat'] = $hauptkat;
        ?>
        <li class="language"><a class="active" href="index.php">English</a></li>
        <li class="language"><a href="index.php">Deutsch</a></li>
        <?php
      }
    ?>
   
   
  </ul>
  </section>

...

//Auswahl der Hauptkategorie
<nav>
    <ul>
      <?php
      //Kategorien nach Hauptkategorien geordnet
      $sql_hk = "SELECT * FROM Hauptkategorien";
      $result_hk = mysqli_query($db, $sql_hk);
      while($object_hk = mysqli_fetch_object($result_hk))
      {
        $hkat = ($lang == "DE") ? $object_hk->Deutsch : $object_hk->Englisch; //Bezeichnung Link Hauptkategorie
        $hk = $object_hk->Deutsch; //Interne Bezeichnung der Hauptkategorie
        if ($hk == $hauptkat)
        {
          $_SESSION['hauptkat'] = $hk;
          ?>
          <li><a href="index.php?hauptkat=<?=$hk?>&lang=<?=$lang?>" class="active"><?=$hkat?></a></li>
          <?php
        }
        else
        {
          $_SESSION['hauptkat'] = $hk;
          ?>
          <li><a href="index.php?hauptkat=<?=$hk?>&lang=<?=$lang?>"><?=$hkat?></a></li>
          <?php
        }
      }
      ?>
    </ul>
  </nav>

...

Die Sprachumschaltung scheint so zu funktionieren.
Aber: Die Auswahl der Hauptkategorie funktioniert gar nicht, statt dessen schaltet die Sprache um!


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:07:05 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.