Zum Inhalt springen

php login problem


Empfohlene Beiträge

Hi,

hab ihr ein großes Problem mit meinem login...

Ich bau hier gerade ein Login. Mit Name und passwort. Die Tabellenstruktur sieht folgendermaßen aus:

Spalten: Rollen_id, MA_PersNR, Passwort.

Zur Erklärung in der Rollen-id steht entweder eine 1 oder eine o

1= Admin

0= Mitarbeiter

Die Ma_PersNR beinhaltet die Personal Nummer.

Passwort halt passwort.

So nun folgender Code, den ich mir gebastelt hab, jedoch knallt es.

Hab 2 Dateien einmal login.php (beinhaltet halt die Maske quasi HTML Code)

und dann die Datei check.php die halt alles checked.

hier die check.php die wichtig ist.

<html><body>

<?php
$benutzer=$HTTP_POST_VARS['benutzer'];
$pass=$HTTP_POST_VARS['pass'];
$db=mysql_connect("localhost","root","");
mysql_select_db("tecsphere);
$anfrage="SELECT * FROM login WHERE ma_pnr='".$_REQUEST[ma_pnr]."' AND passwort='$passwort' AND user_activated='1' AND user_gesperrt='0'";
$anfrage.=$benutzer;
$anfrage.="'";
$anfrage.="'";
$ergebnis=mysql_query($anfrage);
$anz=mysql_num_rows($ergebnis);
if/$anz==1) {
$zeile=mysql_fetch_row($ergebnis);
if($pass==$zeile[1]) {
print("<b>Login korrekt</b>");
print"<p>Klicken Sie hier zum Zugang:</p>);
print("<a href='test.html'>Geschützer Bereich</a>");
}
else {
print("Benutzername korrekt, Passwort NICHT KORREKT!");
print("<a href='login.php'>Noch ein Versuch...</a>;

}
}
else {
print("Benutzername NICHT vorhanden!<br>");
print(" href='login.php'> Noch ein VErsuch..</a>;
}
mysql_close($db);
?>
</body></html>[/PHP]

Sorry, wenn ich falsch gepostet hab aber ich habs sehr eilig...

Ich hoffe, irgendwer kann mir helfen... bitte es ist sehr wichtig

Lg jule

Link zu diesem Kommentar
Auf anderen Seiten teilen

zuerst mal musst du bei der SELECT abfrage auch auf gross/kleinschreibung achten!!

dann habe ich auch gesehen dass du oben angibst das feld "MA_PersNR" in der DB zu haben und dann aber im SELECT nach "ma_pnr" fragst.

da ist wohl schonmal der fehler zu suchen

ebenso (SELECT) "passwort" in deiner tabelle "Passwort"

if/$anz==1)

ist auch falsch

->if($anz==1)

Link zu diesem Kommentar
Auf anderen Seiten teilen


$anfrage="SELECT * FROM login WHERE ma_pnr='".$_REQUEST[ma_pnr]."' AND passwort='$passwort' AND user_activated='1' AND user_gesperrt='0'";
$anfrage.=$benutzer;
$anfrage.="'";
$anfrage.="'";
$ergebnis=mysql_query($anfrage);
[/PHP]

so muss es ja zwangsläufig zu nem sql syntax error kommen.

da fehlt der spaltenname und die verküpfung für den user.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

hab die Groß und Kleinschreibung jetzt korregiert.

Aber ich denke der Ausdruck ist falsch

rollen_id='1' AND rollen_id='0'";

Mir fällt leider nix besseres ein wie die Abfrage konstriert werden soll?

Bei dem Wert 1 soll der Admin erkannt werden und bei Wert 0 soll der Mitarbeiter erkannt werden.

Hm, wo hab ich etwas vergessen? wg. Spaltename & Verknüpfung???

Sorry.

<?php
$benutzer=$HTTP_POST_VARS['benutzer'];
$passwort=$HTTP_POST_VARS['pass'];
$db=mysql_connect("localhost","root","");
mysql_select_db("tecsphere);
$anfrage="SELECT * FROM login WHERE ma_pnr='".$_REQUEST[ma_pnr]."' AND passwort='$passwort' AND rollen_id='1' AND rollen_id='0'";
$anfrage.=$benutzer;
$anfrage.="'";
$anfrage.="'";
$ergebnis=mysql_query($anfrage);
$anz=mysql_num_rows($ergebnis);
if($anz==1) {
$zeile=mysql_fetch_row($ergebnis);
if($pass==$zeile[1]) {
print("<b>Login korrekt</b>");
print"<p>Klicken Sie hier zum Zugang:</p>);
print("<a href='test.html'>Geschützer Bereich</a>");
}
else {
print("Benutzername korrekt, Passwort NICHT KORREKT!");
print("<a href='login.php'>Noch ein Versuch...</a>;

}
}
else {
print("Benutzername NICHT vorhanden!<br>");
print(" href='login.php'> Noch ein Versuch..</a>;
}
mysql_close($db);
?>
</body></html>[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

eigentlich musst du beim login gar nicht abfragen ob sich ein normaler benutzer oder admin anmeldet.

du setzt eher nach erfolgreichen login ein flag dass der momentane benutzer admin oder normaler benutzer ist (z.b. ne session oder anderes)

und so ist die abfrage natürlich quatsch, das nicht 0 und 1 gleichzeit sein kann...

alles klar?

Link zu diesem Kommentar
Auf anderen Seiten teilen

<?php
$benutzer=$HTTP_POST_VARS['benutzer'];
$passwort=$HTTP_POST_VARS['pass'];
$db=mysql_connect("localhost","root","");
mysql_select_db("tecsphere);
$anfrage="SELECT * FROM login WHERE ma_pnr='".$_REQUEST[ma_pnr]."' AND passwort='". $passwort ."'";
$ergebnis=mysql_query($anfrage);
$anz=mysql_num_rows($ergebnis);
if($zeile=mysql_fetch_row($ergebnis)) {
print("<b>Login korrekt</b>");
print"<p>Klicken Sie hier zum Zugang:</p>);
print("<a href='test.html'>Geschützer Bereich</a>");
} else {
print("Benutzername oder Passwort falsch!<br>");
print(" href='login.php'> Noch ein Versuch..</a>;
}
mysql_close($db);
[/PHP]

PS:

Es ist immer abzuraten bei der prüfung von PW und Login auszugeben welche der beiden eingaben falsch war, da dies zu einem sicherheitsrisiko führt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

und ohne dich jetzt überfordern zu wollen würde ich aus dem usernamen und dem passwort das du mit HTTP_POST_VARS bekommst mit der str_replace funktion ein einfaches hochkomma also das ' rausschneiden um "sql-injections"zu verhindern.

das ist aber nur wirklich wichtig wenn die seite ins öffentliche internet kommt.

sonst kann sich nämlich jeder der ein kleines bisschen ahnung vom thema hat in deine anwendung ohne benutzerdaten sogar als admin einloggen.

musste ich leider vor kurzen am eigenen leibe erfahren.

sorry, aber wenn ich diesen select * from logindaten where.... code sehe springt seit dieser erfahrung bei mir immer der alarm an...

Link zu diesem Kommentar
Auf anderen Seiten teilen

<?php

if ( !isset($ma_pnr)) $ma_pnr=0;

$benutzer = $HTTP_POST_VARS['ma_pnr'];

$pass = md5($HTTP_POST_VARS['passwort']); //Passwort ist mit md5 verschlüsselt.

if ((!isset($benutzer)) OR (!isset($pass))) {

die("Name und Passwort ist nicht bekannt !");

}

$db = mysql_connect("localhost","root","");

mysql_select_db("test");

$login_check .= "SELECT `password`,`rollen_id`"; // user_activated`,`user_gesperrt soll eigentlich nur rollen_id überprüft werden

$login_check .= "FROM `login` ";

$login_check .= "WHERE `ma_pnr` = '".$benutzer."' and 'passwort' = '".$pass."`";

$result = mysql_query($login_check,$db);

$zeileholen = mysql_fetch_array($result);

mysql_close($db);

if(!$zeileholen || $zeileholen["password"] <> $pass) {

echo("Benutzername oder Passwort falsch!!!");

}

if($zeileholen["rollen_id"] == 0) {

echo("Als Mitarbeiter eingeloggt");

echo("<a href='Mitarbeiter_account.php'> Geschützer Bereich</a>");

}

if($zeileholen["rollen_id"] == 1) {

echo("Als Admin eingeloggt");

echo("<a href='adminverwaltung.php'> Geschützer Bereich</a>");

}

?>

<!--<a href="adminverwaltung.php">Geschützer Bereich</a>-->

</body></html>

Hi,

hab jetzt das Problem das, er hier nen Fehler ausgibt.

Ab hier knallt es:

$zeileholen = mysql_fetch_array($result);

Dabei hab ich ma_pnr jetzt auf null gesetzt, siehe oben.

<html><body>

Link zu diesem Kommentar
Auf anderen Seiten teilen

dein query sieht ja in rein so aus:

SELECT `password`,`rollen_id`FROM `login` usw.

da fehlt ein leerzeichen zwischen rollen_id und FROM!

darüber hinaus darfst du kein tabellenfeld in hochkomma setzen

also nicht SELECT 'password' FROM

sondern

SELECT password FROM

auch für die anderen felder in der datenbank wie rollen_id und login

willst du dir nicht erstmal ein tutorial zum thema mysql und php durchlesen??

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...