• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PWschutz - wo ist der fehler

Status
Für weitere Antworten geschlossen.

Frank

Neues Mitglied
Hallo,

So langsam lebe ich mich in php ein und habe eine pw abfrage gebastelt.
Damit sich user ohne probleme registrieren etc. können, läuft das über ein DB (MySQL).

Hier erstmal das Script:
[php:1:b78b1de6b9]
<?php
$user = $_REQUEST['username'];
$pw = $_REQUEST['pw'];


mysql_connect("localhost","fischer1","fischer1") or die ("Keine Verbindung moeglich");
mysql_select_db("fischer1") or die ("Die Datenbank existiert nicht");

$abfrage = "SELECT * FROM pw WHERE user LIKE '$user'";
$ergebnis = mysql_query($abfrage);

while($row = mysql_fetch_object($ergebnis))
{
$pwcheck = $row->pw;
$usercheck = $row->user;
}


if ($pw = $pwcheck)
{
if ($user = $usercheck)
{$url = "http://www.google.de";
header("location:".$url);}
}

echo '<u>Einer der folgenden Fehler ist aufgetreten:</u>


';
echo '*Benutzername falsch
';
echo '*Passwort flasch
';
echo '*Benutzername und Passwort stimmen nicht überein
';
echo '

';
echo '<a href="register.php" />Registrieren</a /> | ';
echo '<a href="forget.php" />Passwort vergessen</a /> | ';
echo '<a href="javascript:history.go(-1);" />Zur&uuml;ck</a />';


?>
[/php:1:b78b1de6b9]

Nun meine Frage:

Woran liegt es, dass man auch weitergeleitet wird(hier zu google), wenn man nur den richtigen usernamen ( $user) eingibt aber ein falsches pw?
gibt man einen richtigen user ein aber das nicht dazu passende passwort sollte man ja eigentlich nicht weitergeleitet werden.
Ich hofffe auf eure Hilfe

Damit ihr ausprobieren könnt was ich meine habe ich das Script hier hochgeladen: http://fischer1.fi.funpic.de/
Benutzername: test
PW: test
 
Hi Frank

es ist zwar lange her das ich mit PHP was gemacht hab (außer include) trotzdem denke ich du benutzt falsche Operatoren.
(=) ist der Zuweisungsoperator und kein Vergleichsoperator

Deine Abfragen müssten also so aussehen:
[php:1:ebf4333963]...
if ($pw === $pwcheck) && ($user == $usercheck) {
...
}
else {
...
}[/php:1:ebf4333963]
Dabei ist (==) der Vergleichsoperator und (===) ist Case sensitiv (Groß- und Kleinschreibung wird beachtet).

Man möge mich verbessern wenn ich wieder daneben gegriffen haben. :lol:

Gruß
Hobbyuser
 
danke für deine Antwort.
aber wenn ich es übernehme kommt folgender fehler:
Parse error: syntax error, unexpected T_BOOLEAN_AND in /usr/export/www/vhosts/funnetwork/hosting/fischer1/pw.php on line 26

26 if ($pw === $pwcheck) && ($user == $usercheck)
27 {$url = "http://www.google.de";
28 header("location:".$url);}

wenn ich

if ($pw === $pwcheck && $user == $usercheck)
{$url = "http://www.google.de";
header("location:".$url);}

nehme gehts gar nich mehr?!
 
das mit dem SELECT * ist einfach nur müll. 1. gibt man felder immer direkt an und 2. brauchst du das user feld doch überhaupt nicht mehr. ich würde einfach.
Code:
SELECT COUNT(*) valid_user FROM pw WHERE user = '$user' AND pw = '$pw'
dann einfach mit
[php:1:1e2421684c]
if(mysql_fetch_object($ergebnis)->valid_user == 1) {

}
[/php:1:1e2421684c]

arbeiten ;)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben