PHP Logout Session geht nicht

sebdev

Mitglied
Hallo zusammen,
ich schreibe grade ein lizenzsystem in oop und beim login hakt es, die login session "name" löscht ihren wert irgendwie nicht oder mein sql befehl geht nicht.
Habe auf google keine lösung zu meiner sql Query gefunden. Habt ihr ein lösungsansatz für mich?

index.php
Code:
<form class="" action="login.php" method="POST"> 
      <h2>Admin Login / Partner Login</h2>
          <div class="form-group"> 
              <label>Beutzername</label>
              <input type="text" name="username" class="form-control">
          </div>
          <div class="form-group"> 
                  <label>Password</label>
                  <input type="password" name="password" class="form-control">
          </div> 
          <div class="form-group"> 
        <input type="submit" name="login" value="Anmelden" class="form-control">
          </div> 
  </form>
login.php das prepare überprüft die variable ob schadcode drin ist)
PHP:
<?php
session_start();
require_once 'autoload.php';
if ($login->isLoggedIn()) {
  header("Location: admin.php");
}
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    if (isset($_POST['login'])) {
        $username = $base->prepareData($_POST['username']);
        $password = $base->prepareData($_POST['password']);
        $checkData = $conn->runQuery("SELECT am.username, am.password, pr.username, pr.password FROM admin am JOIN partner pr WHERE (am.username = '$username' AND am.password = '$password') OR (pr.username = '$username' AND pr.password= '$password')");
        $checkDataResult = mysqli_fetch_object($checkData);
        $checkDataResultNumRow = count($checkDataResult);
        if ($checkDataResultNumRow >= 1) {
            $_SESSION['name'] =  $checkDataResult->username;
            header("Location: admin.php");
        }
        else {
            echo "Kein Zugriff";
        }
    }
}
?>
login klasse (ich glaube das stück reicht aus)
PHP:
  function isLoggedIn()
  {
    if (isset($_SESSION['name'])) {
      $username = Base::prepareData($_SESSION['name']);
      $this->checkLogin = DATABASE::runQuery("SELECT admin.username, partner.username FROM admin, partner WHERE admin.username = '$username' OR partner.username = '$username'");
      if (mysqli_num_rows($this->checkLogin) > 0) {
        return true;
      }
      else {
        return false;
      }
    }
  }
    function    logout(){
            unset($_SESSION['name']);
            $destroy = session_destroy();
            if($destroy){
                return true;
            }
    }
logout.php
PHP:
<?php
error_reporting(-1);
session_start();
require_once 'autoload.php';
if ($login->isLoggedIn()) {
$logout = $login->logout();
if($logout == true){
     header("Location: index.php");
}
else {
     die("Fehler");
}
}
?>
 
Lösung
Warum ist die SQL Abfrage fehlerhaft?
Du musst natürlich "username" durch deine Variable ersetzen :)

SQL:
SELECT
a.username, a.password, p.username, p.password
FROM admin a
LEFT JOIN partner p
ON(a.username = p.username)
WHERE (a.username = '$username' AND a.password = '$password')
OR (p.username = '$username' AND p.password = '$password')

Die Variablen solltest du ersetzen wenn Du andere verwendest :)

[EDIT]:
Bitte überarbeite deinen Beitrag statt Doppel-Posting zubetreiben :)
Zurück