wo ist mein denkfehler?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beitrag
benutzername
break
datei
daten
fehler
festgelegten daten
funktion
kramen
login
pa
pawort
schreibe
seiteninhalt
session
test
timeout
username
variable
vorteil
-
ich schreib mal mein acp ok???
deines ist n?mlich ein bisschen *r?usper* umst?ndlich
ich hab eine login.php:
<form action="intern_login.php" method="post" enctype="text">
<table>
<tr><td>Passwort</td><td><input name="pass" type="password" size="40" maxlength="60" /></td></tr>
<tr><td /><td><input type="hidden" name="ja" value="ja" /><input type="submit" value="Einloggen" /></td></tr>
</table>
</form>
dann eine intern_login.php:
if($_POST['pass'] == "deinpasswort" and $_POST['ja'] == "ja")
{ fwrite(fopen("login.txt", "w"), "1", 1);
?>
<form action="intern_acp.php" method="post" enctype="text"><input type="hidden" name="ja" value="ja" /><input type="submit" value="Login erfolgreich" /></form>
<?php
}
else
{
echo 'Login fehlgeschlagen<br /><a href="seite_intern.php">Zur?ck</a>';
}
bei allen anderen acp seiten kommt dann das hier hinein:
if($_POST['ja'] == "ja" and fread(fopen("login.txt", "r"), 2) == 1)
{
//Der Seiteninhalt
}
else
{
echo 'Login fehlgeschlagen<br /><a href="...">Zur?ck</a>';
}
und die Logout Datei siht so aus:
fwrite(fopen("login.txt", "w"), "0", 1);
echo "Logout erfolgreich";
ACHTUNG: In jedem Formularelement was zum absenden benutzt wird musst du:
<input type="hidden" name="ja" value="ja" />
einf?gen! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ok, nun hab ich es ein wenig verstanden.
aber kannst du mir noch sagen wie ich aus:
<? fwrite(fopen("login.txt", "w"), "0", 1); echo "Logout erfolgreich";?>
ein link machen kann?
oder wie das geht, wenn man den browser dicht macht, dass 0 dann wieder eintragen wird?!
Kann man die "1" oder "0" nicht eigentlich auch in ne Cookie schreiben, weil wenn ich das richtig verstanden hab, werden t?glich meherer Leute auf die Page gehen und ich versteh nicht wie das dann sein soll?! -
du kannst es speichern wo du willst!
Wichtig ist bei der Methode nur dass man auf Ausloggen klickt! (Oder das Browserfenster schlie?t was aber nicht sooooo sicher ist) -
Danke, habs nun !!
das war eine schwere geburt!
aber nun gehts so wie ich das will, auch wenn man immer auf "logout" klicken muss, aber das werden wohl irgendwann schon drauf haben! ^^
Danke noch mal! -
mit sessions hab ichs Probiert aber ich bin zu dumm dazu! ^^
Cookies hmmm, mansche Browser lassen keine "Kekse" zu! -
ku-shi schrieb:
Warum macht Ihr das mit Textdateien?
Das ist do total langsam und umst?ndlich.
Schreibe den Kram in den Qookie/Session.
Vorteil:
Geht schnell, Cookies/Sessions haben Verfallsdsatum, d.h. man muss sich nicht zwingend ausloggen.
@ku-shi: sauber, mit deiner l?sung bist ne bisschen sp?t dran, aber wenn du willst kannst du das uns ja noch erkl?ren. w?re super nett! -
login.php:
if(!isset($_POST['submit'])) { ?> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post"> <table> <tr> <td>Benutzer</td> <td><input name="user" type="text"></td> </tr> <tr> <td>Passwort</td> <td><input type="text" name="pass"></td> </tr> <tr colspan="2"> <td><input type="submit" value="Einloggen"</td> </tr> </table> </form> <?php } else { if($_POST['user']==$username and $_POST['pass']==$passwort) { session_start(); $_SESSION['login'] = 1; } else { unset($_POST['submit']); ?> <script type='text/javascript'> document.location.href = <?php echo $_SERVER['PHP_SELF'] ?>; </script> <?php } }
Bei den zu sch?tzenden Seiten kommt folgendes hin:
session_start(); if(!isset($_SESSION['login'])) echo 'Bitte einloggen'; else { if(!$_SESSION['login']) echo 'Bitte einloggen'; else { ?> Dein Seiteninhalt <?php } }
So, das habe ich jetzt man so auf die Schnelle geschrieben. Teste das mal und bei Problemen verbessere ich es noch.
Wenn Du das Script auf Lima-City benutzt, klappt es ohne Weitergabe der Session-ID, ansonsten kann es sein, dass Du die Session-ID immer an die Links anh?ngen musst, oder Du nutzt Cookies, dann ist das nicht n?tig.
Beitrag ge?ndert am 30.04.2006 13:16 von ku-shi -
schon mal super, nur ich das passwort nicht kenne und ich keine ahnung hab, wieso es nicht auf die n?chste seite geht?!!?
kannst du das noch irgendwie verbessern oder/und erkl?ren?!
Danke!! -
!!SOS!!
ich hab es imemr noch nicht so ganz gecheck, das mit den session.
ich hoffe das liest noch mal einer, hier.
bitte baut mir einer ein login mit session in folgenden code ein, danke!!!
$id = $_GET["id"]; switch ($id) { case 0: ?> <p>0</p> <? break; case 1: ?> <p>1</p> <? break; case 2: ?> <p>2</p> <? break; case 3: ?> <p>3</p> <? break; } ?>
-
Du benutzt mein Login-Script nur als Kopf der Datei. Darunter kannst du alles schreiben ,was Du willst.
Somit wird ganz oben auf der Seite das Formular angezeigt. Wenn Du willst, dass man nach anmeldung automatisch weitergeleitet wird, kannst Du das mit folgendem Java-Script-Befehl machen:
<script type='text/javascript'>
document.location.href = 'seite.php';
</script>
Dieses Script f?gst Du fann einfach unter
$_SESSION['login'] = 1;
ein. Zu deinem Case-Switch:
Was willst Du denn damit machen? Erkl?r mir das mal bitte genau, ich hab das nicht ganz verstanden. -
Ich will den Case-Switch nutzen damit das so wenig php-dateien werden wie m?glich!
Meine HP ist ?ber 150 Dateien gro? und manchmal frag ich mich einfach so das eine oder andere ist!?!
Geht das oder gibt es andere M?glichkeiten? -
da man in diesen thema nicht "editen" kann, muss ich das so machen.
@ku-shi: ich frag mich immer noch wo das passwort steht!? weil ohne das kann man sich nicht einlogen oder? -
Edit-Funktion funktioniert!
Ich w?rde Dir gerade wegen der ?bersichtlichkeit raten, getrennte Dateien zu schreiben. Benutze doch einfach Ordnerstrukturen.
@Passwort:
Das steht in $passwort.
Ich wei? nicht, wo Du es hernimmst, also entweder schreibst Du eines per Hand rein, oder Du l?dst es aus einer Dakenbank. Das wirst Du sicher hinbekommen, oder?
@Case-Switch:
Wenn es reicht, sich einmal eizuloggen, damit alle Seiten angezeigt werden k?nnen, kannst Du das einfach so machen:
if(!isset($_SESSION['login']))
{
echo "Bitte einloggen.";
}
else
{
if(!$_SESSION['login'])
{
echo "Bitte einloggen.";
}
else
{
switch($id) {
case 0:
.
.
.
}
}
}
Wenn man f?r jede Seite ein getrenntes Login ben?tigt, d.h. manche User nur auf Seite 1, manche nur auf Seite 2 usw. d?rfen, dann muss das ein bisschen anders aufgebaut werden:
Dazu schreibst Du zus?tzlich zum Login-Script noch
<input type="hidden" name="site" value="
<?php echo $seite ?>
">
wobei Du in $seite schreibst, auf welche Seite der User Zugriff haben soll. (In Form von 'seite0' oder 'seite1' usw.)
Dann schreibst Du anstatt
$_SESSION['login'] = 1
folgendes:
$_SESSION[$_POST['seite']] = 1;
So, danach schreibst Du deinen Case-Switch folgenderma?en um:
switch ($id) {
case 0:
?>
if(!isset($_SESSION['seite0']))
{
echo "Bitte einloggen.";
}
else
{
if(!$_SESSION['seite0'])
{
echo "Bitte einloggen.";
}
else
{
<p>0</p>
}
}
<?php
break;
und das machst f?r jeden Case so, nur dass du bei 1 dann 'seite1' anstatt 'seite0' in die Session-Variable schreibst. Bei Case 2 kommt dann 'seite2' rein usw.
Beim logout brauchst Du trotzdem einfach nur 'session_destroy();' schreiben, falls Du ein Logout-Script schreiben willst.
Ich empfehle Dir aber trotzdem, getrennte Dateien zu erstellen.
MfG -
ich seh die edit-funktion nicht, weil die zu weiter rechts ist.
es w?rde reichen, wennn man sich einmal einlogen w?rde um die anderen seitezu sehen.
kannst du das bitte noch ein wenig n?hre eingehen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage