geht das?

2Pac

Erfahrenes Mitglied
Es ist so Ich habe eine Userverwaltung...(Login) aber keine Datanbank gebundene. Und ich habe auch ein Anmeldeformular. Nun füllt jemand das anmeldeformular aus. Gibt dabei gleich seinen Usernamen und sein Passwort an. Nun lasse ich eine datei namens $username.txt erstellen. (d.h. die datei heisst so wie er den username angibt + .txt hinten dran)Dort lasse ich Username + PW hineinschreiben. Nun meine frage...Kann ich diese Datei in ein login einlesen, so das der username und das PW automatisch eingebaut werden? Wenn ja wer weiss wie?Also wäre vielleicht ein Login angebracht der irgendwie mit switch und case arbeitet, so das ich es machen kann wie folgt:
 
switch(Variable):
case [Fall1]: [Anweisung1];
....(beliebig weiterführbar eben je nachdem wieviel user sich anmelden)
default: [Anweisung2];
endswitch;
oder ist so etwas quatsch?Wenn ja kann mir einer vielleicht sagen wie ich den login sonst gestalten könnte ohne datenbanken, oder er erklärt mir datenbanken *g* :D?
THX im Voraus schonmal 2PAc
 
also erstens einmal:
wenn du die dateien ja schon nach den usern benennst (was bei sonderzeichen probleme machen kann), dann muss man ja in der datei erst mal nur noch das passwort speichern.....

also jemand will dich also einloggen.....

dann bekommt man fom formular die beiden variablen $login_name und $login_pass übergeben......
nun kann man erst mal testen, ob der username überhaut vergen ist:
(wenn nciht, gibt man eine fehlermeldung aus)

PHP:
  if(!file_exists($login_name.'.txt')) echo 'username nicht vergeben';

wenn doch, testet man, ob das passwort übereinstimmt...

PHP:
  else{
    $array_datei = file($login_name.'.txt'); //diese variable enthält nun allte zeilen der datei als array
    $pass_in_datei = $array_datei[0];
    if($pass_in_datei==$login_pass) echo 'erfolgreich eingeloggt';
    else echo 'falsches passwort';
  }

das passwort würde ich aber nicht einfach so speichern, sondern verschlüsselt.....
dazu gibt es in php die funktion md5.....
wenn du also normalerweile das passwort $neues_passwort in die datei $neuer_nick'.txt.' schreiben willst schreibst du dann einfach
PHP:
  md5($neues_passwort)
rein....

bei der abfrage muss dann halt stehen:
PHP:
  if($pass_in_datei==md5($login_pass)) echo 'erfolgreich eingeloggt';


dazu muss man natürlich sagen, dass diese art, kundendaten zu speichern nich so gut ist und auch unpraktisch...
denn dann hast du irgendwann 100000 dateien auf dem server und das is doof.....

daher würde ich das ganze wie eine pseude datenbank aufziehen.....

du legst also einfach nur eine datei (user.txt) an, in der in jeder zeile name und passwort genau eines users stehn.....
dann musst du beim login nur die datei mit file('user.txt') auslesen und dann in dem array nach dem usernamen suchen und dann schauen, ob das passwort übereinstimmt......

//hoffe ich konnte helfen....

//bad taste
 
hm naja musst du ja eigendlich immer nur an die datei hinten dran schreiben.......

also das reinschreiben weiss ich net....
is so lang her, das ich mal was mit txt-dateien gemacht hab......

also mal angenommen du hast also ne datei mit ganz vielen zeilen und in jeder zeile stehen die daten von einem user......
dann sollte jede zeile in der form
$nick - $pass(codiert) - $sontiges
sein.....
ich habe jetzt hier ' - ' als trennziechen werwendet....
hierbei musst du jedoch etwas immergleich bileibendes nehemn, was so auch nicht in nick, pass oder sontigem vorkommen darf......

dann liest du also die datei mit file aus....
also
PHP:
  $array = file('user.txt');
jetzt nemen wir mal ' %%% ' als trenn-zeichen
dann würde eine zeile also so aussehen:
$nick %%% $pass(codiert) %%% $sontiges
bzw mit daten:
mein_nick %%% mein_passwort %%% meine_hp

durch das file() bekomme ich also einen array in dem dem eine zeile einem eintrag im array entspricht....

somit wäre dann
$array[0] == mein_nick1 %%% mein_passwort1 %%% meine_hp1
$array[1] == mein_nick2 %%% mein_passwort2 %%% meine_hp2
......usw

jetzt muss man in einer for-schleife den kram i n passwort, nick und bla aufteilen...
das geht mit der funktion explode, bei der einstring durch einen teilstring unterteilt wird.... und ein array mit den einzelnen teilen zurückgegeben wird.....

PHP:
  for($i=0;$i<count($array);$i++){
    $temp = explode(' %%% ',$array[$i]);
  }

$temp ist jetzt also ein array (der bei jedem durchlauf der schleife neu belegt wird....

$temp[0] ist der nick
$temp[1] ist das passwort (aber verschlüsselt)
$temp[2] ist der rest-kram

jetzt muss man nur noch in jeder schleife nachfragen, ob user-name und passwort mit den login-daten übereistimmen.....

also
PHP:
  if($login_nick==$temp[0] && md5($login_pass)==$temp1){
    $eingeloggt = true;
  }
  if($login_nick==$temp[0] && md5($login_pass)!=$temp1){
    $eingeloggt = false;
    $falsches_passwort = true;
  }

und am ende kann man dann eben noch abfragen machen wie
PHP:
  if($eingeloggt) echo 'erfolgreich eingeloggt';
  else{
    echo 'konnte nicht einloggen....<br>grund:<br>';
    if($falsches_passwort) echo 'falsches passwort eingegeben';
    else echo 'es besteht kein account mit dem eingegebenen user-namen....';
  }

alles in allem sieht dann so aus:

PHP:
  $array = file('user.txt');

  for($i=0;$i<count($array);$i++){
    $temp = explode(' %%% ',$array[$i]);
    if($login_nick==$temp[0] && md5($login_pass)==$temp1){
      $eingeloggt = true;
    }
    if($login_nick==$temp[0] && md5($login_pass)!=$temp1){
      $eingeloggt = false;
      $falsches_passwort = true;
    }
  }

  if($eingeloggt) echo 'erfolgreich eingeloggt';
  else{
    echo 'konnte nicht einloggen....<br>grund:<br>';
    if($falsches_passwort) echo 'falsches passwort eingegeben';
    else echo 'es besteht kein account mit dem eingegebenen user-namen....';
  }

so das dürfte alles sein....

für fehler wird keien haftung übernommen:-)

//bad taste
 
also ich hab dazu was im MySQL forum schon geschrieben. Kann man auch durch dieses was du erklärt hast, das aufsplitten in einzelne variablen, auch das ganze sortieren nach einem bestimmten kritikpunkt? (z.B. in ner Tablle wie die Bundesligatabelle *g* :D nach Punkten, also das die Variablen(Spieler)den Punkten auch richtig zugeordnet werden?) Aber dann kommt wieder die Frage wie lasse ich die bisherigen Punkte mit den durch das Formular abgeschickten addieren und in die txt schreiben? Oder ist es doch besser Datenbanken zu benutzen? Ich brauch dringend hilfe bittteeee das wird nämlich sone Art Turnierseite die ich machen will, auf der Fussballturniere mit dem Spiel Fifa2002 ausgetragen werden. Und da ich nicht alles per hand rein schreiben möchte halt der ganze Käse :D
 
ja natürlich is der ganze kram nur mit datanbank sinnvoll.....

der kram mit txt-dateien ist nur eine notlösung für leute, die webspace ohne mysql-datanbank besitzen....

wenn man also z.b. diese ergebnisse und so in eine tabelle in ner datenbank schreibt, dann sind diese sortierungen natürlich total einfach...

denn da gibt es ja den order by ...asc/desc befehl, womit man solche sahcen sortieren kann.......

also wenn du die möglichkeit für eine db hast, dann vergiss den kram mit den textdateien ganz shnell und versuche es gleich mit ner db...

//bad taste
 
Zurück