1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Downloads
  4. Galerie
    1. Alben
  5. Toolbox
    1. Passwort Generator
    2. Portchecker
  6. Mitglieder
    1. Mitgliedersuche
    2. Benutzer online
    3. Trophäen
    4. Team
Fr: 16 Mai 2025
  • Anmelden oder registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Dateien
  • Seiten
  • Bilder
  • Erweiterte Suche

Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.

Anmelden oder registrieren
    1. Nodezone.net Community
    2. Forum
    3. Entwicklung & Scripting
    4. Webentwicklung
    5. HTML, CSS, PHP, JS

    Frage zu include und Variablen

    • McArthur
    • 23. Februar 2017 um 23:18
    • McArthur
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      63
      • 23. Februar 2017 um 23:18
      • #1

      Hallo,

      ich möchte per Klick auf einen Link, einen wert weitergeben, nachdem in einer Datenbank gesucht wird, sagen wir eins(es wird nach id 1 gesucht). zu der id wird etwas gefunden, und es ist ein Link. Dieser Link wird in eine Variable namens inhalt gepackt und durch include wird die Variable ausgegeben.

      PHP: intern.php
      <?php
      session_start();
      
      
      
      
      $pdo = new PDO('mysql:host=localhost;dbname=altislife', 'root', '');
      
      
      
      
      $zugriff = true;
      
      
      
      
      if(!isset($_SESSION['userid'])) {
       $zugriff = false;
      }
      
      
      
      
      //Abfrage der Nutzer ID vom Login
      $userid = $_SESSION['userid'];
      
      
      
      
      $sql = "SELECT * FROM users WHERE id = '".$userid."' ";
      foreach ($pdo->query($sql) as $row) {
          $benutzername = $row['benutzername'];
          $email = $row['email'];
          $rang = $row['rang'];
          $created_at = $row['created_at'];
          $updatet_at = $row['update_at'];
      }
      
      
      
      
      $timestamp = time();
      $datum = date("d.m.Y - H:i", $timestamp);
      
      
      
      
      if(isset($_GET['inhalt'])) {
          $inhalt = $_GET['inhalt'];
          $sql = "SELECT * FROM inhalte WHERE id = '".$inhalt."' ";
          foreach ($pdo->query($sql) as $row);
          $link = $row['inhalt'];
      }
      
      
      
      
      ?>
      
      
      
      
      <!DOCTYPE html>
      <html>
          <head>
              <title>...-Adminbereich</title>
              <link href="styles/intern.css" type="text/css" rel="stylesheet" />
          </head>
          <body>
              <div class="haupt">
                  <?php
                  if($zugriff == false) {
                   ?>
                  <div class="block">
                  Sie sind nicht eingeloggt. <a href="login.php">Zurück zum Login.</a>
                  </div>
                  <?php
                  }
      
      
      
      
                  if($zugriff == true) {
                   ?>
      
      
      
      
                  <aside class="logout">
                      <?php
                      echo   "<h4>Hallo, ".$benutzername."</h4><br/>
                              <a>Ihre email: ".$email."<br />
                              Ihr Adminrang: ".$rang."<br />
                              Admin seit: ".$created_at."<br /><br />
                              Datum: ".$datum."</a>";
                      ?>
                      <br/><br/>
                      <a href="logout.php">Logout</a>
                  </aside>
                  <aside class="menue">
                  <a href="?inhalt=1" >Neuen Admin registrieren</a>
                  </aside>
                  <section>
                  <?php
                       include($link);
                   ?>
                  </section>
      
      
      
      
      
      
      
                  <?php
                  }
                   ?>
              </div>
          </body>
      </html>
      Alles anzeigen

      Die Standart Datei.


      PHP: registrieren.php
      <?php
      $pdo = new PDO('mysql:host=localhost;dbname=altislife', 'root', '');
      
      
      
      
      $showFormular = true; //Variable ob das Registrierungsformular anezeigt werden soll
      
      
      
      
      $datum = date("d.m.Y - H:i");
      
      
      
      
      if(isset($_GET['register'])) {
          $error = false;
          $benutzername = $_POST['name'];
          $email = $_POST['email'];
          $rang = $_POST['rang'];
          $passwort = $_POST['passwort'];
      
      
      
      
       if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          echo 'Bitte eine gültige E-Mail-Adresse eingeben<br>';
          $error = true;
          }
      
      
      
      
          if(strlen($passwort) == 0) {
              echo 'Bitte ein Passwort angeben<br>';
              $error = true;
          }
      
      
      
      
          //Überprüfe, dass die E-Mail-Adresse noch nicht registriert wurde
          if(!$error) {
              $statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");
              $result = $statement->execute(array('email' => $email));
              $user = $statement->fetch();
      
      
      
      
              if($user !== false) {
                  echo 'Diese E-Mail-Adresse ist bereits vergeben<br>';
                  $error = true;
              }
          }
      
      
      
      
          //Keine Fehler, wir können den Nutzer registrieren
          if(!$error) {
              $passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);
      
      
      
      
              $statement = $pdo->prepare("INSERT INTO users (email, passwort, benutzername, rang, created_at) VALUES (:email, :passwort, :benutzername, :rang, :created_at)");
              $result = $statement->execute(array('email' => $email, 'passwort' => $passwort_hash, 'benutzername' => $benutzername, 'rang' => $rang, 'created_at' => $datum));
      
      
      
      
              if($result) {
                  echo 'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
                  $showFormular = true;
              } else {
                  echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
              }
          }
      }
      
      
      
      
      if($showFormular) {
      ?>
      
      
      
      
      <form action="?register=1" method="post">
      Benutzername:<br/>
      <input type="text" size="40" maxlength="250" name="name"/><br /><br/>
      
      
      
      
      E-Mail:<br/>
      <input type="email" size="40" maxlength="250" name="email"/><br/><br/>
      
      
      
      
      Admin rang:
      <select name="rang" size="1">
          <option>1</option>
          <option>2</option>
          <option>3</option>
          <option>4</option>
          <option>5</option>
          <option>6</option>
      </select><br/><br/>
      
      
      
      
      Dein Passwort:<br/>
      <input type="password" size="40"  maxlength="250" name="passwort"/><br/>
      
      
      
      
      <input type="submit" value="Abschicken"/>
      </form>
      <br/>
      <?php
      } //Ende von if($showFormular)
      
      
      
      
      echo $datum;
      ?>
      
      
      
      
      </body>
      </html>
      Alles anzeigen

      Die einzubidende Datei.


      Wenn ich die Seite nun aufrufe, sieht zunächst alles richtig aus, doch wenn ich das formular, welches durch include eingesetzt wird, Abschicke, bekomme ich Warnungen, dass die Variable leer sei.

      Zitat von PHP


      Notice: Undefined variable: link in C:\xampp\htdocs\intern.php on line 72


      Warning: include(): Filename cannot be empty in C:\xampp\htdocs\intern.php on line 72


      Warning: include(): Failed opening '' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\intern.php on line 72

      Hat einer eine idee was da nicht stimmt?

      Vielen Dank schonmal im voraus.

      Mfg
      Nico

      Mit freundlichen Grüßen
      McArthur | Nico

    • The C Stands for Cheese
      Gast
      • 24. Februar 2017 um 00:50
      • #2

      include/require/require_once ist vom Prinzip gleichzusetzen. Es bindet Dateien ein. Keine Variablen. bsp. Include("config.php");

      Somit ist der Code aus config.php auch in der Datei mit der Include Funktion.


      Bin halb Hacke, daher ist dir Richtigkeit bzw. Rechschreibung wie der Text auf der Flasche.

    • The C Stands for Cheese
      Gast
      • 24. Februar 2017 um 00:51
      • #3

      Ach ja, ich empfehle dir mit einem Framework wir Lavarel oder Symfony zu Arbeiten. Super einfach und übernimmt vieles (Escapen etc.) Für dich. Und es gibt Module (Login System etc.)

    • McArthur
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      63
      • 24. Februar 2017 um 12:48
      • #4

      Danke für den tip, aber ich würde es schon gerne selber machen wollen. Hast du eine Idee, wie ich das Problem anders lösen kann?

      Mit freundlichen Grüßen
      McArthur | Nico

    • The C Stands for Cheese
      Gast
      • 24. Februar 2017 um 12:53
      • #5

      Aus deinem Text geht leider nicht herraus was du machen möchtest. Könntest du es bitte noch einmal erläutern!

      Selber machen musst du alles, es unterstützt dich nur und bietet dir, wie oben genannt, viele Möglichkeiten. Twig, Doctrine uvm. Schau es dir an, lohnt sich wirklich!

    • McArthur
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      63
      • 24. Februar 2017 um 12:59
      • #6

      Also ich möchte einen Internen bereich für Admins machen. auf der linken seite, befinden sich links für bestimmte aktionen. Zb ist eine dieser Aktionen, dass man einen neuen Admin registriert. diese registrierung habe ich in einer anderen datei (registrieren.php) gespeichert. diese datei soll in die intern.php datei eingebunden werden. wenn ich auf diesen Link klicke.

      Ich hoffe ich konnte dir einigermaßen gut erläutern was ich vorhabe.

      Mit freundlichen Grüßen
      McArthur | Nico

    • Multivitamin
      aka Saft
      Reaktionen
      201
      Trophäen
      11
      Beiträge
      352
      • 24. Februar 2017 um 13:00
      • #7

      Jo, entweder solltest du ein Framework nutzen oder lernen wie du deine Daten richtig escapest


      PHP
      $inhalt = $_GET['inhalt'];
       $sql = "SELECT * FROM inhalte WHERE id = '".$inhalt."' ";

      mit einem solchen statement kann ich schon deine komplette MySQL kapern wenn du root als nutzer hast bzw nur die einzelne DB wenn du einen extra User dafür nutzen würdest


      richtigerweise würde es so gehören (Kann aber auch sein dass es nicht ganz richtig ist, hab schon länger nicht mehr mit PHP gearbeitet^, der Schutz sollte jedoch gegeben sein):


      PHP
      $query = $pdo->prepare("SELECT * FROM inhalte WHERE id = :inhalt")
      $query->execute(array(":inhalt" => $_GET["inhalt"]))
      foreach ($query->fetchAll() as $row) {
      ....
      ....
    • The C Stands for Cheese
      Gast
      • 24. Februar 2017 um 13:04
      • #8

      uhhmmm...

      GET und Switch statement.

      Da brauchst du keine Datenbank.

    • McArthur
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      63
      • 24. Februar 2017 um 13:07
      • #9

      Ich habe mich in diesem fall nicht weiter damit ausseinander gesetzt, da diese Db Lokal auf meinem PC gespeichert ist und natürlich nicht so öffentlich gemacht wird. wenn ich iwann fertig bin, werde ich natürlich einen neuen Benutzer anlegen und ein vernünftiges Passwort benutzen.

      Aber wenn es Loka auf meinem Pc ist und niemand von ausserhalb drauf zugreifen kann, ist es ja kein Problem denke ich.

      So viel zur Datenbank.

      Mit freundlichen Grüßen
      McArthur | Nico

    • The C Stands for Cheese
      Gast
      • 24. Februar 2017 um 13:08
      • #10

      Hat damit rein garnichts zu tun!

      Google: PHP what is Mysql injection

      Lè edit: SQL-Injection (dt. SQL-Einschleusung) bezeichnet das Ausnutzen einer Sicherheitslücke in Zusammenhang mit SQL-Datenbanken, die durch mangelnde Maskierung oder Überprüfung von Metazeichen in Benutzereingaben entsteht. Der Angreifer versucht dabei, über die Anwendung, die den Zugriff auf die Datenbank bereitstellt, eigene Datenbankbefehle einzuschleusen. Sein Ziel ist es, Daten auszuspähen, in seinem Sinne zu verändern, die Kontrolle über den Server zu erhalten oder einfach größtmöglichen Schaden anzurichten.

    • McArthur
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      63
      • 24. Februar 2017 um 13:21
      • #11

      oh okay... gut zu wissen, danke.
      Ich bin ja noch Anfänger und weiss nicht wie ich das verhindern kann.....

      Mit freundlichen Grüßen
      McArthur | Nico

    • The C Stands for Cheese
      Gast
      • 24. Februar 2017 um 13:24
      • #12

      Gerade desshalb solltest du ein Framework benutzen.

    • McArthur
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      63
      • 24. Februar 2017 um 22:46
      • #13

      Wie könnte ich es denn ohne Framework sicher machen?

      Mit freundlichen Grüßen
      McArthur | Nico

    • Multivitamin
      aka Saft
      Reaktionen
      201
      Trophäen
      11
      Beiträge
      352
      • 24. Februar 2017 um 22:59
      • #14

      hab ich doch schon oben geschrieben^

    • McArthur
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      63
      • 24. Februar 2017 um 23:27
      • #15

      Oh, entschuldigung. Das habe ich voll übersehen.
      Darf ich fragen, was mit escapen gemeint ist? pardon

      Mit freundlichen Grüßen
      McArthur | Nico

    • Multivitamin
      aka Saft
      Reaktionen
      201
      Trophäen
      11
      Beiträge
      352
      • 25. Februar 2017 um 06:17
      • #16

      Nehmen wir mal als Beispiel deine Query her,

      Code
      $inhalt = $_GET['inhalt'];
      $sql = "SELECT * FROM inhalte WHERE id = '".$inhalt."' ";


      alles was im $_GET drinnen steht ist einfach zu manipulieren da du dies direkt im URL Feld bearbeiten kannst
      nun könnte ich zum Beispiel anstatt einer Zahl das hier reinschreiben

      Code
      '; DROP TABLE inhalte; --

      Dann würde deine Query aufeinmal so aussehen:


      SQL
      SELECT * FROM Inhalte WHERE id = ''; DROP TABLE Inhalte; --'


      und ich könnte somit deine Tabelle mit "Inhalte" löschen
      Durch das Escaping werden Zeichen wie z.b. ein " umgewandelt in ein \" und MySQL nimmt das dann nicht mehr als Steuerzeichen

    • 0xBADC0DED
      Fortgeschrittener
      Reaktionen
      102
      Trophäen
      10
      Beiträge
      443
      • 25. Februar 2017 um 07:21
      • #17

      MongoDB for the win im Bezug auf SQL Injections :)

    • Multivitamin
      aka Saft
      Reaktionen
      201
      Trophäen
      11
      Beiträge
      352
      • 25. Februar 2017 um 07:44
      • #18

      Wenn du nicht aufpasst kannst du dennoch Schindluder mit betreiben :D

      Falls du komplette Objekte in MongoDB reinschreiben solltest :P
      Vor allem wenn der MongoDB Port offen gelassen wird^, gibt ja keine Authentifizierung xD
      Nach MongoDB und Elasticsearch: Erpresser nehmen CouchDB und Hadoop ins Visier |
      heise Security

    • 0xBADC0DED
      Fortgeschrittener
      Reaktionen
      102
      Trophäen
      10
      Beiträge
      443
      • 25. Februar 2017 um 08:39
      • #19
      Zitat von Multivitamin

      gibt ja keine Authentifizierung xD

      Man muss halt auch den Server mit --auth starten banned

    • McArthur
      Anfänger
      Reaktionen
      8
      Trophäen
      11
      Beiträge
      63
      • 25. Februar 2017 um 11:54
      • #20

      Ok, danke für die Erklärung. Und wenn ich das jetzt richtig verstanden habe, dann ist dein code schnipsel "escapet"?

      Zitat von Multivitamin
      • $query = $pdo->prepare("SELECT * FROM inhalte WHERE id = :inhalt")
      • $query->execute(array(":inhalt" => $_GET["inhalt"]))
      • foreach ($query->fetchAll() as $row) {
      • ....
      • ....

      Mit freundlichen Grüßen
      McArthur | Nico

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von Native-Servers.com? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Benutzerkonto erstellen

    Ähnliche Themen

    • [Tutorial] Permanenter Personalausweis/Dienstausweis - (V1+V2)

      • Rom
      • 19. Oktober 2016 um 22:22
      • Tutorials & Releases
    • Arma 3 Startup Fehler

      • PoweredByte
      • 20. Dezember 2016 um 19:38
      • Hilfeforum

    Wichtige Links & Informationen

    Server & Hosting-Ressourcen

      Server Administration & Hosting Basics

      Windows Server Support & Guides

      Linux Server Configuration & Help

      Setting up TeamSpeak 3 & VoIP Servers

      Domains & Web Hosting for Beginners & Professionals

      Cloud Hosting, Docker & Kubernetes Tutorials

    Gameserver & Modding-Ressourcen

      ArmA 3 Tutorials & Script Collection

      Renting & Operating Gameservers

      DayZ Server Management & Help

      FiveM (GTA V) Server & Script Development

      Rust Server Modding & Administration

      Setting up & Optimizing ARK Survival Servers

    NodeZone.net – Deine Community für Gameserver, Server-Hosting & Modding

      NodeZone.net ist dein Forum für Gameserver-Hosting, Rootserver, vServer, Webhosting und Modding. Seit 2015 bietet unsere Community eine zentrale Anlaufstelle für Server-Admins, Gamer und Technikbegeisterte, die sich über Server-Management, Hosting-Lösungen und Spielemodding austauschen möchten.


      Ob Anleitungen für eigene Gameserver, Hilfe bei Root- und vServer-Konfigurationen oder Tipps zu Modding & Scripting – bei uns findest du fundiertes Wissen und praxisnahe Tutorials. Mit einer stetig wachsenden Community findest du hier Antworten auf deine Fragen, Projektpartner und Gleichgesinnte für deine Gaming- und Serverprojekte. Schließe dich NodeZone.net an und werde Teil einer aktiven Community rund um Server-Hosting, Gameserver-Management und Modding-Ressourcen.

    Wer jetzt nicht teilt ist selber Schuld:
    1. Nutzungsbestimmungen
    2. Verhaltensregeln
    3. Datenschutzerklärung
    4. Impressum
    5. Urheberrechts- oder Lizenzverstoß melden
  • Trimax Design coded & layout by Gino Zantarelli 2023-2025©
    Community-Software: WoltLab Suite™