Mein kleines fehlerhaftes Script

Alles, was PHP betrifft, kann hier besprochen werden.

Mein kleines fehlerhaftes Script

Postby 1Euro » 23. May 2005 17:50

Hallo,
ich habe mein Login Script überarebeitet.
Mein Fehler ist der das er beim Login anzeigt das das Passwort falsch ist eher das überhaupt keins da ist! Könnte mir jemand beim Korrigieren helfen??? Hier das Registrationsscript:

<?
$name = $_POST['name'];
$passwd = $_POST['passwd'];
$datei = fopen("$name.txt","w+");
$inhalt = fgets($datei, 32);
IF ($inhalt == "")
{
fclose($datei);
unset($datei);
unset($inhalt);
$datei = fopen("$name.txt","w+");
$inhalt = fgets($datei, 1000);
fwrite($datei, md5($passwd));
fclose($datei);
echo "Ihr Nick $name wurde erfolgreich angelegt!<br />\n";
}
else
{
fclose("$datei");
die("Der Nick existiert schon!");
}
?>


Jetzt das Login Scriopt wo der Fehler ist auch wenn ich nicht weis wo und welcher:

<?
$name = $_POST['name'];
$passwd = $_POST['passwd'];
$datei = fopen("$name.txt","r");
$inhalt = fgets($datei, 32);
echo $inhalt;
IF ($inhalt == md5($passwd))
{
echo "Sie sind erfolgreich eingeloggt!<br />\n";
echo "Hier folgen Links!";
}
else
{
echo "Sorry aber dein Passwort ist falsch!<br />\n";
echo "Um es nochmal zu versuchen klicke bitte auf folgenden Link:<br />\n";
echo "<A HREF=/"/login.htm/">Erneut versuchen</A>";
}
?>


Und könnte mir jemand sagen warum das mit den Links nicht funzt???

Bitte Bitte Bitte

1Euro
Dies ist meine Welt!!!
1Euro
 
Posts: 188
Joined: 11. September 2004 17:50

Re: Mein kleines fehlerhaftes Script

Postby retsina » 24. May 2005 23:42

1Euro wrote:Hallo,
Mein Fehler ist der das er beim Login anzeigt das das Passwort falsch ist eher das überhaupt keins da ist!

ich versteh deine Frage leider nicht...

Und könnte mir jemand sagen warum das mit den Links nicht funzt???


dieser Link kann ja nicht richtig ausgegeben werden, du muss anstatt / vor den Anf.Zeichen Backslashes nehmen:
Code: Select all
   echo "<A HREF="/login.htm">Erneut versuchen</A>";


retsina.
retsina
 
Posts: 15
Joined: 22. May 2005 15:36

Postby Stefan » 25. May 2005 03:04

Servus,

registrieren.php
Code: Select all
<?php
error_reporting(E_ALL);
session_start();

if(isset($_POST['schalter']['senden']))
{

  $name   = strtolower(trim(strip_tags($_POST['login']['name'])));
  $passwd = strtolower(trim(strip_tags($_POST['login']['passwd'])));

  $name   = preg_replace('/[_\W]/', '', $name);
  $passwd = preg_replace('/[_\W]/', '', $passwd);


  $gueltig = true;
  $_SESSION['meldung'] ='';
 
  if(empty($name)
     || strlen($name) < 3)
  {
    $gueltig = false;
    $_SESSION['meldung'] .= "Bitte einen Namen angeben(min. 3 Zeichen).<br/>";
  }
  elseif(is_file('./_loginbenutzer/'.$name))
  {
    $gueltig = false;
    $_SESSION['meldung'] .= "Dieser Benutzername existiert schon.<br/>";
    header('location:http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']); 
    exit(); 
  }
 
  if(empty($passwd)
     || strlen($passwd) < 3)
  {
    $gueltig = false;
    $_SESSION['meldung'] .= "Bitte wählen Sie ein Passwort(min. 3 Zeichen).<br/>";
  }


  if($gueltig== true)
  {
    $datei = @fopen('./_loginbenutzer/'.$name,'w');

    if(!$datei)
    {
      @mail('admin@admin','Fehler im System','Es gab einen Fehler');
      $_SESSION['meldung'] = "Fehler im System! Bitte Versuchen Sie es später nochmal.";
      header('location:http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']); 
      exit();
    }
    else
    {
      fwrite($datei,md5($passwd));
      fclose($datei);
      $_SESSION['meldung'] = 'Wunderbar, Ihre Registrierung hat vielleicht geklappt.<br/>'.
                             '<a href="anmelden.php">anmelden</a>';
      header('location:http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']);   
      exit();
    }
  }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <meta http-equiv="Content-Language" content="de" />
  <title>Registrieren</title>


</head>
<body style="margin:150px 0px 0px 150px;">

<h1>Registrieren</h1>

<form action="registrieren.php" method="post">
<fieldset style="width:250px">
<legend>Registrieren</legend>


<label for="name">Name: </label>
<input id="name"
       name="login[name]"
       tabindex="2"
       type="text" />

<br />

<label for="name">Passwort: </label>
<input id="passwd"
       name="login[passwd]"
       tabindex="2"
       type="password" />

<br /><br />

<input name="schalter[senden]"
       tabindex="2"
       type="submit" />

</fieldset>
</form>

<?php
if(isset($_SESSION['meldung']) && !empty($_SESSION['meldung']))
{
  echo'<div style="color:#F00;background-color:transparent;">'.$_SESSION['meldung'].'</div>';
  unset($_SESSION['meldung']);
}
?>
</body>
</html>


anmelden.php
Code: Select all
<?php
error_reporting(E_ALL);
session_start();

if(isset($_POST['schalter']['senden']))
{

  $name   = strtolower(trim(strip_tags($_POST['login']['name'])));
  $passwd = strtolower(trim(strip_tags($_POST['login']['passwd'])));

  $name   = preg_replace('/[_\W]/', '', $name);

  $passwd = preg_replace('/[_\W]/', '', $passwd);


  $gueltig = true;
  $_SESSION['meldung'] ='';
 
  if(empty($name)
     || strlen($name) < 3)
  {
    $gueltig = false;
    $_SESSION['meldung'] .= 'Bitte geben Sie Ihren Namen ein.<br/>';
  }
  elseif(!is_file('./_loginbenutzer/'.$name))
  {
    $gueltig = false;
    $_SESSION['meldung'] = 'Dieser Benutzername existiert nicht.<br/>';
    header('location:http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']); 
    exit(); 
  }
 
  if(empty($passwd)
     || strlen($passwd) < 3)
  {
    $gueltig = false;
    $_SESSION['meldung'] .= "Bitte geben Sie Ihr Passwort ein.<br/>";
  }
  elseif(md5($passwd) !== file_get_contents('./_loginbenutzer/'.$name))
  {
    $gueltig = false;
    $_SESSION['versuche']++; // Du weißt was damit zu tun ist?
    $_SESSION['meldung'] .= 'Das Passwort ist nicht korrekt.<br/>';
    header('location:http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']); 
    exit(); 
  }

  if($gueltig== true)
  {
    if(md5($passwd) === file_get_contents('./_loginbenutzer/'.$name))
    $_SESSION['angemeldet'] = '1';
    $_SESSION['meldung'] = 'wunderbar, sie sind eingeloggt.'.
                           '<a href="mitgliederseite.php">Nur für Mitglieder</a>';
    header('location:http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']); 
    exit(); 
  }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <meta http-equiv="Content-Language" content="de" />
  <title>Anmelden</title>


</head>
<body style="margin:150px 0px 0px 150px;">

<h1>Anmelden</h1>

<form action="anmelden.php" method="post">
<fieldset style="width:250px">
<legend>Anmelden</legend>


<label for="name">Name: </label>
<input id="name"
       name="login[name]"
       tabindex="2"
       type="text" />

<br />

<label for="name">Passwort: </label>
<input id="passwd"
       name="login[passwd]"
       tabindex="2"
       type="password" />

<br /><br />

<input name="schalter[senden]"
       tabindex="2"
       type="submit" />

</fieldset>
</form>

<?php
if(isset($_SESSION['meldung']) && !empty($_SESSION['meldung']))
{
  echo'<div style="color:#F00;background-color:transparent;">'.$_SESSION['meldung'].'</div>';
  unset($_SESSION['meldung']);
}
?>
</body>
</html>

mitgliederseite.php
Code: Select all
<?php
error_reporting(E_ALL);
session_start();

if(!isset($_SESSION['angemeldet'])
    || $_SESSION['angemeldet'] !='1'
){
  header('location:http://'.$_SERVER['SERVER_NAME'].'/anmelden.php');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <meta http-equiv="Content-Language" content="de" />
  <title>Mitgliederseite</title>


</head>
<body style="margin:150px 0px 0px 150px;">

<h1>Mitgliederseite</h1>
<p>
  Diese Seite ist nur für Mitglieder
</p>
</body>
</html>



Das ist jetzt in der letzten Stunde entstanden und ist mit Sicherheit noch fehlerhaft(Ich bitte um Korrektur).
Also nicht auf die Öffentlichkeit loslassen. Aber aufbauen kannst Du sicher darauf.


ciao, Stefan
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby 1Euro » 25. May 2005 05:40

naja,
es gibt teile die erkenne ich wieder.
Aber ich würde trotzdem lieber erstmal mein eigenes Script zumn laufen bringen :/
Aber trotzdem Danke sieht schön aus :D
Dies ist meine Welt!!!
1Euro
 
Posts: 188
Joined: 11. September 2004 17:50

Postby Stefan » 25. May 2005 12:15

Bitte,

ich zwinge Dich ja nicht. Ganz im Gegenteil, ich verstehe Deine Position. Doch würde ich Dir trotzdem empfehlen, Dich nicht vor der "Größe" oder was auch immer zu fürchten und es mal auszuprobieren. Vielleicht kann es Dir ja doch was bringen.

Denke daran, wo auch immer irgendwer, irgendetwas eintippen kann, wirds kompliziert, da Du niemals diese Eingaben ungefiltert in Dein Programm übergeben solltest. Man ja noch nicht mal seinen eigenen POST Werten richtig trauen.

Viel Erfolg
ciao, Stefan

nachtrag: Ich wünsche mir, niemals irgend wohin zu geraden, wo ich mich so einen Script anvertrauen soll.
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby 1Euro » 25. May 2005 12:46

hm,
ich habe schon einmal eine Programier Sprache gelernt.
Sagen wir es so:
Ich bin noch nicht so sonderlich weit in PHP. Viele Deiner Befehle kenne ich nicht. Auserdem möchte ich mit dem was ich kann erstmal ein fungtionirendes Script schreiben damit ich dann mir ein besseres vornehmen kann. Z.b. habe ich keine ahnung von sessions.

Könntet ihr mir bitte helfen den Fehler zu finden?
Dies ist meine Welt!!!
1Euro
 
Posts: 188
Joined: 11. September 2004 17:50

Postby Stefan » 25. May 2005 13:10

Achgott,
ich habe schon einmal eine Programier Sprache gelernt.
Mit verlaub, aber das glaube ich nicht.
Viele Deiner Befehle kenne ich nicht. Auserdem möchte ich mit dem was ich kann erstmal ein fungtionirendes Script schreiben damit ich dann mir ein besseres vornehmen kann. Z.b. habe ich keine ahnung von sessions.
Dann hoffe ich einfach mal, daß Du im Laufe Deiner php Entwicklung noch darauf stößt.

ciao, Stefan
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby 1Euro » 25. May 2005 13:13

Das was ich immoment suche ist wie er in die Datei kommt also das Script und wie er dann die beiden Passwörter (Das eingegebene und das gespeicherte in der Datei) vergleicht. Ürrgendwo da muss der Fehler liegen oder???
Dies ist meine Welt!!!
1Euro
 
Posts: 188
Joined: 11. September 2004 17:50

Postby pir187 » 26. May 2005 08:05

moin!

ich finde die zeile
Code: Select all
$datei = fopen("$name.txt","w+");
gefährlich.

du kannst den dateinamen nicht in dieser art zusammensetzten, sondern solltest einen neuen String auf dem Variableninhalt und der Endung bilden, bevor Du fopen aufrufst.


Versuch es mal, ich glaube, das kann Dir weiter helfen.
MfG, pir187
pir187
 
Posts: 76
Joined: 13. August 2003 00:15
Location: Struppen / Sachsen

Postby 1Euro » 26. May 2005 11:46

hallo,
hab eben mal in meinem Konqueror unter Ansicht -> Anzeigemodus -> Erweiterte Editorkomponente nachgesehen und da steht dann:

<br />
<b>Warning</b>: fopen(.txt) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: No such file or directory in <b>/opt/lampp/htdocs/test/login.php</b> on line <b>4</b><br />
<br />
<b>Warning</b>: fgets(): supplied argument is not a valid stream resource in <b>/opt/lampp/htdocs/test/login.php</b> on line <b>5</b><br />
<br />
<b>Warning</b>: fwrite(): supplied argument is not a valid stream resource in <b>/opt/lampp/htdocs/test/login.php</b> on line <b>7</b><br />
<br />
<b>Warning</b>: fwrite(): supplied argument is not a valid stream resource in <b>/opt/lampp/htdocs/test/login.php</b> on line <b>8</b><br />
Sorry aber dein Passwort ist falsch!<br />
Um es nochmal zu versuchen klicke bitte auf folgenden Link:<br />
<A HREF="login.htm">Erneut versuchen</A><br />
<b>Warning</b>: fclose(): supplied argument is not a valid stream resource in <b>/opt/lampp/htdocs/test/login.php</b> on line <b>20</b><br />


Ich habe den Fehler mit dem Hyperlink schon rausgenommen.
Ich hoffe das hilft

1Euro
Dies ist meine Welt!!!
1Euro
 
Posts: 188
Joined: 11. September 2004 17:50


Return to PHP

Who is online

Users browsing this forum: No registered users and 25 guests