Cookie Problem?

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

  • Cookie Problem?

    Hallo,
    ich habe gerade erst mit PHP angefangen deshalb bitte nicht verwundern wenn ich die eine oder andere vermeintlich dumme Frage stelle.

    Zu dem was gegeben ist:
    PHP Version 5.2.1
    phpMyAdmin 2.9.2
    MySQL 5.0
    Apache 2.2

    Ich habe ein Script geschrieben mit dem man Blogeinträge verfassen kann. Diese werden auf einer Seite angezeigt. Bei dem Script war noch ein Usermanagment, Kategorieren verwalten und Bilder hochladen dabei. Das hat auch alles wunderbar geklappt und ich habe ihn schon online.

    Nun habe ich mich daran gemacht, eine setup.php zu erstellen, die in der angegeben Datenbank die Tabellen erstellt und in der Usertabelle noch einen User anlegt (den, den man im Formular der setup.php eingetragen hat).

    Das hat auch alles wunderbar geklappt (die Tabellen und der User wurde erstellt) aber man kann sie nicht einloggen, bzw man kann es schon aber... das ist eine komische Geschichte.

    Der Login-Vorgang ist erfolgreich, es werden auch cookies mit dem richtigen Inhalt (username + md5pw) gesetzt, aber der login ist doch irgendwie untrue. Denn statt der Willkommensnachricht im Adminbereich kommen nochmal die 2 Loginfelder für Username + Passwort. Ich bin echt verzweifelt, keine Ahnung wieso das jetzt auf einmal so ist, bisher hat es auch funktioniert und ich habe an den Cookies nichts verändert.

    Vielleicht könnt ihr mir ja weiterhelfen.

    Hier ein paar Codeschnipsel:

    setup.php
    PHP-Code:
    <?php
    require_once('data/blog_DB.php'); // da steht die db + die zugangsdaten für die db drin

    if ($_POST['setup'])    {

    // jetzt kommen die ganzen mysqlbefehle, create etc. pp.

        
    setcookie("username"$_POST['username']);
        
    setcookie("password"md5($_POST['password']));
        
    $login=true;
    // hab ich frisch eingebaut als das Problem aufgetaucht ist
    ?>
    config.php
    PHP-Code:
    <?php
    ob_start
    ();
    require_once(
    'blog_DB.php');
    $login=false;
    $user=array();
    $query_mysqldb "SELECT * FROM blog_users INNER JOIN 
             blog_rechte on blog_users.grpid = blog_rechte.id
             WHERE blog_users.name='"
    .$_COOKIE['username']."' AND
             blog_users.password='"
    .$_COOKIE['password']."' ";
    $result mysql_query($query_mysqldb$verbindung) or die(mysql_error());
    while (
    $row mysql_fetch_assoc($result)) {  
    $user $row;
    $login=true;
    ?>
    login.php:
    PHP-Code:
    <?php
    require_once('../data/config.php');
    require_once(
    '../data/blog_DB.php');
    $login=false;
    $query_mysqldb "SELECT * FROM blog_users WHERE name='".$_POST['username']."' AND
                            password='"
    .md5($_POST['password'])."' ";

    $result mysql_query($query_mysqldb$verbindung);
    while (
    $row mysql_fetch_assoc($result)) {  
    setcookie("username"$_POST['username']);
    setcookie("password"md5($_POST['password']));
    $login=true;
    }
    ?>
    Zuletzt geändert von dc111; 19.06.2007, 11:46.

  • #2
    Bitte ändere mal die Codeblöcke
    Code:
        <?php
        require_once('data/blog_DB.php'); 
    #(...Viel Text)
        // hab ich frisch eingebaut als das Problem aufgetaucht ist
        } ?>
    in
    PHP-Code:
        <?php
        
    require_once('data/blog_DB.php'); 
    #(...Viel Text)
        // hab ich frisch eingebaut als das Problem aufgetaucht ist
        
    ?>
    um.

    Und dann solltest du dir gedanken darüber machen was nachdem der Login True geworden ist passieren soll.
    Bitte Beachten.
    Foren-Regeln
    Danke

    Kommentar


    • #3
      Es soll nur was passieren wenn der Login nicht true ist, dann soll nämlich der Zugang gesperrt sein.

      Hab in allen Adminbereich-Seiten am Anfang ein
      PHP-Code:
      if($login!==true){
                          die(
      "kein Zugriff");} 
      drin.

      Kommentar


      • #4
        ähm ok. versteh das zwar gerade nicht ganz aber egal.

        vieleicht solltest du nach erfolgreichem Einloggen auch weiterleiten.

        PHP-Code:
        header("Location: deine_url"); 
        PHP-Code:
        if($login!==true){ 
        dürfte auf der adminseite nicht mehr existent sein da sie nur in der login.php existent ist. und ich nirgends sehen kann wo du diese Variable mit an das cookie übergibst. also solltest du lieber auf das Cookie prüfen. und vieleicht mit $_SESSION arbeiten.

        Aber aus dem wenigen kann man nur schwer erkennen was die skripte nun im ganzen machen.

        Wie gesagt der bezug zur weiterleitung fehlt völlig. Die prüfung mag schon richtig sein aber. wenn auf der admin seite nur auf $login!== true geprüft wird und nicht auf die existens des Cookies und des richtigen inhaltes. Dürfte sich der Fehler auf der Admin seite erklären lassen.

        Ich kann aber mit meiner vermutung auch total falsch liegen. Da ich nicht nachvollziehen kann was du da eigentlich GENAU machen willst.
        Bitte Beachten.
        Foren-Regeln
        Danke

        Kommentar


        • #5
          Ich habe eine HTML-Weiterleitung im head:

          Code:
          	<meta http-equiv="refresh" content="1; URL=index.php">
          Was mich wirklich verwirrt ist, dass es bis vor kurzem funktioniert hat und jetzt nicht mehr, obwohl ich an dem Code für die Cookies nichts verändert habe.

          Naja ich möchte einfach das man, wenn man Username + Passwort richtig eingegeben hat, von der Seite als eingeloggt erkannt wird und im Adminbereich arbeiten kann.

          Kommentar


          • #6
            Und wie prüfst du in der Index.php die Exitens des Cookies und die Datenrichtigkeit darin?


            Wie gesagt ... bei Sowas bietet sich $_SESSION an . wenn man unbedingt zwischen eingelogt und nicht eingelogt unterscheiden will.

            Such hier im Forum mal nach Login formular . findest jede menge Beiträge dazu. mit Cookies ohne Cookies ... mit Cookie und $_SESSION
            und so weiter und so fort.
            Bitte Beachten.
            Foren-Regeln
            Danke

            Kommentar


            • #7
              In der index habe ich nur
              PHP-Code:
              <?php
              require_once('config.php');
              ?>
              und eben:

              PHP-Code:
              <?php if($login===true
              // willkommen }
              else
              // login formular }
              ?>
              Ich habe gerade die Sachen die ich gestern gemacht habe (bevor es nicht mehr ging) hochgeladen und auf dem Webspace geht alles.
              Mich wurmt es eben sehr dass ich nicht weiss wieso es bisher funktioniert hat und jetzt nicht mehr.

              Kommentar


              • #8
                Schalte mal das Error Reporting auf E_ALL.
                ich glaube

                Kommentar


                • #9
                  Original geschrieben von ministry
                  Schalte mal das Error Reporting auf E_ALL.
                  Da kam auch schon einiges:

                  Notice: Undefined index: username in D:\XAMPP\xampp\htdocs\blog\data\config.php on line 8

                  Notice: Undefined index: password in D:\XAMPP\xampp\htdocs\blog\data\config.php on line 9

                  Notice: Undefined index: grpid in D:\XAMPP\xampp\htdocs\blog\data\config.php on line 16

                  Notice: Undefined index: name in D:\XAMPP\xampp\htdocs\blog\data\config.php on line 17
                  Die entsprechenden Zeilen:

                  PHP-Code:
                  $query_mysqldb "SELECT * FROM blog_users INNER JOIN 
                           blog_rechte on blog_users.grpid = blog_rechte.id
                           WHERE blog_users.name='"
                  .$_COOKIE['username']."' AND 
                           blog_users.password='"
                  .$_COOKIE['password']."' "// Zeile #9 
                  PHP-Code:
                  $grpid $user['grpid']; // Zeile 16
                  $curname $user['name']; // Zeile 17 
                  Die besagten Tabellen & Spalten existieren in der DB.

                  Kommentar


                  • #10
                    gib mal per
                    PHP-Code:
                    var_dump($_COOKIE); 
                    aus was in ihm nach dem einloggen steht.
                    Bitte Beachten.
                    Foren-Regeln
                    Danke

                    Kommentar


                    • #11
                      array(2) { ["username"]=> string(6) "rainer" ["password"]=> string(32) "b27e07073cc5f1f933bbb0da07d97a8b" }

                      Kommentar


                      • #12
                        hmm, Und und die Fehlermeldungen bleiben alle erhalten?

                        Selbst die, die sich auf das Cookie beziehen?

                        Währe dann nämlich etwas komisch.
                        Bitte Beachten.
                        Foren-Regeln
                        Danke

                        Kommentar


                        • #13
                          Dann kommen nur noch die Error in Zeile 16+17.

                          Kommentar


                          • #14
                            Und wenn du dir jetzt noch mal den Inhalt von $user anschaust, siehst du was ...?
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              Naja, wenn ich mir nach dem Login Vorgang in der index.php $user ausgeben lasse meint er sie ist leer:

                              array(0) { }

                              Kommentar

                              Lädt...
                              X