Zum Inhalt springen

Submit-Button


Empfohlene Beiträge

Hallo!

Ich bin PHP-Anfänger und hab eine ziemlich einfache Frage.

Bin dabei, ein Newssystem in PHP zu programmieren.

Hab jetzt eine Datei namens admin.php in der es zwei Eingabefelder

für Name und Passwort gibt und einen Submit-Button.

Wie kann ich die Abfrage nach Name und Passwort nun in dieser

Datei erledigen? Wenn ich im Form-Tag action="admin.php" method="post"

eingebe, wird die Passwort-Abfrage ja 2-mal durchlaufen.

Mir geht´s hier nur um die Funtionsweise, dass ich name und passwort nochmals

an die gleiche php-datei übergebe, nicht um die sicherheit der abfrage, o.ä.!

Hier der Quellcode:

<?

if($name != "test")

{

echo "Benutzername inkorrekt!";

}else

{

if($pw != "test")

{

echo "Passwort falsch!";

}else

{

echo "Login korrekt!";

}

}

echo $name;

echo $pw;

?>

<html>

<body bgcolor="#FFFFFF" text="#000000">

<table width="50%" border="0">

<tr>

<td>

<form name="form1" method="post" action="admin.php">

<tr><td> <input type="text" name="name"></td></tr>

<tr> <td> <input type="password" name="pw"></td></tr>

<tr> <td> <input type="submit" name="login" value="Login"></td></tr>

</table>

</form>

</td>

</tr>

</table>

</body>

</html>

Vielen Dank im voraus

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmmm erstmal als kleinen gedankenstoß ... ich würde die passwörter niemals in der gleichen datei wie das login behalten.

user.php

<?

function einloggen() {

if($_POST['name'] != "test")

{

echo "Benutzername ist falsch! ";

}

else

{

if($_POST['pw'] != "test")

{

echo "Passwort falsch!";

}

else

{

echo "Login korrekt!";

}

}

echo $_POST['name'];

echo $_POST['pw'];

}

?>

//hier hast du eine funktion (lernst du bestimmt später noch). welche aus der admin.php aufgerufen wird. hierbei kannst du die ifabfrage beliebig fortsetzen. sprich du kannst weitere user so hinzufügen. besser geht sowas über eine datenbank. aber da du sagst du kennst dich damit noch nicht aus, währe es falsch das hier jetzt zu erklären ;)

admin.php

<?

include("user.php");

einloggen();

?>

// damit rufst du die user.php in die admin.php datei rein und sagst er soll die function einloggen starten.

<html>

<body bgcolor="#FFFFFF" text="#000000">

<table width="50%" border="0">

<tr>

<td>

<form name="form1" method="post" action="admin.php">

<tr><td> <input type="text" name="name"></td></tr>

<tr> <td> <input type="password" name="pw"></td></tr>

<tr> <td> <input type="submit" name="login" value="Login"></td></tr>

</table>

</form>

</td>

</tr>

</table>

</body>

</html>

// dein normaler html code

so ;) kann sein das was nicht kappt, hab immo kein apache hier um das zu testen :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

meinst du so?


<?
if ( isset ( $_POST["name"]) && isset( $_POSt["pw"])) {
if($_POST["name"] != "test")
{
echo "Benutzername inkorrekt!";
}
else
{
if($_POST["pw"] != "test")
{
echo "Passwort falsch!";
}
else
{
echo "Login korrekt!";
}
}
}
?>

<html>
<body bgcolor="#FFFFFF" text="#000000">
<table width="50%" border="0">
<tr>
<td>
<form name="form1" method="post" action="admin.php">
<tr><td> <input type="text" name="name"></td></tr>
<tr> <td> <input type="password" name="pw"></td></tr>
<tr> <td> <input type="submit" name="login" value="Login"></td></tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von kills

meinst du so?

Auch wenn's vielleicht jetzt ein wenig verwirrend ist:

Ich persönlich bevorzuge bei solchen Aufrufen die (zusätzliche) Abfrage des Sumitbuttons, da man dann auch noch eine Meldung ausgeben kann, dass irgendwas nicht eingegeben wurde:


<?php
if (isset ( $_POST["btnsub"]))
{
if (isset ($_POST["name"]) && isset($_POST["pwd"]))
{
//überprüfe die Eingaben und mach was ganz tolles
}
else
{
echo "Irgendwas fehlt!"
}
}
?>
<!-- Hier gibst Du Dein Formular aus -->
<input type="submit" name="btnsub" value="Und los!">
[/php]

Grobe Funktionsweise:

Wenn der Button "btnsub" gedrückt wurde, wird die Überprüfung gemacht. Wenn dabei etwas vergessen wurde, gibt's ne Fehlermeldung.

Ganz kurz, auch wenn's nicht gefragt war, zu den Sicherheitsaspekten:

Abgesehen davon, dass man solche Sachen nicht hart codiert (was Du aber auch sicherlich selbst weisst, wie ich aus Deiner Anmerkung von oben schliesse ;)) ist's bei einer Passwortabfrage sicherer, wenn man keine getrennten Meldungen für "Falscher Benutzername" und "Falsches Passwort" ausgibt, sondern eine gemeinsame wie "Passwort oder Benutzername falsch!". Denn wenn jemand in das System "rein" will, dann hilft ihm ein richtiger Benutzername (was er ja anhand der getrennten Meldung sehen kann) schon erheblich weiter, während man aus der gemeinsamen Meldung nicht schliessen kann, was denn jetzt falsch ist.

ICQ

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und wenn wir schon bei Tipps sind :):

ich würde für das Passwort ne md5-Verschlüsselung verwenden. die Funktion md5($string) gibt eine 32-Byte-lange md5-Verschlüsselung von $string zurück, wo man wirklich kaum die Chance hat, "rückwärts" den zugehörigen String zu errechnen. Das hieße:


if (md5($_POST["pwd"]) == "8sd63jfl3hsv739v....")
//Passwort stimmt
else
//Passwort stimmt nicht
[/PHP]

Gruß

Benjamin

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Astarion

aber das macht doch keinen sinn, wenn das pw so oder so in der datei steht ?

dann brauch ich auch md5 nicht mehr ...

Das würde dann Sinn machen, wenn das Passwort in der Datei ebenfalls schon MD5-verschluesselt ist. Das verhindert auch bei einem zufälligen bzw. ungewollten Zugriff auf die Datei, dass jemand die Passwörter sieht.

Allerdings hast du dann das Problem, dass wenn einer der User sein Passwort vergessen hat, es ihm nicht mehr geschickt werden kann. Hierfür sollte man dann eine umkehrbare (am besten selbst geschreibene) Verschlüsselung verwenden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

erst einmal nehme ich doch stark an das das ein Beispiel von oanes war und nicht das fertige Skript.

Original geschrieben von computercrustie

Das würde dann Sinn machen, wenn das Passwort in der Datei ebenfalls schon MD5-verschluesselt ist. Das verhindert auch bei einem zufälligen bzw. ungewollten Zugriff auf die Datei, dass jemand die Passwörter sieht.

Dann müßte es aber schon ein sicheres Passwort sein, also nichts was im Wörterbuch steht und min. 8 Zeichen mit Sonderzeichen, da ein Brute Force Angriff auf ein MD5 bekanntes Passwort nicht schwer ist.

Original geschrieben von computercrustie

Allerdings hast du dann das Problem, dass wenn einer der User sein Passwort vergessen hat, es ihm nicht mehr geschickt werden kann. Hierfür sollte man dann eine umkehrbare (am besten selbst geschreibene) Verschlüsselung verwenden.

Sorry aber das sehe ich nicht so, wenn dein Skript gehackt wird, nützt dir auch deine sebstgeschriebene Verschlüsselung nix, Passwörter sollten immer nur in eine Richtung funktionieren, also z.B. MD5. Wenn der User es vergisst wird ein neues generiert und ihm mitgeteilt.

Wenn er eigene Passwörter benutzen können soll, gibt man ihm dann die Möglichkeit es zu ändern.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Jaraz

Wenn er eigene Passwörter benutzen können soll, gibt man ihm dann die Möglichkeit es zu ändern.

In den anderen Punkten gebe ich dir zum Teil Recht, aber ein wenn das Verschlüsselungscript in einem geschützten Verzeichnis liegt, dann dürfte es schwer für Hacker werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von computercrustie

In den anderen Punkten gebe ich dir zum Teil Recht, aber ein wenn das Verschlüsselungscript in einem geschützten Verzeichnis liegt, dann dürfte es schwer für Hacker werden.

Ja, wenn es eine Individuallösung ist ist das richtig, wenn jemand dann bis zum Skript durchkommt, kann er wahrscheinlich auch direkt die Datenbank auslesen.

Wenn man seine Lösung allerdings verkauft, liefert man ja die Sourcen mit, sodaß sich jeder ver-und entschlüsselung anschauen kann.

MD5 Passwörter sind nur ein Glied der Kette, die man allerdings nicht vernachlässigen sollte.

Was das Ursprungsproblem betrifft, würde ich jedem raten auch bei relativ kleinen Projekten mit Templates zu arbeiten. Ist je nach System zwar etwas wo man sich einlesen muss, durch die Trennung von Logik und Design proggt man aber automatisch wesentlich sauberer.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...