Ankündigung

Einklappen
Keine Ankündigung bisher.

Was ist Falsch =(

Einklappen

Neue Werbung 2019

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

  • Was ist Falsch =(

    Hallo ich habe jetzt ein Login für eine Seite gemacht funktioniert auch bei mir super.

    Die frage ich versuche es von unterschiedlichen pcs - alle benutzen den Internet Explorer bei manchen funktioniert alles einwandfrei und bei manchen kommt die meldung sie sind nicht eingeloggt gibt es dafür eine erklärung?

    Mein Login

    PHP-Code:
    <font face="Arial,Helvetica">
    <
    h1>Bitte loggen Sie sich ein</h1>

    <
    form action="check.php" method="post"

    <
    tr
    <
    td>Name:</td> <br>
    <
    td><input type="text" name="name"></td
    </
    tr> <br>
    <
    tr
    <
    td>Password:</td> <br>
    <
    td><input type="password" name="pass"></td
    </
    tr
    <
    tr> <br>
    <
    input type="submit" name="login" value="Login"
    </
    td
    </
    tr
    </
    table
    </
    form
    Meine check.php

    PHP-Code:
    <?php 
    session_start
    (); 

    $trennzeichen "|"

    if(isset(
    $_POST['login'])) { 
        
    // Name und Passwort einer Variablen zuordnen 
        
    $name $_POST['name']; 
        
    $pass $_POST['pass']; 
         
        
    // Passwort codieren 
        
    $pass md5($pass);  
         
        
    // Nach Username suchen 
        
    if(file_exists("user/".$name.".txt")) { 
            
    $file file("user/".$name.".txt"); 
            
    $user_vorhanden TRUE
        } else { 
        echo 
    "Benutzername nicht gefunden"
        
    $user_vorhanden FALSE
        } 
         
        
    // Wenn User vorhanden: Logindaten zwischenspeichern 
        
    if($user_vorhanden) { 
            
    $arr explode($trennzeichen$file['0']); 
            
    $a_name $arr['0']; 
            
    $a_pass $arr['1'];  
             
            
    // Benutzernamen und Passwort verifizieren 
            
    if($a_name == $name && $a_pass == $pass) { 
                
    $_SESSION["logedin"] = TRUE
                echo 
    "Login erfolgreich!In 5 Sekunden werden Sie weitergeleitet."
            } else { 
                echo 
    "Die Daten waren falsch."
                
            } 
        } 

    ?>

    <meta http-equiv="refresh" content="5; URL=http://....php">
    Anfang und ende der geschützen seiten

    PHP-Code:
    <?php 
    session_start
    (); 
    ?>
    <?php 
    session_start
    (); 
    if(
    $_SESSION["logedin"] == TRUE) { 
        echo 
    "Sie sind eingeloggt.<br><a href=\"http://xxx/logout.php\">Ausloggen</a>"
    ?>
    Ende

    PHP-Code:
    <?php 
        
    } else { 
        echo 
    "Sie sind nicht eingeloggt."

    ?>
    Ich verstehe das nicht auf vielen läuft es und auf anderen nicht bitte um hilfe? Oder liegt es am Browser? Vielen Dank.

  • #2
    Hi,

    gehen wir mal Schritt für Schritt durch:

    PHP-Code:
    <font face="Arial,Helvetica"
    veraltet! Nutze CSS für Designgeschichten.

    PHP-Code:
    <tr
    <
    td>Name:</td> <br>
    <
    td><input type="text" name="name"></td
    wo ist das start <table>? Warum noch ein <br> am Ende??? Die ganzen <br>'s kannst du aus der Tabelle rausschmeißen. Nutze bitte div's statt Tabellen.

    PHP-Code:
        // Passwort codieren 
        
    $pass md5($pass); 
    das ist nicht kodieren sondern md5 "errechnet den MD5-Hash eines Strings".

    if(file_exists("user/".$name.".txt")) {
    du hast für jeden User eine eigene txt Datei? Warum nicht alles in einer (oder gleich noch besser: direkt in einer Datenbank)? Ordner sind mit htaccess geschützt?

    PHP-Code:
    if($a_name == $name && $a_pass == $pass) { 
    ...das ja mal super sicher in nem Textfile die Zugangsdaten zu speichern (ich hoffe noch auf htaccess).

    PHP-Code:
    <?php 
    session_start
    (); 
    ?>
    <?php 
    session_start
    ();
    doppelt ist sinnlos!

    PHP-Code:
    if($_SESSION["logedin"] == TRUE) { 
    dein Sicherheitsstandart ist nicht wirklich groß, sorry.

    alles einwandfrei und bei manchen kommt die meldung sie sind nicht eingeloggt gibt es dafür eine erklärung?
    Ja, debugge! Lass Dir die Werte (u.a. deine Session und übergebenen Werte) mal alle ausgeben, dann wirst du das Problem schnell selber entdecken!

    mfg Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Ja, debugge!
      Hier gibts Infos dazu: http://php-de.github.io/#debugging

      PHP-Code:
              $arr explode($trennzeichen$file['0']);  
              
      $a_name $arr['0'];  
              
      $a_pass $arr['1']; 
      Wie kommt man auf sowas? Index ist eine Zahl, also nutze sie auch so.

      Was ist Falsch =(
      Der Threadtitel könnte auch "richtiger" sein.
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Die frage ich versuche es von unterschiedlichen pcs - alle benutzen den Internet Explorer bei manchen funktioniert alles einwandfrei und bei manchen kommt die meldung sie sind nicht eingeloggt gibt es dafür eine erklärung?
        nicht jeder IE schickt den submit-Button mit, deswegen immer auf die Daten testen, die du haben willst.

        Kommentar


        • #5
          Zitat von Dormilich
          nicht jeder IE schickt den submit-Button mit, deswegen immer auf die Daten testen, die du haben willst.
          ...dazu eignet sich - ergänzend erwähnt - ein hidden-Field sehr gut.
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            Ein md5()-Passwort-Hash ist kein richtiger Schutz. Das ist nahezu so, als würde das Passwort Plaintext in der Datenbank stehen. Einziger Vorteil ist, dass Passwörter beliebiger Länge durch MD5 eine feste Länge von 16 Byte bekommen . Stichwort Rainbowtable; Collision detection

            Kommentar


            • #7
              Danke hat alles funktioniert und ist überarbeitet.

              Nächste Frage ist es möglich zu sehen welcher User gerade aktiv ist? Also die die angemeldet sind ? Weil analytics zeigt mir nur wie viele aber nicht wer sich eingeloggt hat?

              Schon mal vielen Dank

              Kommentar


              • #8
                Dazu musst du dir merken, welcher User wann die letzte Aktion gemacht hat und zudem festlegen, ab welchem Zeitpunkt ein User als "nicht online" gilt (z.B. "wenn letzte Aktion länger als 20 Minten her ist, ist der User vermutlich nicht mehr online").

                Eine exakte Angabe kann es nicht geben, jede Aktion kann die letzte gewesen sein (und es muss nicht zwingend ein Logout gewesen sein).
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar

                Lädt...
                X