Anzeige - [Hier werben / Mediadaten]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
> Bitte bewerten, kleines Loginscript
cd_brenner
Geschrieben am: Mo 5.09.2005, 00:19
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 95
Mitglied seit: 19.12.2004


Ich glaub da is no wo a fehler drinnen, können sich das mal die PHP Profis anschaun??

index.php:
<html>
<head>
<title></title>
<meta name="author" content="Markus">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">


<form action="checkuser.php" method="post">
Benutzername: <input type="text" name="name" size="30">


Kennwort: <input type="password" name="pwd" size="30">


<input type="submit" value="Absenden">
</form>
</body>
</html>
(einfaches Formular zum eingeben der Benutzerdaten)

checkuser.php:
<?php
// Session starten
session_start ();

$connectionid = mysql_connect ("localhost", "username", "passwort");
if (!mysql_select_db ("xrayserver", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}

$sql = "SELECT name, passwort, email, status FROM forum_users WHERE name = '".$_POST["name"]."' AND (passwort = '".$_POST["pwd"]."')";
$result = mysql_query ($sql);

if (mysql_num_rows ($result) > 0)
{
$data = mysql_fetch_array ($result);

// Sessionvariablen erstellen und registrieren
$_SESSION["name"] = $data[0];
$_SESSION["email"] = $data[2];
$_SESSION["status"] = $data[3];


header ("Location: intern.php");
}
else
{
header ("Location: fehler.php");
}
?>
(Prüft ob es in der DB eine passende Kombination aus eingegebenen Benutzernamn und Passwort gibt. Wenn ja wirst du auf die geheime seite weitergeleitet, wenn nein zur fehlerseite. Nebenbei werden noch sessionvariablen erstellt, damit man in den geheimen seiten z.B den usernamen ausgeben kann)

logout.php:
<?php

session_start (); // Session starten.

$user_eingeloggt = false;
session_register ("user_eingeloggt");

?>

<html>
<head>
<meta http-equiv="Refresh" content="1; url=index.php">
</head>

<body>
Sie werden zur Startseite weitergeleitet…
</body>
</html>
(Die Session wird zerstört und man wird zur startseite weitergeleitet)

code für alle geheimen seiten:
<?php

session_start (); // Session starten.

if ((session_is_registered ("user_eingeloggt")) AND ($user_eingeloggt)) {
// Code, wenn der Benutzer eingeloggt ist.
// z.B. Ausgabe der Webseite (echo „<html>...“)

echo "Das ist die geheime Seite";
echo "Registriert als:", $_SESSION["name"];
echo "<a href=\"logout.php\">Ausloggen</a>";

} else {
// Code, wenn der Benutzer nicht eingeloggt ist.
// z.B. Fehlermeldung
}

?>

( Dieser Code kommt auf alle geheimen Seiten. Er gibt den seiteninhalt aus wenn man eingeloggt ist, wenn man ausgeloggt ist gibt er eine Fehlermeldung aus.

Vielen Dank, markus


--------------------
Top
PMEmail Poster
Top
 
 
SwiZZ
#2 Geschrieben am: Mo 5.09.2005, 06:33 (+06:14)
Report PostQuote Post

AyomRank 5
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 247
Mitglied seit: 8.11.2004


Es sieht gut aus, ich habe dein script nicht getestet aber ich sehe ein logisches fehler.

In dein checkuser.php werden 3 sessions erstellt.
- das ist gut -- für mich wäre es genug die UID aber jeder seine eigene methode.
$_SESSION["name"] = $data[0];
$_SESSION["email"] = $data[2];
$_SESSION["status"] = $data[3];

Danach in dein code für geheimen seiten

if ((session_is_registered ("user_eingeloggt")) AND ($user_eingeloggt)) {
session_is_registered("user_eingeloggt") gibt false weil die user_eingeloggt session wurde in checkuser.php nicht erstellt.

checkuser.php
....
$_SESSION["status"] = $data[3];
$_SESSION["user_eingeloggt"] = true;

In dein code für geheimen seiten ist genug
if ($_SESSION["user_eingeloggt"]) {
//logged in
} else {
//not logged in
}

Übrigens, als tipp, würde ich dich empfehlen http://adodb.sourceforge.net/ ADODB für PHP damit bist du nicht von MySQL abhängig und kannst du deine seiten einfacher zu andere datenbanken portieren.

Gruss
Steven


--------------------
"I said it was an upgrade. I didn't say it was better."
Top
PMUsers Website
Top
 
cd_brenner
#3 Geschrieben am: Mo 5.09.2005, 14:03 (+07:29)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 95
Mitglied seit: 19.12.2004


Danke für deine Antwort.
Mir ist sowiso aufgefallen, dass du echt genial bist.

Der Fehler ist mir auch schon aufgefallen.
Das Login klappt ja, nur werde ich dann sofort wieder ausgeloogt, weils die Session nicht gibt.
Werd deinen Vorschlag jetzt ausprobieren.

Was mir nicht einleuchtet:
if ($_SESSION["user_eingeloggt"])

Könnte das nicht so heissen:
if ($_SESSION["user_eingeloggt"]==true)

Aber ich werds so lassen, denn du wirst es sicher besser wissen!!

THX Markus


--------------------
Top
PMEmail Poster
Top
 
SwiZZ
#4 Geschrieben am: Mo 5.09.2005, 20:06 (+06:03)
Report PostQuote Post

AyomRank 5
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 247
Mitglied seit: 8.11.2004


QUOTE
Was mir nicht einleuchtet:
if ($_SESSION["user_eingeloggt"])

Könnte das nicht so heissen:
if ($_SESSION["user_eingeloggt"]==true)


Beide sind richtig
Das ist ein boolean constructor wenn true dann, das kannst du nur mit boolean variablen machen.
Mit der zeit wirst du als programmierer faul und willst weniger eintippen wink.gif

Gruss
Steven


--------------------
"I said it was an upgrade. I didn't say it was better."
Top
PMUsers Website
Top
 
Alonso
WEPAX.com
#5 Geschrieben am: Di 6.09.2005, 16:52 (+20:45)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 514
Mitglied seit: 10.02.2005


Wenn du die Formulardaten wie du 1:1 in ein SQL-Query einbettest, öffnest du Tür und Tor für SQL-Injections. Das soll heissen, jeder kann beliebigen SQL-Code einschleusen. Was dadurch passieren kann, sollte klar sein..

Benutze z.B. mysql_escape_string um das Risiko zu umgehen.


--------------------
Top
PMEmail PosterUsers WebsiteICQ
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/8263

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Bitte um Projekteinschätzung (nextgen Browser MMOR AxelF 340 10 Di 18.11.2008, 15:13
Bitte um feedback - www.unji.de rlossin 667 21 Di 4.11.2008, 17:01
meineairline.de - Airlines bewerten sukram 157 3 Do 2.10.2008, 13:40
Bitte um Kritik zu einem Projekt Julian Vieser 360 5 Di 30.09.2008, 20:10
Feedback bitte - lingx Newssystem 2.0 lingxmedia 124 0 Do 28.08.2008, 20:04
Bitte um Feedback www.tickie.de Riwa 159 5 Mo 25.08.2008, 18:15
Bitte um Hilfestellung bei www.bali-tours.de Bali-Tours 581 16 Di 19.08.2008, 07:49
Bitte voten für eine Badewanne voll Bier Seth.Gecko 206 1 Do 31.07.2008, 08:08
Preismuli.de bewerten cashi01 1594 52 So 29.06.2008, 12:39
Unsere neue Seite ist online bitte bewerten sveny25 208 2 So 15.06.2008, 13:53




Anzeige - [Hier werben / Mediadaten]



Anzeigen


[Hier werben / Mediadaten]