LogIn Problem + Framesets
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
bar
beitrag
erste
formular
fram
login
meinst
movie
offen gru
pa
pawort
session
show
sicheres login
transitional
username
verbesserungsvorschlag
wagen
zusammenhang
-
Hallo Leute!
Möchte gerne ein Browsergame programmieren.
Als erstes brauch ich ja da mal ne login.
Das Problem: Die Spieler müssen auf einen Link klicken, um in den Gamebereich zu kommen. Dieser Bereich besteht aus 4 Frames.
Das muss ich ja irgendwie absichern.
Hat jemand eine Idee? (MySQL, MD5, Sessions, Cookies) ?
Danke für eure Hilfe!
x-black -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Sry, aber wenn du noch nicht mal weißt, wie man mit php ein sicheres LogIn-Script programmiert, denke ich mal, du solltest dich nicht gleich an ein Browsergame wagen...
Wenn doch, dann schau mal da:
http://php-einfach.de/tuts_php_login.php
http://php-einfach.de/tuts_php_login_sessions.php
http://php-einfach.de/tuts_php_login_sessions_dateien.php -
ich versteh nicht ganz was du meinst ?!
meinst du das man die login.php nur
im Hauptframe aufrufen kann oder was ?
oder das nach dem Login in allen Frames
auch eindeutig erkennt bar ist das man
eingeloggt ist ...
ähm also 1. bin ich grundsätzlich gegen
Frames... aber gut ... was funktionieren
müsste sind Sessions ... die kannst
dann in jedem Frame abrufen oder im
Frameset selbst ... Wie du wilslt ...
Trotzdem würde ich dir zu Tabellen (ich
weiß ist auch nicht mehr das ware, aber
mit <div>s wird kompliziert und wer will
das schon) ... Also ja ... stehen für
weiter Fragen offen..
gruß -
Framsets suxx... und wenn du es mit php arbeitest empfehle ich dir isset
Im zusammenhang mit Divs sehr gut geeignent
nen Beispiel von mir:
<div>
xxx
</div>
<div>
if (isset($_GET['show']))
{
$show= $_GET['show'];
}
else
{
$show="";
}
if ($show== "")
{
echo "<a href ='index.php?show=add'>Movie eintragen </a><br />";
echo "<a href ='index.php?show=delete'>Movie löschen </a><br />";
}
if ($show== "add")
{
include ('add_movie.php');
}
if ($show== "add_in")
{
include ('add_movie_in.php');
}
if ($show== "delete")
{
include ('add_movie_in.php');
}
if ($show== "movie_info")
{
include ('movie_info.php');
}
</div>
nur der 2. div wird immer geändert.. der head zb bleibt immer gleich
-
Ich glaub, du hast nicht so ganz verstanden, was x-black will... Nämlich einen zuverlässigen Passwortschutz... Und ausserdem würde ich die ganzen if's durch eine case-Abfrage austauschen
Ich glaub, so müsste das was werden:
index.php:
<?php
include "#config.inc";
//Eingeloggt?
$logged = false
//LogOut? Als LogOut-Link musst du dann einfach "index.php?logout=true" nehmen
if (isset($_GET['logout']) && ($_GET['logout'] == "true")) {
setcookie ("user", "");
setcookie ("pass", "");
} else {
//Bereits eingeloggt?
if (isset($_COOKIE['user']) && (isset($_COOKIE['pass']))) { $user = $_COOKIE['user'];
$pass = $_COOKIE['pass'];
if (($pass == $pass_ok) && ($user == $user_ok)) $include = true;
//LogIn-Formular ausgefüllt?
} else if (isset($_POST['user']) && isset($_POST['pass'])) { $user = $_POST['user']; $user = md5($user); $pass = $_POST['pass']; $pass = md5($pass); if ($user == $user_ok && $pass == $pass_ok) { $include = true; setcookie ("user", $user); setcookie ("pass", $pass); }
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>
<title></title>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
</head><body>
<?php
//Wenn $include == true, das Frameset einbinden, sonst das Formular für die Kennwortabfrage anzeigen
if ($include == true) { include "#frameset.htm";
} else echo "<form action=\"index.php\" method=\"post\">\n<table border=0 cellspacing=2 cellpadding=0><tr><td>\n<div>Name:</div></td><td><input name=\"user\"><br></td></tr>\n<tr><td><div>Passwort:</div></td><td><input name=\"pass\" type=\"password\"><br></td></tr>\n<tr><td><input type=\"submit\" name=\"submit\" value=\"OK\"></td></tr></table>\n</form>\n"; ?>
</body></html>
#config.inc:
<?php
$user_ok = "USERNAME";
$pass_ok = "PASSWORT";
?>
#frameset.htm:
Deine Frameset-Seite...
Du musst jetzt nur noch an den Anfang jeder Seite in deinem Frameset ein kleines Script zum prüfen, ob man eingeloggt ist, notieren:
<?php
include "#config.inc"
//Cookie?
if (!isset($_COOKIE['user']) || !isset($_COOKIE['pass']) echo "<font>Bitte neu einloggen!</font";
else {
//Richtiges Passwort im Cookie gespeichert?
if ($_COOKIE['user'] != md5($user_ok) || $_COOKIE['pass'] != md5($pass_ok)) echo "<font>Bitte neu einloggen!</font";
else {
?>
--- Dein ganz normaler Quelltext ---
<?php
}
}
?>
Wenn du mehrere User haben willst, was bei einem Browsergame sehr warscheinlich ist, sollte es kein Problem mehr darstellen, den Code ein bisschen unzuschreiben und das ganze mit MySQL zu verwirklichen ;)
Ich hab den Code noch nicht ausprobiert, aber er müsste eigentlich funktionieren...
PS: Verbesserungsvorschläge erwünscht :P
Beitrag geaendert: 25.1.2007 17:21:31 von timo1 -
Danke Timo.
Das mit Cookies könnte funktionieren.
Probiere das ganze am Wochenende aus.
x-black -
NP^^ Wenn du etwas nicht verstehst, schreib mir einfach 'ne PN
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage