tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
656
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Alegro Alegro ist offline Rookie
    Registriert seit
    Apr 2007
    Beiträge
    9
    hallo zusammen,

    ich brauche dringend eure hilfe. und zwar benutze ich auf einer homepage einen chat, wo man sich als gast oder als registrierter user anmelden kann. jetzt kommt mein problem:

    es gibt bei diesem chat nur die möglichkeit das der admin die userdaten in einer TXT datei abspeichert, also nicht das die user sich reggen und gleich loslegen können.

    ich habe das prob in soweit schon gelöst, das ich eine register.php erstellt habe wodurch die daten in der TXT datei automatisch gespeichert werden.
    klappt auch alles wunderbar, nur das ich nicht weiß was ich wo eintragen muß, damit sich dort nicht automatisch zwei mit dem gleichen nicknamen anmelden.

    bevor die frage kommt , ja ich habe die möglichkeit auf eine DB zuzugreifen aber es ist nicht möglich die daten an den chat weiterzugeben. dieser ist so aufgebaut das er die daten aus einer TXT datei ausliest.

    hier meine register.php

    PHP-Code:
    <?php
    if(!empty($_POST['txt'])){
    $filename 'user.txt';
    foreach(
    $_POST['txt'] as $v){
        
    $liste[] .= $v;
        }
        
    $somecontent implode("****",$liste)."\n";


    if (
    is_writable($filename)) {

       if (!
    $handle fopen($filename"a")) {
             print 
    "Kann die Datei $filename nicht öffnen";
             exit;
       }

       if (!
    fwrite($handle$somecontent)) {
           print 
    "Kann in die Datei $filename nicht schreiben";
           exit;
       }

       print 
    "Fertig , deine Daten wurden für den Chat gespeichert.<br /><br />
    Du kannst dich jetzt mit deinen Daten dort anmelden."
    ;

       
    fclose($handle);

    } else {
       print 
    "Die Datei $filename ist nicht schreibbar";
    }
    } else {
    ?> 
    <form id="form1" name="form1" method="post" action="<?php $_SERVER['PHP_SELF']?>">
      <input name="txt['nickname']" type="text" />
      Nickname<br />
      <input type="text" name="txt['passwort']" />
       Passwort
       <br />
      <input type="submit" name="Submit" value="Senden" />
    </form>
    <?php ?>
    ich sage schon einmal danke für eure antworten.

    gruß Alegro
     

  2. #2
    CIX88 Tutorials.de Gastzugang
    Chat und Handling mit einer TXT-Datei ?
    Glaube nicht, dass dies auf dauer gut gehen wird.
    Wenn du die Möglichkeit schon hast, eine DB zu benutzen, dann mach es auch.
     

  3. #3
    Alegro Alegro ist offline Rookie
    Registriert seit
    Apr 2007
    Beiträge
    9
    sorry, aber ich versuche es nochmal.

    vllt. drücke ich mich ja nicht klar genug aus aber es ist das registrieren über eine DB zwar machbar weil ich mehrere habe, aber der chat liest nur eine text datei aus.

    das kommt daduch weil der chat auch einen gastzugang hat der ebenfalls in der login.php hinterlegt ist. jetzt kann sich der user über diese login.php als gast oder als gereggter user anmelden.

    nochmals meine frage: was muß ich wo in die register.php schreiben um zu überprüfen ob sich der nickname schon in der Text datei befindet.
     

  4. #4
    CIX88 Tutorials.de Gastzugang
    Na dann gucke dir einfach mal die Datei-Funktionen im PHP-Handbuch an.
    Ich weis nicht wie deine TXT-Datei aussieht.

    Dennoch ist es Blödsinn eine TXT-Datei zu verwenden, wenn die Möglichkeit zu einer DB besteht.
    Naja, früher oder später wirst du das schon selber erfahren.
     

  5. #5
    Alegro Alegro ist offline Rookie
    Registriert seit
    Apr 2007
    Beiträge
    9
    meine textdatei sieht so aus:

    Alegro****442365el

    pro user eine zeile, vorne der nick und hinten das pw. mehr nicht.
    die sterne habe ich mir nicht ausgesucht, die sind von der login.php vorgegeben.

    aber ist ja auch egal

    ich habe jetzt schon zweimal geschrieben das es über eine DB nicht machbar ist, aber das scheint ja keinen zu interessieren. anstatt zu versuchen jemanden zu helfen werden hier nur blöde bemerkungen geschrieben. ich dachte das es hier user gibt die vllt. lösungsansätze haben. das handbuch hilft da nicht gerade weiter, weil ich ja wie bereits ebenfalls schon zweimal geschrieben habe, nicht weiß wo und wie ich es in die register.php einbauen soll.

    sorry für meine antwort, aber ich stehe wirklich auf dem schlauch und könnte hilfe und keine guten ratschläge gebrauchen.
     

  6. #6
    CIX88 Tutorials.de Gastzugang
    > und keine guten ratschläge gebrauchen
    Die solltest du aber annehmen, denn so ein Chat bringt einige Performance-Probleme micht sich.
    Aber klar, wird wieder nicht geglaubt.

    > damit sich dort nicht automatisch zwei mit dem gleichen nicknamen anmelden.
    Eben schon aus diesem Grund sollte man das über DB abwickeln.
    Und das geht !

    Natürlich kannst du mit der TXT-Datei rumgeistern.

    fopen() kennst du bereits, nun musst du eben die TXT-Datei Zeilenweise auslesen, die Stellen auslesen wo der Username steht, und mit der Usernamen von der Anmeldung vergleichen.
    Zum prüfen kannst du stri(), substr() .... preg_match() benutzen.

    Fertige Lösungen gibt es nicht.
    Und wenn man auf dem „Schlauch” steht, erwarte ich dass man sich das PHP-Handbuch mal genauer anguckt.

    Und bevor du dein „wo” und „wie” noch größer schreibst, denk mal über Ratschläge nach.
    Vielleicht mache ich diesen Ratschlag, weil ich deine Probleme schon vor 10 Jahren hatte.
     

  7. #7
    raccoon raccoon ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Beiträge
    57
    dürfte ich mal den link zu deinem chat haben, würd mir den gern mal genauer anschauen

    Problemlösung kann ich CIX88 nur zustimmen, und hier hat mal ein User, student oder was auch immer ein Buch für Studenten geschrieben. 1030 Seiten, da steht sowas auch drin.
     

  8. #8
    Alegro Alegro ist offline Rookie
    Registriert seit
    Apr 2007
    Beiträge
    9
    klar.

    hier ist der chat.

    und hier habe ich ihn her
     

  9. #9
    Alegro Alegro ist offline Rookie
    Registriert seit
    Apr 2007
    Beiträge
    9
    Hallo zusammen

    erstmal möchte ich mich bei allen endschuldigen die ich mit meiner art beleidigt haben könnte.

    ich denke ich habe es jetzt fast hinbekommen. nur die abfrage t nicht so ganz. egal welchen neuen user ich eintragen will er sagt immer nickname und passwort existieren schon.

    hier meine jetzige register.php:
    PHP-Code:
    <?php

    if (!empty($_POST['txt'])) {

      
    $filename 'user.txt';
      unset(
    $form_values);

      
    //$somecontent = isset($_POST['name']) ? $_POST['name']."\n" : '';
      
    foreach ($_POST['txt'] as $k => $v) {
        
    $liste[] .= $v;
        
    $k str_replace ("'"""$k);
        
    $form_values[$k] = $v;
      }
      
    $somecontent implode("****",$liste)."\n";


      
    // Sichergehen, dass die Datei existiert und beschreibbar ist
      
    if (is_writable($filename)) {

        
    // existiert der nickname / das passwort schon in $filename ?
        
    $lines file($filename);
        
    $count_lines count ($lines);
        for (
    $i=0$i<$count_lines$i++) {
          list (
    $f_nick$f_pass) = explode ("****"$lines[$i]);
          
    $f_nick trim ($f_nick);
          
    $f_pass trim ($f_pass);
          if (
    $f_nick == $form_values[nickname]) {
            echo 
    "Nickname "$f_nick ." existiert schon.<br />";
            
    $abort 1;
          }
          if (
    $f_pass == $form_values[passwort]) {
            echo 
    "Passwort "$f_pass ." existiert schon.<br />";
            
    $abort 1;
          }
        }
        if (
    $abort == "1") exit;


        
    // Wir öffnen $filename im "Anhänge" - Modus.
        // Der Dateizeiger befindet sich am Ende der Datei, und
        // dort wird $somecontent später mit fwrite() geschrieben.
        
    if (!$handle fopen($filename"a")) {
          print 
    "Kann die Datei ".$filename." nicht öffnen";
          exit;
        }

        
    // Schreibe $somecontent in die geöffnete Datei.
        
    if (!fwrite($handle$somecontent)) {
          print 
    "Kann in die Datei ".$filename." nicht schreiben";
          exit;
        }
        else {
          print 
    "Fertig , deine Daten wurden für den Chat gespeichert.<br /><br />
                 Du kannst dich jetzt mit deinen Daten dort anmelden."
    ;
        }

        
    fclose($handle);

      } else {
         print 
    "Die Datei ".$filename." ist nicht schreibbar";
      }
    }
    else {
    ?>

    <form id="form1" name="form1" method="post" action="<?php $_SERVER['PHP_SELF']?>">
      <input name="txt['nickname']" type="text" />
      Nickname<br />
      <input type="text" name="txt['passwort']" />
      Passwort<br />
      <input type="submit" name="Submit" value="Senden" />
    </form>

    <?php ?>
    was ist da bitte falsch

    gruß Alegro
     

  10. #10
    CIX88 Tutorials.de Gastzugang
    Klappt das Auslesen jetzt ?
    Sonst da mal ein echo reinhacken, um zu überprüfen ob alles richtig übergeben wird und auch ankommt (werte formular, werte txt-datei).

    > $form_values[nickname]
    In einigen Jahren wird dies nicht mehr funktionieren.
    => $form_values['nickname']

    Die Sache mit foreach ($_POST['txt'] ... verstehe ich jetzt nicht ganz, aber du kannst doch gleich mit im Forumular name="nickname" schreiben, anstelle von name="txt['nickname']".
    Das ist jedenfalls für dich jetzt einfacher.
     

  11. #11
    Alegro Alegro ist offline Rookie
    Registriert seit
    Apr 2007
    Beiträge
    9
    ein herzliches dankeschön an alle.

    es klappt jetzt alles wunderbar, das einzigste was noch fehlte war:

    PHP-Code:
    if (is_writable($filename)) {
        
    $abort 0
    genau, nur das: $abort = 0;

    ciao bis denne

    Alegro
     

  12. #12
    R00Ki3 R00Ki3 ist offline Mitglied Gold
    Registriert seit
    Oct 2004
    Ort
    NRW
    Beiträge
    247
    Mal eine Frage zu deinem PHP-Quelltext.
    Hier der Teil woraus meine Frage besteht.
    PHP-Code:
      foreach ($_POST['txt'] as $k => $v) { 
        
    $liste[] .= $v
        
    $k str_replace ("'"""$k); 
        
    $form_values[$k] = $v
      } 
    Weshalb nutzt du
    PHP-Code:
    $liste[].=$v
    $liste[] ist ein Array, zu einem array füge ich doch ein element bei via $list[] = $v;
    Oder soll $liste[] eher ein string darstellen.
    An ein string fügt man weiteren inhalt an via $list .= "alsdlkdsaf";
     

  13. #13
    Alegro Alegro ist offline Rookie
    Registriert seit
    Apr 2007
    Beiträge
    9
    hey R00Ki3,

    sorry aber diese frage kann ich dir nicht beantworten, den foreach teil hat mir ein informatiker geändert. er schrieb dazu:

    ich hab foreach ein wenig geändert, weil ich sonst nicht an die
    übergebenen Variablen komme - frag nich warum ;-(

    EDIT: ich kann dir gerne die jetzige register.php geben, wie sie jetzt insgesamt aussieht.

    gruß Alegro
    Geändert von Alegro (03.05.07 um 23:28 Uhr)
     

Ähnliche Themen

  1. Formulardaten in Datei speichern
    Von bobbydigital im Forum .NET Datenverwaltung
    Antworten: 1
    Letzter Beitrag: 02.10.08, 13:25
  2. 2 Fragen, speichern von Formulardaten
    Von himmelvergebenusw im Forum PHP
    Antworten: 5
    Letzter Beitrag: 05.04.08, 19:35
  3. Formulardaten in DB speichern
    Von chriscoma im Forum ASP
    Antworten: 4
    Letzter Beitrag: 24.11.04, 15:16
  4. Formulardaten in Datenbank speichern
    Von solomat im Forum PHP
    Antworten: 8
    Letzter Beitrag: 03.11.04, 16:42
  5. Formulardaten Speichern
    Von Aurigon im Forum PHP
    Antworten: 3
    Letzter Beitrag: 23.09.03, 19:21