kostenloser Webspace werbefrei: lima-city


Datei zeilenweise auslesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    HI
    Ich speichere ich einer txt_tag/datei">datei Username und Passwort mit md5 codiert und immer mit einem | getrennt. danach folgen noch weitere Information (Einstellungen des Users).
    T
    username|passwort|xxx
    username|passwort|xxx
    ...


    So ich möchte mit php jetzt jede einzelne Zeile auslesen, splitten und dann den ersten Wert [0] und den 2. Wert [1] mit Angaben aus einem Formular vergleichen. Das hab ich so versucht:

    <?php
    $user = $_POST["user"];
    $passwort = $_POST["passwort"];
    
    $pass = md5($passwort);
    $saveuser = md5($user);
    
    
    
    $userdatei = fopen("users.txt","r");
    while(!feof($userdatei))
       {
       
    $zeile = fgets($userdatei,5000);
    
    $zerlegen = explode("|", $zeile);
    
    if($zerlegen[0] == $saveuser AND $zerlegen[1] == $pass)
    {
    $login = "erfolgreich";
    }
    
    
       }
    
    fclose($userdatei);


    Jenachdem ob die Variable login "erfolgreich" ist oder nicht ist der Loigin dann erfolgreich bzw nicht.

    Ich hoffe ihr könnt mir sagen was da falsch ist!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. r*s

    Also ich kann nicht erkennen, was daran falsch sein sollte :-(
    Aber vielleicht könntest du das auftretende Problem etwas genauer erklären?

    Und eine Frage, warum nutzt du keine Datenbank?
  4. bevor wir uns hier groß den Kopf zerbrechen:

    wende einfach ein trim auf die beiden Variablen aus der Textdatei an. Da wir nicht wissen, ob sie auch so aussieht, wie du sie angegeben hast, gehen dir davon aus, dass da Leerzeichen und andere steuerzeichen drin sind... wäre für dich auch ganz gut, um Fehlern vorzubeugen...

    -> direkt nach dem explode...


    sollte das nix helfen, dann bitte fehlermeldung mit angeben.


    Ansonsten schau einfach in jedem schritt mit einem echo, welchen Wert die Variablen jeweils annehmen... wenn du weißt, an welcher Stelle er nciht rein geht, dann können wir uns auf diese Stelle konzentrieren^^
  5. Ich würde die Datei in einen Array einlesen und dann weiter verarbeiten... Schau dir doch dazu mal diese Funktion und das entsprechende Beispiel an... ich denke, so wird das wesentlich einfacher!

    http://php.net/manual/de/function.file.php

    Wieso wendest du md5() auch auf den Usernamen an?!

    Beitrag zuletzt geändert: 21.11.2009 20:45:46 von staymyfriend
  6. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Wil einer der sich die Textdatei anschaut garkeine Chanche hat. Hätte er den usernamen, könnter er gezielter vorgehen.(wobei ich nicht denke, dass einer das Passwort von einem auf meiner hp klauen will :) )

    Aber zu meinem Problem: Ich hatte das mal versucht also mit echo und da kam was ganz komisches bei raus. Kann ich ja mal zeigen:

    <?php
    $user = $_POST["user"];
    $passwort = $_POST["passwort"];
    
    $pass = md5($passwort);
    $saveuser = md5($user);
    
    
    
    $userdatei = fopen("users.txt","r");
    while(!feof($userdatei))
       {
       
    $zeile = fgets($userdatei,5000);
    
    $zerlegen = explode("|", $zeile);
    
    echo "---";
    echo "$zerlegen[0] <br>";
    echo "$zerlegen[1] <br><br>";
    echo "$saveuser <br>";
    echo "$pass <br>";
    echo "--- <br><br>";
    
    if($zerlegen[0] == $saveuser AND $zerlegen[1] == $pass)
    {
    $login = "erfolgreich";
    }
    
    
       }
    
    fclose($userdatei);
    
    echo $login;


    das kam dabei raus:
    ---ae4da1f77c7660f5979a482bd30568f8 
    2352599ca1313c87a3950e3163d4d218 
    
    d41d8cd98f00b204e9800998ecf8427e 
    d41d8cd98f00b204e9800998ecf8427e 
    --- 
    
    --- 
    
    
    d41d8cd98f00b204e9800998ecf8427e 
    d41d8cd98f00b204e9800998ecf8427e 
    ---

    -> allerdings beim direkten Seitenaufruf (diese Sette bekommt ja Username und passwort von der Form auf der vorherigen Seite gesendet. daher war die Username und die Passwortvariable leer und daher stimmen sie im Beispiel auchnicht über ein. Aber das spielt keine Rolle.


    und in der Textdatei stand nur:
    ae4da1f77c7660f5979a482bd30568f8|2352599ca1313c87a3950e3163d4d218


    Das verstehe ich halt nicht und deshalb frag ich.

    ich musste schonmal mit VB6 einzelne Zeilen einer txt-Datei auslesen da hab ich dass genauso gemacht (also ähnlich. ich hab ne loop schleife verwendet und dann immer die Zeile ausgelesen und Verglichen. Das Grundprinziep ist da ja relativ gleich)

    also ich hab da grad echt voll kein Durchblick vorallem weil ich mich erst seit 4 Tagen mit php beschäftige (deshalb nutze ich auch keine Datenbank weil dass einfach nochn bissel zu Hoch ist und ich grad kaum Zeit haab mir Turturials durchzulesen.

    P.S. was ist eine trim-funktion?


    Beitrag zuletzt geändert: 22.11.2009 9:29:30 von programtools
  7. w********t

    hallo

    versuchs mal so:

    $zeilen = file("meinedati.txt");
    $anzahl = count($zeilen);

    for ($x=0; $x<$anzahl; $x++) {
    $zerlegen[$x] = explode("|", $zeile[$x]);

    // ----- $zerlegen[$x][0] ----- $zerlegen[$x][1] ---- $zerlegen[$x][2] ----- usw.
    }

    echo "<pre>";
    print_r($zerlegen);
    echo "</pre>";


    $string = trim($string); // --- entfernt Leerzeichen am Anfang oder Ende des String

    ;)
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!