Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Loginscript“

J

jack1902

Guest

hey,

ich bin gerade dabei ein Loginscript in php zu erstellen und hätte eine Frage:

Ich rufe aus der Datenbank mit select auf ob der Datensatz (Login/Passwort) vorhanden ist...

Ist es jetzt sicher genug mit einer if Abfrage festzustellen ob die Anzahl der gefunden Datensätze null (fehlgeschlagen), eins (ok) ist.

Vielen Dank

MFG
 

CIX88

Aktives Mitglied

AW: Loginscript

Ist das eine Frage oder eine Feststellung?

Falls Frage:
Wenn das Query vom SELECT nichts ausgibt ist es schon NULL.
 
S

sonick

Guest

AW: Loginscript

Naja, wenn du nur prüfst ob ein Datensatz vorhanden ist, wie soll das da sicher sein? Dann muss ich doch nur den Username wissen?!

SELECT Passwort FROM Users WHERE UserName='LoginName'

Jetzt vergleiche das Ergebniss mit dem eingegebenen Passwort, wenn geich erzeugts du eine Session oder machst was weis ich was.

Oder habe ich dich falsch verstanden?

Greez Freddy
 
R

Ravetracer

Guest

AW: Loginscript

Man kann auch die Ergebnismenge von MySQL abfragen, wenn man das Passwort dazu überprüft:

Da ein AUTO_INCREMENT immer bei 1 anfängt, kann man die UserID bei "Nichterfolg" auf 0 setzen und das im Script abfragen:
PHP:
$sql = sprintf("SELECT userid FROM users WHERE username='%s' AND password='%s'",$username,md5($password));
if (!$res = mysql_query($sql)) {
 die("Fehler in der Query: ".mysql_error());
}
if (mysql_num_rows($res)) {
 $row = mysql_fetch_assoc($res);
 $userid = $row["userid"];
} else {
 $userid=0;
}

Alternativ kann man das auch so machen, was genauso funktioniert:
PHP:
function login($username,$passwort) {
 if(!$conn = mysql_connect($dbserver,$dbuser,$dbpass)) {
  die("Fehler bei der Datenbankverbindung: ".mysql_error());
 }

 if(!mysql_select_db($dbname,$conn)) {
  die("Fehler bei der Datenbankwahl: ".mysql_error());
 }

 $sql = sprintf("SELECT userid FROM users WHERE username='%s' AND passwort='%s'",$username,md5($passwort));
 if (!$res = mysql_query($sql,$conn)) {
  die("Fehler in der Query: ".mysql_error());
 }
 if (mysql_num_rows($res)) {
  @mysql_free_result($res);
  return true;
 }
 return false;
}
Die Funktion gibt zurück, ob der Nutzer und das Passwort korrekt sind, also TRUE oder FALSE und damit kann man dann arbeiten, jedoch ist das die simpelste aller Authentifizierungen. Besser wäre eine Funktion, mit der man sich einloggt, diese dann die Session-ID noch in die DB schreibt und dann testest du auf jeder Seite, ob die Session-ID mit der in der Datenbank übereinstimmt und lässt dann die Seite zu. Das wäre eine sicherere Variante.
Mit der hier aufgeführten Funktion müsste man halt den Namen und das Passwort in der Session speichern und dann auch immer auf jeder Seite abfragen, ob die Daten übereinstimmen. Eine zusätzlich Überprüfung der Session-ID ist halt sicherer.
Immer dran denken, beim Ausloggen die Sessiondaten zu löschen ;).
 
S

sonick

Guest

AW: Loginscript

Und wenn wir schon mal dabei sind, hier noch ein login Script mit Sessions:

login.php:

PHP:
<?
//Und los gehts:
//session starten, sollte immer ganze oben stehen!
session_start();
//User und Passwort habe ich hier im Code hinterlegt,
//du kannst Ihn aber auch aus einer DB holen o.ä.
$user_name = "test";
$user_pass = "123456";
//Kopf der HTML Seite
echo '<html>
<head>
<title>Interne Bereich</title>
</head>
<body><b>Login Bereich</b>';
 
//Kommen wir zur Funktion Funktionen
//auslesen der Variabeln
//Übergeben via Post
$user = $_POST['name'];
$pw = $_POST['passwort'];
//Jetzt die eigentlich überprüfung
if (isset($user, $pw))
    {
 //Wenn User oder PW leer sind...
    if ($user == "" OR $pw == "")
        {
        echo "<b>Es wurden nicht alle Felder ausgefüllt.</b>";
        }
  //Wenn gespeicherten Daten mit eingegeben übereinstimmen...
        elseif ($user == $user_name AND $pw == $user_pass)
            {
            $_SESSION['user'] = $user;
            $_SESSION['pw'] = $pw;
            echo "<b>Login erfolgreich: <a href=\"intern.php?".sid."\">Interne Bereich</a></b>";
            }
    }
//Jetzt noch das HTML Formular
//Wird nur angezeigt wenn nicht eigeloggt
if (!isset($user, $pw))
    {
    echo '<form name="login" method="post" action="'.$_SERVER['PHP_SELF'].'">
      User Name: <input type="text" name="name"> User Passwort:  <input type="password" name="passwort">
      <input type="submit" name="Submit" value="einloggen">
    </form>';
    }
 
// HTML abschliessen
echo '</body>
</html>';
?>


Und die intern.php

PHP:
<?
//Interner Bereich
//Wieder die Session beginnen
session_start();
//html kopf
echo '<html>
<head>
<title>Wilkommen im Internen Bereich</title>
</head>
<body>';
//die if abfragen ob der user eingeloggt oder ausgeloggt ist
if (!isset($_SESSION['user'], $_SESSION['pw']))
    {
    echo '<b>Du musst dich erst <a href="index.php">hier</a> einloggen um in den Geschützen Bereich zu kommen!</b>';
    }
 
if (isset($_SESSION['user'], $_SESSION['pw']))
    {
    echo "<h1>DU bis Drin!</h1>";
    }
 
echo '</body>
</html>';
?>

Einfach, aber für den Anfang sollte das genügen.

Greez Freddy
 
H

Hamburger

Guest

AW: Loginscript

Hmmm.... Wann ist es eigentlich besser, so ein php-loginscript zu verwenden und wann reicht ein einfacher zu realisierender Passwortschutz per .htaccess und .htpasswd aus?

Hängt wohl vor allem von der Nutzerzahl ab, oder?
 

pcxpress

Noch nicht viel geschrieben

AW: Loginscript

Hi,

also wenn es um Login-Scripts geht will ich an dieser Stelle mal FaPass empfehlen. Du findest es unter . Habe damit nur gute Erfahrungen gemacht und für privat ist es auch noch umsonst.

Gruss
 

d3221

Aktives Mitglied

AW: Loginscript

@pcexpress:
Es macht aber einfach Spaß sowas zu scripten =D Hab ich auch schon mal gemacht ^^

und @Threadsteller:
Wenn du mit Passwörtern arbeitest würd ich diese mit MD5 verschlüsseln und so in deine Datenbank eintragen, das niemand an die Passwörter rankommt. Nicht mal du =D
also:
PHP:
$pass = "lol"

// Ggf. kannst du das hier auch öfters machen: (Das muss aber dann berücksicht werden beim Login
$md5pass = md5($pass);

// Und halt ggf. nochmal:
$md5pass2 = md5($md5pass);

$query = "INSERT INTO blubb (passwort) VALUES ($md5pass2)";
mysql_query($query);

Dann wird das Passwort 2x verschlüsselt (trotzdem weiterhin 32 Zeichen lang). Bei dem Login musst du dann aber auch das vom Benutzer eingegbene Passwort 2x verschlüsseln, da ein encoden nicht möglich ist.

Greets
 
Zuletzt bearbeitet:

pcxpress

Noch nicht viel geschrieben

AW: Loginscript

@d3221
Auf jeden Fall macht selber coden Spaß. :)

Wie d3221 schon sagt kann bei MD5 ein vergessenes Passwort nicht mehr wiederhergestellt werden. In dem Fall sollte der User die Möglichkeit haben sich ein neues Passwort zuschicken zu lassen.

LG Veit
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.158
Beiträge
2.581.869
Mitglieder
67.224
Neuestes Mitglied
Aliyah79
Oben