tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
13
ZUGRIFFE
488
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    jbo jbo ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Beiträge
    55
    Hi,
    nach der Eingabe der richtigen Benutzerdaten lande ich wieder auf der login-seite. Ich seh den Fehler einfach nicht, hat jemand einen Tip?

    php:


    logintest
    <?php
    session_start();
    include "db-connect.php";
    function check_user($identnr, $pwd)
    {
    $sql="SELECT userID FROM users WHERE identnr='".$identnr."' AND pwd=MD5('".$pwd."') LIMIT 1";
    $result= mysql_query($sql) or die(mysql_error());
    if ( mysql_num_rows($result)==1)
    {
    $user=mysql_fetch_assoc($result);
    return $user['userID'];
    }
    else
    return false;
    }

    function login($userid)
    {

    $sql="UPDATE users
    SET usersession='".session_id()."'
    WHERE userID=".$userid;
    mysql_query($sql);
    }
    function logout()
    {
    $sql="UPDATE users
    SET usersession=NULL
    WHERE UserSession='".session_id()."'";
    mysql_query($sql);
    }
    if (isset($_POST['login']))
    {
    $userid=check_user($_POST['identnr'], $_POST['pwd']);
    if ($userid!=false) {
    login($userid);
    $_SESSION['loggedIn'] = $userid;
    }
    else {header("Location:login.php");};
    }
    if (!isset($_SESSION['loggedIn'])) {header("Location: login.php"); }
    else {header("Location:inhalt/index.html");}
    ?>

    login.php

    <a href="anmelden.html">Hier können Sie sich neu registrieren</a>
    <?
    session_start();
    include 'logintest.php';
    if (isset($HTTP_POST_VARS['login']))
    {
    $userid=check_user($HTTP_POST_VARS['identnr'], $HTTP_POST_VARS['pwd']);
    if ($userid!=false)
    login($userid);
    else
    echo 'Ihre Anmeldedaten waren nicht korrekt!';
    }
    if (!login())

    echo '<form method="post" action="login.php">
    <label>ID-Nummer.:</label><input name="identnr" type="text"><br>
    <label>Passwort: </label><input name="pwd" type="password" id="pwd"><br>
    <input name="login" type="submit" id="login" value="Login">
    </form>';
    else
    echo '<a href="logout.php"><img src=inhalt/Content/Buttons/Logout.gif border="0"></a>';
    ?>
     

  2. #2
    Avatar von eLorFiN
    eLorFiN eLorFiN ist offline einfach rob
    Registriert seit
    Apr 2003
    Ort
    Rüsselsheim
    Beiträge
    171
    Also: Anscheinend liefert der Aufruf von check_user einen true-Wert(also einen user) zurück, diesen Teil können wir aus dem debug herausnehmen, genauso wie die db-connect-include-Datei.

    Frage:
    Wieso speicherst du Session-IDs in der Datenbank...lass Sessions doch einfach Sessions sein und speicher eine Variable, die du dann der Session-Id zuweist auf, dem Server.
    Wenn du der Session einen Wert zuweist, kannst du ganz ohne den Datenbankstreß den LogIn verifizieren, nun aber zurück zum login bug:

    Hinter If-Else Schleifenbegrenzungsklammern { } hat ein Semikolon NICHTS zu suchen, wenn ich richtig informiert bin.

    Ansonsten finde ich jetzt keine Sachen, von denen ich Gänsehaut o.Ä bekomme, tu einfach folgendes:
    Mach in die If-Else Blöcke echos rein wie:
    PHP-Code:
    if($userid)
    {
    echo 
    "check user funktion gibt true zurück";
    ...} 
    Damit kannst du die Stelle ausfindig machen, an der das Script bockt.
    Wenn du diese gefunden hast und den Fehler nicht korrigieren kannst, einfach hier posten
     
    Who controls the past controls the future. Who controls the present controls the past.
    - George Orwell, 1984

  3. #3
    jbo jbo ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Beiträge
    55
    irgendwie mach ich es mir zu kompliziert, ich möchte einfach nur ne session aus pwd und identnr erzeugen und dann auf die anderen Seiten weitergeben.
     

  4. #4
    jbo jbo ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Beiträge
    55
    langsam zweifel ich an meinem Verstand.
    Das Login funktioniert, die HP ist mit frames aufgebaut, habe überall den session-aufruf drin und trotzdem kann ich die seiten normal aufrufen. Ich blick nicht, wie das überhaupt funktionieren kann.
     

  5. #5
    Avatar von eLorFiN
    eLorFiN eLorFiN ist offline einfach rob
    Registriert seit
    Apr 2003
    Ort
    Rüsselsheim
    Beiträge
    171
    Das ist denkbar einfach:
    Eine Session an sich ist ein serverseitiges Cookie:
    Eine Variable(oder ein Array, wenn du's geschickt verpackst) wird in einem Verzeichnis auf dem Server gespeichert und dieser Variable wird eine ID, eine sog. Session-id zugewiesen.

    Wenn du es nun fertigbringst, diese ID dem User zuzuweisen, sprich url?s=$session_id
    , kannst du damit diese Variable einem User zuweisen.

    Eine einfachere Alternative sind Cookies, da diese dem Client FEST zugeordnet sind und somit nicht über den URL übergeben werden müssen und auch nach Schließen des Browsers lesbar sind.
    Es gibt zwar Leute, die keine Cookies akzeptieren, das ist jedoch ein gaaaaaaanz geringer Anteil und das meist auch nur zu Debugzwecken.

    Genauere Anleitung zu sessions:

    http://www.selfphp.info/funktionsueb...funktionen.php
     
    Who controls the past controls the future. Who controls the present controls the past.
    - George Orwell, 1984

  6. #6
    jbo jbo ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Beiträge
    55
    irgendwie hab ich im Moment Matschbirne.
    Das script soll nur Seiten aufrufen lassen, wenn der user eingeloggt ist. Es wird zwar eine sessionid aufgebau, aber im Grunde kann jeder die seiten aufrufen. Wo liegt hier blos der Fehler?

    Damit sollte doch ausgeschlossen sein, dass die Seite aufgerufen werden kann.
    PHP-Code:
     <?
    php session_start
    (); 
    include 
    'sessionhelpers.inc.php'
    if (!
    logged_in())
      die(
    'Sie sind nicht eingeloggt.');
    ?>
    Geändert von jbo (20.12.03 um 21:04 Uhr)
     

  7. #7
    Avatar von SilentWarrior
    SilentWarrior SilentWarrior ist offline Mitglied Diamant
    Registriert seit
    Dec 2001
    Beiträge
    3.078
    PHP-Code:
    <?
    php session_start
    (); 
    include 
    'sessionhelpers.inc.php'
    if (!
    logged_in())
      die(
    'Sie sind nicht eingeloggt.');
    ?>
    Huch! Was willst du denn damit verhindern? Das Anzeigen der sessionhelpers.inc? Das machst du so:
    PHP-Code:
    <?
    php session_start
    (); 
    if(
    logged_in())
      include 
    'sessionhelpers.inc.php';
    else
      die(
    'Sie sind nicht eingeloggt.');
    ?>
    Mach dich mal grundlegend über if/else-Anweisungen schlau.
     

  8. #8
    jbo jbo ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Beiträge
    55
    man, schreib ich müll, ich will verhindern, dass die seiten nur von eingeloggten usern gesehen werden
    Geändert von jbo (20.12.03 um 21:36 Uhr)
     

  9. #9
    jbo jbo ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Beiträge
    55
    das script ist nach dem tut von mr. hapiness aufgebaut. irgendwo muss der fehler sein, dass die seiten auch aufgerufen werden, wenn keiner eingeloggt ist, ich kann nur den fehler nicht finden
     

  10. #10
    Avatar von SilentWarrior
    SilentWarrior SilentWarrior ist offline Mitglied Diamant
    Registriert seit
    Dec 2001
    Beiträge
    3.078
    Erm sorry aber könntest du dich mal entscheiden was du eigentlich willst? Soll jetzt jeder die Seite betrachten können oder nur eingeloggte User?
     

  11. #11
    jbo jbo ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Beiträge
    55
    sorry, hab mich unklar ausgedrückt . ich möchte, dass nur eingelogte user die Seite sehen können, nicht eingelogte sollen auf die index geschickt werden.

    so sieht es zur Zeit aus und er zeigt die seite an.
    <?
    php session_start();
    if (logged_in()){
    include 'sessionhelpers.inc.php';}
    else {
    die('Sie sind nicht eingeloggt.');
    header("location: ../jens/index.html");
    }
    ?>
     

  12. #12
    jbo jbo ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Beiträge
    55
    ok, das ganze muss mit include laufen, soweit hab ichs verstanden
    aber das funktioniert auch nicht
    <?
    php session_start();
    if(logged_in()){
    include 'sessionhelpers.inc.php';}
    else {
    die('Sie sind nicht eingeloggt.');
    include 'http://xxx/login.php';
    }
    ?>
     

  13. #13
    Avatar von SilentWarrior
    SilentWarrior SilentWarrior ist offline Mitglied Diamant
    Registriert seit
    Dec 2001
    Beiträge
    3.078
    Ok, dann machen wir jetzt mal Debugging. Probier mal folgendes:
    PHP-Code:
    php session_start(); 
    if(
    logged_in()){ 
    echo 
    "eingeloggt";
    else { 
    echo 
    "nicht eingeloggt";

    Was erscheint da?
     

  14. #14
    jbo jbo ist offline Mitglied Silber
    Registriert seit
    Dec 2003
    Beiträge
    55
    Original geschrieben von jbo
    ok, das ganze muss mit include laufen, soweit hab ichs verstanden
    aber das funktioniert auch nicht
    <?
    php session_start();
    if(logged_in()){
    include 'sessionhelpers.inc.php';}
    else {
    die('Sie sind nicht eingeloggt.');
    include 'http://xxx/login.php';
    }
    ?>
    habe den grundlegenden Fehler, habe webspace bei 1und1, die php-konfiguration lässt mich kein html parsen, werde alles auf php umcoden,
    für Eure Hilfe
     

Ähnliche Themen

  1. Login klappt nicht
    Von LarsB im Forum PHP
    Antworten: 2
    Letzter Beitrag: 09.04.10, 10:01
  2. Login klappt nicht mit ENTER
    Von Kaeschdin im Forum PHP
    Antworten: 11
    Letzter Beitrag: 08.09.08, 11:40
  3. Flash Login klappt nicht
    Von Rico2000 im Forum Flash Plattform
    Antworten: 0
    Letzter Beitrag: 01.07.08, 16:00
  4. Login klappt nicht!
    Von ToWeR im Forum PHP
    Antworten: 7
    Letzter Beitrag: 07.04.04, 22:46
  5. Login Überprüfung klappt nicht
    Von badi im Forum PHP
    Antworten: 4
    Letzter Beitrag: 02.02.03, 23:51