Session Problem

Spieleguru

Mitglied
hi,
ich habe mir eine loginseite gebastelt(startseite) mit einprogrammierten passwort und sesions... als ich das dann umschreiben wollte, damit er es aus der db ausliest(nick und pw) ging das iwie net... wäre dankbar wenn ihr mir helfen und vielleicht auch verbessern könntet ;)

problem: ich kann mich mit jedem passwort, egal welchen und welchen usernamen einloggen... egal was ich eingebe..


meine mysqltabelle heißt users in der kapimoney db

die felder zum login heißen "userpasswort" und "username"

hier kommt jetzt mal der code:
(pw ist in md5 verschlüsselt ;))


index.php
PHP:
<?php
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
     //das geht irgendwie net: if (isset$_POST['username' && 'passwort']) {
     
     include("confic.inc");
     
      session_start();

      $username = $_POST[$username];
      $passwort = md5($_POST[$passwort]);
      
      
      
      $db = new mysqli($host,$username,$passwort,$db);  //Verbindung zur Mysql-Datenbank herstellen
      if (mysqli_connect_errno())
        die(mysqli_connect_error); 
        
             
      if($result = $db->query("SELECT userpasswort FROM users WHERE username LIKE $username"))
      {
        $pw = $result->fetch_assoc();
      
      $passwort_db = $pw['userpasswort'];
      $result->close();     
      }
       
      $hostname = $_SERVER['HTTP_HOST'];
      $path = dirname($_SERVER['PHP_SELF']);

      // Benutzername und Passwort werden überprüft
      if ($passwort == $passwort_db) {
       $_SESSION['angemeldet'] = true;

       // Weiterleitung zur geschützten Startseite
       if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
        if (php_sapi_name() == 'cgi') {
         header('Status: 303 See Other');
         }
        else {
         header('HTTP/1.1 303 See Other');
         }
        }
        
       $db->close();
       
       header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index2.php');
       exit;
       
       
       }
       else {
        
        $db->close();
        
        echo "<script type=\"text/javascript\"><!-- alert(\"Username oder Passwort nicht korret!\"); --></script>";        
       }
      }
?>

ich hab das hier mal mit einbinden der confic.inc gemacht, was auch net funktioniert... bei test hatte ichs einprogrammiert... wollt es aber über ne externe datei machen ;)

confic.inc
PHP:
<?php 
$host = "localhost";
$username = "root";
$passwort = "XXX";
$db = "kapimoney";
 ?>


das formular in der index.php:
HTML:
                      <FORM METHOD='POST' ACTION='index.php'>
                        <table>
                          <tr>
                            <td width=50%>Nickname</td>
                            <td width=50%><input type='text' name='username' maxlength='50' size='16' value=''></td>
                          </tr>
                          <tr>
                            <td width=50%>Passwort</td>
                            <td width=50%><input type='Password' name='passwort' maxlength='100' size='16' value=''></td>
                          </tr>
                          <tr>
                            <td width=50%><INPUT TYPE='submit' VALUE='   login   ' class='send'></td>
                          </tr>
                        </table>
                        <div align=center>
                          <a href='index.php?page=regi' title='Registrier dich, wenn du noch keinen Account hast.'>anmelden</a>
                          &nbsp;|&nbsp;
                          <a href='index.php?page=sendpass' title='Passwort vergessen? Lass dir ein neues zukommen!'>Passwort vergessen?</a>
                        </div>
                      </form>

zum sluss noch die auth.php, die ich in jede zu schützende seite einbinde:
PHP:
<?php
     session_start();

     $hostname = $_SERVER['HTTP_HOST'];
     $path = dirname($_SERVER['PHP_SELF']);

     if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
      header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php');
      exit;
      }
?>

die logout.php poste ich hier mal nicht, da die funktioniert...

ich hoffe, es macht sich jemand die mühe mir zu helfen.. wobei ich wahrscheinlich ein sehr blöden fehler gemacht habe :)
PS: nach dem login solls mich zus index2.php weiterleiten ;)

edit: ich würd gern bei dieser art von login bleiben... das tut von hier hab ich auch ausprobiert, aber nicht hinbekommen es richtig zu implementieren...
 
Zuletzt bearbeitet:
Du hast ein " zuviel bwz zuwenig gemacht siehe roten bereich bei deinen Quellcode im Post oben.
Und noch parr fehler drin habs nur mal schnell überflogen mußte schaun obs geht.

PHP:
<?php
     if (isset ($_POST['username' && 'passwort'])) {
     
     include("confic.inc");
     
      session_start();

      $username = $_POST[$username];
      $passwort = $_POST[$passwort];
      
      
      
      $db = new mysqli("$host","$username","$passwort","$db");  //Verbindung zur Mysql-Datenbank herstellen
      if (mysqli_connect_errno())
        die(mysqli_connect_error); 
        
             
      if($result = $db->query("SELECT userpasswort FROM users WERE username=$username"))
      {
        $pw = $result->fetch_assoc();
      
      $passwort_db = $pw["userpasswort"];
      $result->close();     
      }
       
      $hostname = $_SERVER['HTTP_HOST'];
      $path = dirname($_SERVER['PHP_SELF']);

      // Benutzername und Passwort werden überprüft
      if ($passwort == $passwort_db) {
       $_SESSION['angemeldet'] = true;

       // Weiterleitung zur geschützten Startseite
       if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
        if (php_sapi_name() == 'cgi') {
         header('Status: 303 See Other');
         }
        else {
         header('HTTP/1.1 303 See Other');
         }
        }
        
       $db->close();
       
       header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index2.php');
       exit;
       
       
       }
       else {
        
        $db->close();
        
        echo "<script type=\"text/javascript\"><!-- alert(\"Username oder Passwort nicht korret!\"); //--></script>";        
       }
      }
?>


Mfg Splasch
 
Zuletzt bearbeitet:
ups...
das kommt, da ich das erst gerade geändert habe... hatte es grad eben noch im quellcode stehen..

also, das ist nich das problem...
ich kann mich ja mit alles das ich eingebe anmelden...


//edit: hab grad oben noch mal was geändert, im ersten code zeile 2... kommentar hinzugefügt...
 
Zuletzt bearbeitet:
Du löschst mit folgendem Code

PHP:
      $username = $_POST[$username];
      $passwort = $_POST[$passwort];

deine Datenbank-Zugangsdaten, was aber nicht der Grund sein wird,aber trotzdem komisch,dass dir das nicht auffällt.

Ausserdem heisst es
PHP:
      $username = $_POST['username'];
      $passwort = $_POST['passwort'];
,denn ansosnten fragt der folgendes ab:
PHP:
      $username = $_POST[root];
      $passwort = $_POST[XXX];

Zudem solltest du das Query folgendermaßen umändern, damit die SQL-Syntax stimmt
PHP:
if($result = $db->query("SELECT userpasswort FROM users WHERE username LIKE $username"))
Du solltest die Fehler-Anzeige von Mysql nutzen:
echo mysql_error();

Dann würdest du solche Fehler schneller sehen. Und eine Hilfe ist es auch alle Variablen beim Testen einfach mal ausgeben zu lassen.
 
Zuletzt bearbeitet:
danke, werd ich gleich einmal ausprobieren...

und das mir das eine nicht aufgefallen ist, liegt wahrscheinlich daran, das ich es erst geändert habe mit der confic, als ich es hier schrieb...

naja, arbeite eben das erstemal mit sessions... zwar schon über 4 jahre dbei, aber egal...


//edit: funktioniert immer noch nicht... außerdem hab ich mal die anführungsstriche beim mysqli_connect entfernt(die variablen ;))

//edit2: hab oben nun den code so ediert, wie ich ihn nun habe..

//edit3: es kommen alle daten von dem formular und der confic.inc an!
 
Zuletzt bearbeitet:
Zurück