Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
ein problem mit login... [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




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'];
}
}

?>

 
TobiaZ
03-08-2004, 13:34 
 
Willkommen, bitte benutze die [PHP]-Tags um deinen Code zu formatieren.

 
asp2php
03-08-2004, 13:37 
 
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.

 
asp2php
03-08-2004, 13:54 
 
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

 
TobiaZ
03-08-2004, 14:01 
 
@$_POST: Such mal nach register_globals. Hatte asp dir oben schonmal gesagt.

 
asp2php
03-08-2004, 14:04 
 
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 ;)

 
alexs
03-08-2004, 14:07 
 
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.

 
asp2php
03-08-2004, 14:21 
 
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.

 
asp2php
03-08-2004, 14:23 
 
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?

 
asp2php
03-08-2004, 14:31 
 
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 :))

 
Abraxax
03-08-2004, 14:38 
 
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 ....

 
asp2php
03-08-2004, 14:51 
 
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

 
Abraxax
03-08-2004, 14:56 
 
:motz: du nur. das hilft dir auch nicht weiter .... :cool: :D


</ot>

 
asp2php
03-08-2004, 15:01 
 
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

 
Abraxax
03-08-2004, 15:07 
 
/ == Ende
O == Off
T == Topic

und jetzt ruhe ... :P

 
TobiaZ
03-08-2004, 15:16 
 
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...

 
asp2php
03-08-2004, 15:29 
 
wie ists denn angekommen :D? Hast du die Darstellung der Smilies unterdrückt? ;)

 
TobiaZ
03-08-2004, 15:31 
 
nö.

aber deswegen soviel OT?

<EOT>

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:48 Uhr.