PHP - Profilsystem?

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: PHP - Profilsystem?

BeitragFr, Dez 07, 2012 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
momentan lerne ich ein wenig php. Nur habe ich nun ein Problem: Ich versuche eine Seite zu schreiben, auf der man sich zuerst einmal einloggen bzw. registrieren muss und dann die Möglichkeit hat einen "Gästebuch" Eintrag zu schreiben.
Nur funktioniert bei mir das Einloggen nicht... hier mal der Code:
start.html Code: [AUSKLAPPEN]
<html>
   <head>
      <title>Gästebuch - Einloggen</title>
   </head>
   <body>
      <form action="start.php" method="post">
         Für Gästebuch einloggen: <br>
         <table>
            <tr><td>Username:</td><td><input type="Text" name="username"/></td></tr>
            <tr><td>Passwort:</td><td><input type="Password" name="passwort"/></td></tr>
         </table>
         <input type="Submit" value="Einloggen"/>
      </form>
      ODER<br>
      <a href="register.html">Neues Konto erstellen</a>
   </body>
</html>


start.php Code: [AUSKLAPPEN]
<?php
   $expusername = $_POST["username"];
   $exppassword = md5($_POST["passwort"]);
   
   $userdata = array();

   $accounts = fopen("accounts.csv", "r");
   
   $foundacc = 0;
   
   while(!feof($accounts) or $foundacc == 1)
   {
      $tempuserdatasave = fgets($accounts); //ab Hier gibt es Probleme
      $userdata = explode(";", $tempuserdatasave);
      echo("$userdata[0]<br>$userdata[1]<br>$userdata[2]<br>$userdata[3]<br>$userdata[4]<br><br>");
      if($userdata[0] == $expusername)
      {
         if($userdata[4] == $exppassword)
         {
            echo("Herzlich willkommen $userdata[2], $userdata[1] ($userdata[0])");
            $foundacc = 1;
         }
      }
   }

   if($foundacc == 0)
   {
      echo("Benutzerkonto mit Username $expusername nicht gefunden!");
   }
   
   fclose($accounts);
?>


register.html Code: [AUSKLAPPEN]
<html>
   <head>
      <title>Registrierung</title>
   </head>
   <body>
      <form action="register.php" method="post">
         <table>
            <tr><td>Vorname:</td><td><input type="Text" name="vorname"/></td></tr>
            <tr><td>Nachname:</td><td><input type="Text" name="nachname"/></td></tr>
            <tr><td>Username:</td><td><input type="Text" name="username"/></td></tr>
            <tr><td>E-Mail:</td><td><input type="Text" name="email"/></td></tr>
            <tr><td>Passwort:</td><td><input type="Password" name="passwort"/></td></tr>
         </table>
         <input type="Submit" value="Abschicken"/>
      </form>
   </body>
</html>


register.php Code: [AUSKLAPPEN]
<?php
   $vorname = $_POST["vorname"];
   $nachname = $_POST["nachname"];
   $email = $_POST["email"];
   $username = $_POST["username"];
   $passwort = md5($_POST["passwort"]);
   
   $accounts = fopen("accounts.csv", "a");
   
   fwrite($accounts, $username .";". $vorname .";". $nachname .";". $email .";". $passwort ."\n");

   echo("Ihr Benutzerkonto wurde erfolgreich erstellt!<br><br>Vorname: $vorname<br>Nachname: $nachname<br>E-Mail: $email<br>Passwort: ". $_POST["passwort"] ."");
   
   fclose($accounts);
?>


Wenn ich ein Konto registriere, wird es in der accounts.csv gespeichert. Versuche ich mich mit dem Konto anzumelden so kommt jedoch immer die Meldung "Benutzerkonto mit Username $expusername nicht gefunden!"... Warum?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Eingeproggt

BeitragFr, Dez 07, 2012 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Du lässt dir $userdata beim einloggen ja eh ausgeben... was siehst du da? Sind die eingegebenen Login-Daten aufgelistet? Wenn nicht, was steht sonst da? An dem Punkt solltest du selber debuggen können.

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

CO2

ehemals "SirMO"

BeitragSo, Dez 09, 2012 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Es wird anscheinend alles korrekt ausgelesen, die Ausgabe ist wie erwartet... Aber anscheinend ist der Vergleich zwischen den beiden Strings trotz das der eine richtig ausgelesen wurde falsch...
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Midimaster

BeitragSo, Dez 09, 2012 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
dann mach doch einfach ein paar mehr echos rein zu testzwecken:

Code: [AUSKLAPPEN]
<?php
   $expusername = $_POST["username"];
   $exppassword = md5($_POST["passwort"]);
   
   $userdata = array();

   $accounts = fopen("accounts.csv", "r");
   
   $foundacc = 0;
   
   while(!feof($accounts) or $foundacc == 1)
   {
      $tempuserdatasave = fgets($accounts); //ab Hier gibt es Probleme
      echo " neue zeile";
      $userdata = explode(";", $tempuserdatasave);
      echo("$userdata[0]<br>$userdata[1]<br>$userdata[2]<br>$userdata[3]<br>$userdata[4]<br><br>");
      echo " ist !" . $userdata[0] . "!  wirklich gleich !" .  $expusername . "!  ???";
      if($userdata[0] == $expusername)
     {
      echo " ja ";
         if($userdata[4] == $exppassword)
         {
            echo("Herzlich willkommen $userdata[2], $userdata[1] ($userdata[0])");
            $foundacc = 1;
         }
      }
   }

   if($foundacc == 0)
   {
      echo("Benutzerkonto mit Username $expusername nicht gefunden!");
   }
   
   fclose($accounts);
?>


und das selbe für das passwort... immer viele echos machen, um die fehlerquelle einzukreisen.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

c64

BeitragMi, Dez 12, 2012 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

      $tempuserdatasave = fgets($accounts); //ab Hier gibt es Probleme
      $userdata = explode(";", $tempuserdatasave);



Versuchs mal mit .....

Code: [AUSKLAPPEN]

 fgetcsv()


Ist zumindest das Einzige was mir hier spontan ins Auge fällt, sonst konnte ich nichts finden auf den ersten Blick!

Mehr Infos! (klick)

edit: Oder nutze mal probehalber trim (reicht beim gespeicherten PWD!), kann ja sein das sich irgentwie beim speichern oder laden ein Steuerzeichen "eingeschlichen" hat weil du es normal speichern und laden tust anstatt mit den CSV Funktionalitäten.

Code: [AUSKLAPPEN]

if(trim($pwd1)==trim($pwd(2))


(nur tips!, keine zeit mir das jetzt genauer anzusehen bzw. zu probieren!)

mfg.

Mathias-Kwiatkowski

BeitragDo, Dez 13, 2012 5:47
Antworten mit Zitat
Benutzer-Profile anzeigen
wie wäre es wenn du es mit php & mysql versuchst.
eine gute anlaufstelle wäre http://www.schattenbaum.net/php/mstart.php
das gute daran wäre das informationen die man vom user haben will oder braucht, direckt in einer tabelle ablagern kann (mysql) und nich in einer txt. warscheinlich is das nur geschmacksache wie man es macht aber ich zumindest habe die erfahrung gemacht das php und mysql dicht zusammengehörren und es in kombination viel leichter ist.

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group