Archiv verlassen und diese Seite im Standarddesign anzeigen : ein problem mit login...
benorten 03-08-2004, 13:29 hallo ihr profis...
ich bin noch nicht so sehr bewandert mit php, deshalb schreibe ich mal hier mein problem.
ich verkaufe holzspielzeug und möchte meine kunden diesen dienst nun auch online bieten. dafür habe ich einen kunden login angefangen zu schreiben.
der kunde gibt dort seine kunden id ein und sein passwort, nach eingabe sollte er erfolgreich eingeloggt sein. ( was auch geschieht )
nun das problem:
wenn ich ein falsches passwort eingebe kommt er trotzdem in seinen kunden bereich, normaler weise sollte jetzt kommen das das passwort ist, und wenn ich kein passwort eigebe kommt er auch in seinen bereich.
vielleicht kann mir da mal jemand helfen.
ich wäre dankbar dafür.
<?
include("db.php");
if($id < 1)
{
echo "Geben sie ihre Kunden ID ein!";
}
else if(strlen($pwd) < 1)
{
echo "Geben sie ihr Passwort ein!";
}
$result = mysql_query("select * from kunden WHERE id=$id");
$reihen = mysql_num_rows($result);
if ($reihen <= 0)
{
echo "Zutritt verweigert." + "<br>" + "Kunden ID oder Passwort nicht Korekt!";
}
if($pwd != $pwd)
{
echo "Zutritt verweigert." + "<br>" + "Sie haben ein falsches Passwort angegeben!";
}
else {
echo "<b>" + "Herzlich Willkommen im Kundenbereich," + $name + "!" + "</b><br>";
}
if (mysql_num_rows($result)) {
while($row=mysql_fetch_array($result)) {
$id = $row['id'];
$sid = $row['session'];
$firma = $row['firma'];
$name = $row['name'];
$strasse = $row['strasse'];
$plzort = $row['plzort'];
$telefon = $row['telefon'];
$telefax = $row['telefax'];
$email = $row['email'];
$ansprechpartner = $row['ansprechpartner'];
$pwd = $row['pwd'];
}
}
?>
Willkommen, bitte benutze die [PHP]-Tags um deinen Code zu formatieren.
du sollst die Variablen vor dem Gebrauch auf Existenz prüfen, isset ist dein Freund, und such mal im Forum nach register_globals
benorten 03-08-2004, 13:43 hallo
@TobiaZ: vielen dank erst einmal für die info.
@asp2php: also die variabeln exestieren, da das script soweit auch funktioniert. leider abert nicht der teil wenn man ein falsches, oder garkein passwort eingibt.
ah, ich habe nur so drüber geflogen, weil es nicht in php-tags war und daher keine lust, jetzt aber ;)
du hast:
if($pwd != $pwd)
überprüft, BEVOR du die Daten aus der DB ausliest UND die gleiche Var mit sich selbst verglichen. Drei Mal darfst du raten wann der Fall $pwd ungleich $pwd eintritt ;)
Vorschlag:<?
include("db.php");
if($id < 1)
{
echo "Geben sie ihre Kunden ID ein!";
}
else if(strlen($pwd) < 1)
{
echo "Geben sie ihr Passwort ein!";
}
$result = mysql_query("select * from kunden WHERE id=$id");
$reihen = mysql_num_rows($result);
if ($reihen <= 0)
{
echo "Zutritt verweigert." + "<br>" + "Kunden ID oder Passwort nicht Korekt!";
}
else {
$id = $row['id'];
$sid = $row['session'];
$firma = $row['firma'];
$name = $row['name'];
$strasse = $row['strasse'];
$plzort = $row['plzort'];
$telefon = $row['telefon'];
$telefax = $row['telefax'];
$email = $row['email'];
$ansprechpartner = $row['ansprechpartner'];
$pwd_db = $row['pwd'];
}
if($pwd != $pwd_db)
{
echo "Zutritt verweigert." + "<br>" + "Sie haben ein falsches Passwort angegeben!";
}
else {
echo "<b>" + "Herzlich Willkommen im Kundenbereich," + $name + "!" + "</b><br>";
}
?>
habe nur das notwendigste korrigiert. I.A. sollst du deinen Code generell überarbeiten, u.a.:
- Existenzüberprüfung
- mit $_POST arbeiten
- vernünftige Ausgabeformat
- und ausserdem was soll denn das Auslesen einer SessionID aus der DB beim Login. Die SessionID soll eigentlich beim erfolgreichen Einloggen IN DIE DB EINGETRAGEN werden und erst bei weiteren Requests zur Überprüfung ausgelesen werden.
benorten 03-08-2004, 13:59 hallo
@asp2php: vielen dank erst mal, werde das gleich mal testen.
was meinst du damit, leider verstehe ich das nicht
- mit $_POST arbeiten
- vernünftige Ausgabeformat
@$_POST: Such mal nach register_globals. Hatte asp dir oben schonmal gesagt.
zu 1: http://de3.php.net/manual/en/reserved.variables.php
zu 2: damit meine ich deine Ausgabe für erfolgreiches Anmelden bzw. Fehler. Selbst hier soll man auch die Ausgabe schön formatieren und dem User nicht einfach irgendwas hinschmeissen ;)
Mein Vorschlag wäre zunächst einmal zu prüfen,
ob die Input-Felder überhaupt ausgefüllt wurden.
include("db.php");
if($id < 1 && $_POST[ID_FELD_NAME] != "")
{
echo "Geben sie ihre Kunden ID ein!";
}
else if(strlen($pwd) < 1 && $_POST[PASSWORT_FELD_NAME] != "")
{
echo "Geben sie ihr Passwort ein!";
}
benorten 03-08-2004, 14:12 @asp2php :)
das versteht sich ja von selbst. ist ja noch alles am anfang. erst mal soll ja das script funktionieren
habe das jetzt mal getestet.
ich habe nun die kunden id eingegeben ohne passwort, er hat mich trotzdem in dem kunden seinen bereich reingelassen, und eine 0 hat er mir oben links in die ecke gesetzt.
die kundendaten die angezeigt werden sollen nach dem erfolgreichen einloggen werden nun auch nicht mehr angezeigt.
d.h. die Zeile: "Herzlich Willkommen im Kundenbereich..." erscheint auf jeden Fall? wasfür Kundenname wird angezeit?.
BTW: die Überprüfung mit:
if($id < 1)
{
echo "Geben sie ihre Kunden ID ein!";
}
else if(strlen($pwd) < 1)
{
echo "Geben sie ihr Passwort ein!";
}
ist sehr schlampig. Ändern mal, indem du mit isset und $_POST arbeitet und den If ... Else ... Block sinnvoll Codebereiche umschliessen.
benorten 03-08-2004, 14:21 @alexs: habe mal deinen part eingebaut, und wieder nur die id ohne passwort eingegeben, dennoch bin wieder reingekommen.
leider habe ich nicht die ahnung die ihr habt.
Original geschrieben von benorten
@alexs: habe mal deinen part eingebaut, und wieder nur die id ohne passwort eingegeben, dennoch bin wieder reingekommen.
kein Wunder, das Teil ist ja auch für die Mülltone ;)
benorten 03-08-2004, 14:26 @asp2php: es wird garkein kundenname angezeigt, sondern nur die zahl null.
du hast geschrieben:ist sehr schlampig. Ändern mal, indem du mit isset und $_POST arbeitet und den If ... Else ... Block sinnvoll Codebereiche umschliessen.
wie könnte das besser aussehen? wie gesagt ich bin kein profi, und lerne erst, sorry
benorten 03-08-2004, 14:28 Original geschrieben von asp2php
kein Wunder, das Teil ist ja auch für die Mülltone ;)
meinst du damit was ich geschrieben habe? wenn ja, wie könnte man es denn besser machen?
Original geschrieben von benorten
wie gesagt ich bin kein profi, und lerne erst, sorry
in meiner Signatur sind einige Links, die dir den Einstieg helfen soll. Es wäre besser wenn du mit was anderes als ein User Management anfängst.
Da du wirklich nicht viel Ahnung hast. lohnt es sich nicht, den Thread hier weiter zu expandieren ;). Versuche erstmal mit den Grundlagen, kommste dann ... in x-Wochen wieder. (** closed *** meinerseits :))
Original geschrieben von asp2php
(** closed *** meinerseits :)) zum glück für ihn kannst du nicht wirklich closen. das wäre unfair ...
@benorten
ansonsten stimme ich asp zu. schaue dir erst einmal die grundlagen an und lerne sie ... ein UM zu schreiben mag zwar einfach sein, aber die sicherheit sollte nicht aussen vor bleiben ....
Original geschrieben von Abraxax
zum glück für ihn kannst du nicht wirklich closen. das wäre unfair ...
:motz: wo denkste denn hin, selbst wenn ich Thread schliessen kann, tue ich hier deswegen noch lange nicht. closed meinerseits bedeutet: ich werde zu diesem Fall nichts mehr sagen. That's it. :motz:
:p :p :p
:motz: du nur. das hilft dir auch nicht weiter .... :cool: :D
</ot>
Original geschrieben von Abraxax
</ot>
ich sehe bei dir, und nur bei dir oft den obigen Tag. Frage: was soll der Sch**ss :motz:
:p :p
/ == Ende
O == Off
T == Topic
und jetzt ruhe ... :P
Chill mal, ist geiles wetter. da braucht ihr beide nicht :motzen: bin sicher, dass es keiner von euch so ernst gemeint hat, wie es angekommen ist...
wie ists denn angekommen :D? Hast du die Darstellung der Smilies unterdrückt? ;)
nö.
aber deswegen soviel OT?
<EOT>
|