Problem mit Passwortschutz

Hallo zusammen!

Ich sollte für nen Kollegen ein Script basteln, womit er eine Tabelle löschen kann ohne MySQL Admin zu benutzen.
Außerdem soll der ganze Spaß mit einem Passwort gesichert werden…
Ich hab da mal eben schnell was zusammengefummelt und das funktioniert soweit ganz gut…
Nach Eingabe des Passworts gelangt man zur eigentlichen Seite, führt man dort die Aktion aus gelangt man aber erneut zur Passwortabfrage…
und das script soll nicht größer als eine datei werden.

ich weiß das ich irgendwas vergessen habe aber ich komm da nicht von selbst drauf…

naja hier der code dazu, nicht wundern weil das alles so primitiv aussieht, hab kürzlich damit angefangen…werde ich später überarbeiten

[code]<?
// MySQL-KONFIGURATION

$dbserver = “localhost”; // bleibt in der Regel “localhost”
$dbuser = “”; // MySQL-Benutzername
$dbpass = “”; // MySQL-Passwort
$dbname = “”; // Datenbankname

// WEITERES

$scriptpass = “e10adc3949ba59abbe56e057f20f883e”; // Passwort (123456)

?>

Tabellenlöscher <? if(isset($_POST['submit'])) { $scriptpassnew = md5($_POST['scriptpassnew']); if ($scriptpassnew == $scriptpass) { ?>

Tabelle leeren

Hiermit wird die Tabelle geleert.
Tabelle jetzt leeren!


<? if($_GET["action"] == "cleartable") { $link = @mysql_connect($dbserver, $dbuser, $dbpass); if (!$link) { echo "Die Verbindung zur Datenbank ist fehlgeschlagen!
Angaben überprüfen!
"; } else { if (!mysql_select_db($dbname, $link)) { echo "Die Datenbank ".$dbname." existiert nicht!
Angaben überprüfen!
"; } else { mysql_select_db($dbname, $link); if (!mysql_query("DELETE FROM tabelle", $link)) { echo "Die Tabelle konnte nicht geleert werden!"; } else { echo "Leeren der Tabelle war erfolgreich!"; } } } } ?>
<? } else { echo "
Das Passwort war falsch!
"; } } else { echo "
Passwort:
"; } ?> [/code]

danke schonmal!

Natuerlich - diese Scriptinstanz hat das Passwort ja auch nie uebergeben bekommen, also muss sie ja auch so reagieren.

hmm…ok ich versteh schon was du meinst aber was genau muß ich nun machen?

Wie waer’s mit ueberlegen …?

Ueberlege dir, wie du auch beim naechsten Seitenaufruf noch feststellen kannst, dass der Benutzer sich bereits authentifiziert hat.
Sessions waeren eine Moeglichkeit.

hmm stimmt…meinte ja ich hab was vergessen XD

ich bekomm es nicht hin, weiß nicht wie ich das mit sessions handlen soll…
bestenfalls bekomm ich die meldung „Cannot send session cache limiter - headers already sent …“ :smoke:

Ein bisschen mehr Eigeninitiative koenntest du m.E. gerne mal zeigen.

Ueberall wo du dich zu der Meldung informierst, wirst du nachlesen koennen, was es damit auf sich hat - session_start muss vor allen Ausgaben aufgerufen werden.

inzwischen bin ich die meldung los aber nun habch den selben mist wie vorher…
egal ich gebs fürs erste auf…eigeninitiative is ja ned und so…

rufe vor allen ausgaben session_start() auf. wenn das passwort richtig ist, notierst du dies in einer session variable.
logout machst du mit session_destroy();

<?
// session starten. wenn probleme auftreten, als utf-8 OHNE bom speichern!
session_start();

//logout vornehmen
if(isset($_POST['logout'])
session_destroy();

// MySQL-KONFIGURATION

$dbserver        = "localhost";  // bleibt in der Regel "localhost"
$dbuser          = "";   // MySQL-Benutzername
$dbpass          = "";   // MySQL-Passwort
$dbname          = "";     // Datenbankname

// WEITERES

$scriptpass      = "e10adc3949ba59abbe56e057f20f883e";   // Passwort (123456)

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Tabellenl&ouml;scher</title>
</head>
<body>
<?
if(isset($_POST['submit']) || $_SESSION['passed'])
{
         $scriptpassnew = md5($_POST['scriptpassnew']);
         if ($scriptpassnew == $scriptpass || $_SESSION['passed'])
         {
           $_SESSION['passed'] = true;
                   ?>
                   <table align="center">
                   <tr><td><h2>Tabelle leeren</h2></td></tr>
                   <tr><td>Hiermit wird die Tabelle geleert.</td></tr>
                   <tr><td><a href="demo.php?action=cleartable"><b>Tabelle jetzt leeren!</b></a></td></tr>
                   <tr><td><div><br><br>
                   <?
                   if($_GET["action"] == "cleartable")
                   {
                            $link = @mysql_connect($dbserver, $dbuser, $dbpass);
                            if (!$link)
                            {
                                    echo "<b>Die Verbindung zur Datenbank ist fehlgeschlagen!<br>Angaben überprüfen!</b>";
                            }
                            else
                            {
                                   if (!mysql_select_db($dbname, $link))
                                   {
                                           echo "<b>Die Datenbank</b> ".$dbname." <b>existiert nicht!<br>Angaben überprüfen!</b>";
                                   }
                                   else
                                   {
                                           mysql_select_db($dbname, $link);
                                           if (!mysql_query("DELETE FROM tabelle", $link))
                                           {
                                                   echo "Die Tabelle konnte nicht geleert werden!";
                                           }
                                           else
                                           {
                                                   echo "<b>Leeren der Tabelle war erfolgreich!</b>";
                                           }
                                    }
                            }
                   }
                   ?>
                   </div></td></tr>
                   </table>
                   <?
         }
         else
         {
                   echo "<table align=\"center\"><tr><td>Das Passwort war falsch!</td></tr></table>";
         }
}
else
{
         echo "
         <table align=\"center\">
         <form action=\"demo.php\" method=\"POST\">
         <tr><td>Passwort: </td><td><input type=\"password\" name=\"scriptpassnew\"></td><td><input type=\"submit\" value=\"Einloggen\" name=\"submit\"></td></tr>
         </form>
         </table>
         ";
}
?>
<form action="demo.php" method="post">
<input type="submit" name="logout" value="Logout..." style="margin-left:60px;color:#600;background:#aaa;border:1px solid #333">
</form>
</body>
</html>
<!-- session handling by:  jw-lighting.xe.cx and forum.bplaced.net -->

oh man…ich hatte es so ähnlich und das hat nicht funktioniert…
egal ich danke dir dafür!
ausprobieren kann ich es jetzt nur nicht mehr…hab ne kleine deutschlandreise vor mir :wink2:

ok, ist wie immer ungetestet.
melde dich sonst einfach wieder :wink:

funktioniert wunderbar…danke vielmals!!!