Passwortabfrage wo einbauen und wie

Stari

Grünschnabel
Ich habe mir ein kleines formular geschrieben, mehr oder weniger in form eines gästebuchs, ich möchte das aber erweitern, das nur mit korrektem Passwort ein eintrag hinzugefügt werden kann. darum möchte ich um hilfe bitten, wie und wo ich das dort einfügen muß, ich danke im vorraus,

gruß stari

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
<style type="text/css">
<!--
body,td,th {
	color: #999999;
}
body {
	background-color: #333333;
}
-->
</style></head>

<body>
<?php
/**
 * einstellungen
 */
$datei = "kommentar.txt";  // datei öffnen

/**
 * speichern der daten
 */

if($post)
{
  $fp = fopen($datei,"a+"); # datei zum lesen öffnen

  $newDate = date("d.m.Y"); # datum
  $newTime = date("H.i"); # zeit
  # zeilenumbrüche umwandeln
  $newBericht = str_replace("\r","<br>",$newBericht); 
  $newBericht = str_replace("\n","<br>",$newBericht); 
  
   # $newName : formularelemente
  $data = "$newName|-|$newBericht|-|$newMail|-|$newDate|-|$newTime|-|\n\r";
  
  fputs($fp,$data); # daten in datei speichern
  fclose($fp);
}  
?>
<div align="center">
  <h1>Die G&auml;steliste</h1>
  <p>Hier tr&auml;gt der Leader die G&auml;ste die sich angemeldet haben ein! </p>
  <?php
  /**
* kontrolle ob datei exestiert
* wenn ja daten aus der datei herauslesen
*/

if(file_exists($datei))
{
$inhalt = file($datei);
$anzahl = count($inhalt);
    for($i = 0; $i < $anzahl; $i++) 
    {
# inhalt rückwärts auslesen
        $newinhalt = array_reverse($inhalt); 
# inhalt zerteilen
        $eintrag = explode("|-|",$newinhalt[$i]); 
# variabeln defenieren
        $name = $eintrag[0];
        $bericht = $eintrag[1];
        $email = $eintrag[2];
        $datum = $eintrag[3];
        $zeit = $eintrag[4];
                
# daten ausgeben
              echo"<table width=\"437\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
              echo"<tr>\n";
              echo"<td width=\"102\" height=\"19\" valign=\"top\"><a href=\"mailto:$email\">$name</a></td>\n";
              echo"<td width=\"335\" valign=\"top\">$datum $zeit</td>\n";
              echo"</tr>\n";
              echo"<tr>\n";
              echo"<td height=\"18\" colspan=\"2\" valign=\"top\"><p>$bericht</p>\n";
              echo"<hr></td>\n";
              echo"</tr>\n";
              echo"</table>\n";
    }
}
else
{
    echo"Es wurde keine Datei gefunden";
}

/**
* formular zum eintragen der daten
* steht nicht zwischen den php tags ! 
*/  
  ?>
  <p><form name="newEntry" method="post" action="">
<table width="355" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td height="19" colspan="2" valign="top"><div align="center">Neuer Eintrag </div></td>
  </tr>
  <tr>
    <td width="88" height="22" valign="top">Name:</td>
    <td width="267" valign="top">
      <input name="newName" type="text" id="name">   </td>
  </tr>
  <tr>
    <td height="22" valign="top">Email:</td>
    <td valign="top"><input name="newMail" type="text" id="email"></td>
  </tr>
  <tr>
    <td height="118" valign="top">Kommentar:</td>
    <td valign="top">
      <p>
        <textarea name="newBericht" cols="40" rows="6" id="bericht"></textarea>
      </p>    </td>
  </tr>
  <tr>
    <td height="19" valign="top">Passwort:</td>
    <td height="19" valign="top"><label>
      <input name="pass" type="password" size="10" maxlength="10" />
    </label></td>
  </tr>
  <tr>
    <td height="19" colspan="2" valign="top">
      <div align="center">
        <input name="post" type="submit" id="post" value="submit">
      </div>      </td>
  </tr>
</table>
</form>&nbsp;</p>
  <p>&nbsp;</p>
  <p><a href="index.php"><strong>ZUR&Uuml;CK</strong></a> </p>
</div>
</body>
</html>
 
Hi!

Zuerst einmal, willkommen auf tutorials.de :)
Bevor ich dann weiter mache, gleich mal der Hinweis, bitte die Regeln mehr zu beachten. (Groß-/Kleinschreibung)

Nun zu deinem Problem:
Zu allererst solltest du mal dein Script etwas abändern. So wie ich das sehe, arbeitest du mit 'register_globals On'. Würde ich dir nicht empfehlen. Alle Variablen, die von einem Formular mit der Methode 'POST' kommen, stehen im globalen Array '$_POST', bei der Methode 'GET', oder einfach nur aus der URL im Array '$_GET'.

Zum Passwort:
Wenn das Passwort für alle Benutzer gleich sein soll, kannst du einfach am Anfang der Datei eine Variable $pwd erstellen, die das gewünschte Passwort enthält (evt als MD5-Hash, falls mal PHP ausfallen sollte und die PHP-Datei als normaler Text übertragen wird)

Dann überprüfst du einfach, ob das gesendete Passwort gleich dem vorgegebenen Passwort ist.

Dein Code sähe dann so aus:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
<style type="text/css">
<!--
body,td,th {
	color: #999999;
}
body {
	background-color: #333333;
}
-->
</style></head>

<body>
<?php
/**
 * einstellungen
 */
$datei = "kommentar.txt";  // datei öffnen
$pwd = "5d86416126d28a689e1fc7f40c00d8df"; //MD5-Hash des Passwortes

/**
 * speichern der daten
 */

if(isset($_POST['post']))
{
	if(md5($_POST['passwort']) == $pwd)
	{
		$fp = fopen($datei,"a+"); # datei zum lesen öffnen

		$newDate = date("d.m.Y"); # datum
		$newTime = date("H.i"); # zeit
		# zeilenumbrüche umwandeln
		$newBericht = str_replace("\r","<br>",$_POST['newBericht']);
		$newBericht = str_replace("\n","<br>",$newBericht);

		# $newName : formularelemente
		$data = $_POST['newName']."|-|".$newBericht."|-|".$_POST['newMail']."|-|".$_POST['newDate']."|-|".$_POST['newTime']."|-|\n\r";

		fputs($fp,$data); # daten in datei speichern
		fclose($fp);
	}
	else
	{
		echo "Falsches Passwort";
	}
}
?>
<div align="center">
  <h1>Die G&auml;steliste</h1>
  <p>Hier tr&auml;gt der Leader die G&auml;ste die sich angemeldet haben ein! </p>
  <?php
  /**
* kontrolle ob datei exestiert
* wenn ja daten aus der datei herauslesen
*/

if(file_exists($datei))
{
$inhalt = file($datei);
$anzahl = count($inhalt);
    for($i = 0; $i < $anzahl; $i++)
    {
# inhalt rückwärts auslesen
        $newinhalt = array_reverse($inhalt);
# inhalt zerteilen
        $eintrag = explode("|-|",$newinhalt[$i]);
# variabeln defenieren
        $name = $eintrag[0];
        $bericht = $eintrag[1];
        $email = $eintrag[2];
        $datum = $eintrag[3];
        $zeit = $eintrag[4];

# daten ausgeben
              echo"<table width=\"437\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
              echo"<tr>\n";
              echo"<td width=\"102\" height=\"19\" valign=\"top\"><a href=\"mailto:$email\">$name</a></td>\n";
              echo"<td width=\"335\" valign=\"top\">$datum $zeit</td>\n";
              echo"</tr>\n";
              echo"<tr>\n";
              echo"<td height=\"18\" colspan=\"2\" valign=\"top\"><p>$bericht</p>\n";
              echo"<hr></td>\n";
              echo"</tr>\n";
              echo"</table>\n";
    }
}
else
{
    echo"Es wurde keine Datei gefunden";
}

/**
* formular zum eintragen der daten
* steht nicht zwischen den php tags !
*/
  ?>
  <p><form name="newEntry" method="post" action="">
<table width="355" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td height="19" colspan="2" valign="top"><div align="center">Neuer Eintrag </div></td>
  </tr>
  <tr>
    <td width="88" height="22" valign="top">Name:</td>
    <td width="267" valign="top">
      <input name="newName" type="text" id="name">   </td>
  </tr>
  <tr>
    <td height="22" valign="top">Email:</td>
    <td valign="top"><input name="newMail" type="text" id="email"></td>
  </tr>
  <tr>
    <td height="118" valign="top">Kommentar:</td>
    <td valign="top">
      <p>
        <textarea name="newBericht" cols="40" rows="6" id="bericht"></textarea>
      </p>    </td>
  </tr>
  <tr>
    <td height="19" valign="top">Passwort:</td>
    <td height="19" valign="top"><label>
      <input name="pass" type="password" size="10" maxlength="10" />
    </label></td>
  </tr>
  <tr>
    <td height="19" colspan="2" valign="top">
      <div align="center">
        <input name="post" type="submit" id="post" value="submit">
      </div>      </td>
  </tr>
</table>
</form>&nbsp;</p>
  <p>&nbsp;</p>
  <p><a href="index.php"><strong>ZUR&Uuml;CK</strong></a> </p>
</div>
</body>
</html>

Den MD5-Hash bekommst du übrigends mit der Funktion md5()
 
Hi fanste,
ich werde mich so gut es geht dran halten und danke Dir erstmal :)

Ich finde die schnelle Hilfe sehr gut und denke, das ich mich hier wohl fühlen werde,

MfG
Stari
 
Keine Ursache :)

Wenn sich das Problem hiermit schon gelöst haben sollte, bitte ich dich noch unten auf "Erledigt" zu klicken (dann wissen das auch die anderen User ohne hier reinschauen zu müssen ;))
 
Zurück