php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 05-05-2006, 14:49
gameco
 Newbie
Links : Onlinestatus : gameco ist offline
Registriert seit: May 2006
Ort: Marbella, Spanien
Beiträge: 22
gameco ist zur Zeit noch ein unbeschriebenes Blatt
Standard Erweitertes Login Script

Hallo,
Ich möchte gerne ein spezielles LoginScript programmieren.
Allerdings verfüge ich erst über Basiswissen in PHP.

Es soll wie folgt aussehen:
Als Grundlage habe ich mir ein ganz normales LoginScript programmiert (ohne irgendwelche Besonderheiten).
Das Problem ist nur, dass jedem Nutzer nur eine bestimmte Anzahl an Logins genehmigt werden soll und das der Account anschließend gesperrt wird.
Ich habe mir das so vorgestellt, dass ich eine separate Spalte in meiner Tabelle habe, in der der Wert bei jedem Login um 1 erhöht wird.
Ein weiteres Problem, dass ich noch habe ist, dass ich einen Schutz einbauen möchte, der es verhindert, dass jemand Ewigkeiten eingeloggt bleibt. Ähnlich wie z.B. bei einer Bank, wo man nach 15 Minuten Inaktivität ausgeloggt wird.

Ich hoffe, dass mir jemand helfen kann oder evtl. eine andere Ideen hat, um das zu realisieren.

Vielen Dank im Voraus

Gruß
gameco


PS: Eine Frage habe ich noch. Bei dem Login verwende ich Session. Werden diese automatisch gelöscht/unbrauchbar wenn man einfach das Browserfenster schließt oder muss man auf Login gehen.

Geändert von gameco (05-05-2006 um 14:52 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 05-05-2006, 15:07
boris-schneider
 Junior Member
Links : Onlinestatus : boris-schneider ist offline
Registriert seit: Apr 2006
Ort: Hessen/FFM
Beiträge: 208
boris-schneider ist zur Zeit noch ein unbeschriebenes Blatt
boris-schneider eine Nachricht über ICQ schicken
Standard Re: Erweitertes Login Script

Zitat:
Ich habe mir das so vorgestellt, dass ich eine separate Spalte in meiner Tabelle habe, in der der Wert bei jedem Login um 1 erhöht wird.
Ein weiteres Problem, dass ich noch habe ist, dass ich einen Schutz einbauen möchte, der es verhindert, dass jemand Ewigkeiten eingeloggt bleibt. Ähnlich wie z.B. bei einer Bank, wo man nach 15 Minuten Inaktivität ausgeloggt wird.e
1.
PHP-Code:
UPDATE table SET login_count=login_count+
2. Um zu prüfen wie lange es her ist das sich jemand eingelogt hatte musst du nur bei jedem login den Zeipunkt festhalten und anderswo den aktuellen zeitpunkt aufrufen und diesen mit dem loginzeitpunkt abgleichen, eine einfache abfrage mit <= löscht dann die jeweilige Session in der Datenbank (zb. bei online user) und initiiert beim user dann ein session_unset & session_destroy.

Geändert von boris-schneider (05-05-2006 um 15:10 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 05-05-2006, 15:12
gameco
 Newbie
Links : Onlinestatus : gameco ist offline
Registriert seit: May 2006
Ort: Marbella, Spanien
Beiträge: 22
gameco ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo boris-schneider,
Vielen Dank für deine schnelle Antwort.
Eine Frage hätte ich noch zu 1.
Kann ich das dann beim Login einfach über If - else abfragen?

Bei 2. habe ich ehrlich gesagt keine Ahnung, was du meinst.
Es wäre nett, wenn du mir das noch einmal erklären könntest.

Ich bin wie gesagt noch am lernen und verfüge leider noch nicht über weit reichendes Wissen.

Gruß
gameco
Mit Zitat antworten
  #4 (permalink)  
Alt 05-05-2006, 15:19
boris-schneider
 Junior Member
Links : Onlinestatus : boris-schneider ist offline
Registriert seit: Apr 2006
Ort: Hessen/FFM
Beiträge: 208
boris-schneider ist zur Zeit noch ein unbeschriebenes Blatt
boris-schneider eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von gameco
Ich bin wie gesagt noch am lernen und verfüge leider noch nicht über weit reichendes Wissen.
Ich auch nicht

Du kannst das klaro direkt beim login abfragen, so wie du ja eh das Passwort via Username aus der Datenbank holst, holst du gleich auch noch den count wert mit raus und gleichst diesen ab, am besten, "bevor" du den passwort vergleich machst!

zu 2 nochmal: Nachdem der User sich erfolgreich eingeloggt hat, machst du direkt ein UPDATE um den Zeitpunkt fest zu halten wann der login statt gefunden hat. Jetzt fügst du ein Script ein "am besten in ein globales Script das bei jedem Script aufrufe der seite mit- aufgerufen wird und bringst dort am besten eine selbstgeschriebende funktion unter die den momentanen Zeitpunkt mit dem login zeitpunkt vergleicht und bei überschreitung die Session des Users zerstört.

Ist besser als die Session zu begrenzen oder sich auf cookies zu verlassen!
Mit Zitat antworten
  #5 (permalink)  
Alt 08-05-2006, 00:09
gameco
 Newbie
Links : Onlinestatus : gameco ist offline
Registriert seit: May 2006
Ort: Marbella, Spanien
Beiträge: 22
gameco ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,
Vielen Dank für die Hilfe / Anregungen.
Ich werde dann mal versuchen das umzusetzen.
Wenn noch Probleme sind, melde ich mich wieder.

Gruß
gameco
Mit Zitat antworten
  #6 (permalink)  
Alt 08-05-2006, 14:53
gameco
 Newbie
Links : Onlinestatus : gameco ist offline
Registriert seit: May 2006
Ort: Marbella, Spanien
Beiträge: 22
gameco ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,
ich habe jetzt mal angefangen das Script zu erstellen.
Dabei bin ich aber auf ein paar Probleme gestoßen.

Wenn ich nur die ganz normale Passwort Abfrage mit einem anschließenden "print()" Befehl habe funktioniert alles bestens.
Allerdings sobald ich über
Code:
header("Location: http://www.irgendwas.com/");
weiterleiten möchte kommt follgende Fehlermeldung:
PHP-Code:
WarningCannot modify header information headers already sent by (output started at 
/www/htdocs/v133215/www.marbella-pc.com/login.php:8in /www/htdocs/v133215/www.marbella-pc.com/login.php on line 21 
Ein weiteres Problem, dass ich habe ist die Sache mit der Zugriffsbeschränklung. Dort wird mir dann folgendes angezeigt:
PHP-Code:
Parse errorsyntax errorunexpected $end in /www/htdocs/v133215/www.marbella-pc.com/login.php on line 37 
Was ich dar gar nicht verstehe, ist das in Zeile 37 lediglich das </html> steht.

Hier noch einmal mein ganzer Code:
PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Login</title>
</
head>
<
body>
<
script language="php">
$username=$_POST['username'];
$password=$_POST['password'];
$db=mysql_connect("localhost","xxx","xxx");
mysql_select_db("database");
$db_request="Select * FROM user WHERE username LIKE '";
$db_request.=$username;
$db_request.="'";
$result=mysql_query($db_request);
$found=mysql_num_rows($result);
if(
$found==1) {
    
$line=mysql_fetch_row($result);
    if(
$line[4]==0) {
        print(
"You reach your limit of access. Please contact us to get more.");
            if(
$password=$line[2]) {
                
$update="UPDATE user SET access=access-1 WHERE username LIKE '$username'";
                
$send=mysql_query($update);
                print(
"OK");    
            }
    else {
        print(
"Your Password is wrong, please click <a href='index.php'>here</a> to try again");
        }
        }
else {
    print(
"Your Username is wrong, please click <a href='index.php'>here</a> to try again");
    }
mysql_close($db);
</script>
</body>
</html> 
Ich würde mich freuen, wenn mir jemand weiterhelfen würde.
Hab echt keine Ahnung mehr, woran es liegen kann.

Gruß
gameco
Mit Zitat antworten
  #7 (permalink)  
Alt 08-05-2006, 15:16
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von gameco
Allerdings sobald ich über [...] weiterleiten möchte kommt follgende Fehlermeldung:
Warning: Cannot modify header information - headers already sent
Schau dir bitte den verflixten Sticky Thread hier im Forum dazu an - das blöde Thema wurde schon unzählige Male diskutiert, und das Manual erklärt dir auch ganz ausführlich, was du bei Benutzung von header() nicht machen darfst ...!

Zitat:
Ein weiteres Problem, dass ich habe ist die Sache mit der Zugriffsbeschränklung. Dort wird mir dann folgendes angezeigt:
Parse error: syntax error, unexpected $end [...]
unexpected $end deutet fast immer darauf hin, dass du irgendwo vorher vergessen hast, einen mit { eröffneten Anweisungsblock auch mit einer } wieder zu schließen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 09-05-2006, 00:11
gameco
 Newbie
Links : Onlinestatus : gameco ist offline
Registriert seit: May 2006
Ort: Marbella, Spanien
Beiträge: 22
gameco ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo wahsaga,
sorry, habe in dem Fall nicht an die Suche gedacht.
Problem ist jetzt aber klar.

Gibt es eine andere Möglichkeit einer Weiterleitung (außer JavaScript)?

und eine weiteres Problem habe ich noch.
Ich habe eigentlich jetzt alles nach meinen Wünschen fertig.
Das einzige, was nicht geht, ist das meine Datenbank aktualisiert wird (verbleibene Zugriffe und login-Zeit).

Es wird keine Fehlermeldung ausgegeben und ich kann den geschützten Bereich auch erreichen.

Hier einmal mein ganzer Code aus der Login-Datei, da ich nicht weiß, wo genau der Fehler liegt (bei dem SQl-Update oder doch wo anders)

PHP-Code:
<script language="php">session_start();</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Login</title>
</head>
<body>
<script language="php">
$username
=$_POST['username'];
$password=$_POST['password'];
require (
'connect.inc');
$login_time=time();
$db mysql_connect($dbHost$dbUser$dbPass) or die("Verbindung zum Server nicht hergestellt!<br>");
mysql_select_db("v133215");
$db_request="Select * FROM user WHERE username LIKE '";
$db_request.=$username;
$db_request.="'";
$result=mysql_query($db_request);
$found=mysql_num_rows($result);
if(
$found==1) {
    
$line=mysql_fetch_row($result);
    if(
$line[4]<=0) {
        print(
"You reach your limit of access. Please contact us to get more.");
        die();            }
            if(
$password==$line[2]) {
                
session_register('username');
                
$update="UPDATE user SET access=access-1, login_time='$login_time' WHERE username LIKE '$username'";
                
$send=mysql_query($update_access);
                print(
"Click <a href='save_site.php>here</a>");    
            }
    else {
        print(
"Your Password is wrong, please click <a href='index.php'>here</a> to try again");
        }
        }
else {
    print(
"Your Username was wrong, please click <a href='index.php'>here</a> to try again");
    }
mysql_close($db);
</script>
</body>
</html> 
Vielen Dank für die Hilfe

Gruß
gameco


PS: Es ist so gedacht, dass ich in der Admin-Oberfläche die max. Anmeldungen angegeben werden und der Wert bei jedem Login -1 ist. Und bei der Zeit wird beim Login einmal die Zeit in die DB eingetragen. Jede weitere Seite 3600 (1Std.) zu der Zeit und vergleicht sie dann mit der Aktuellen.
Mit Zitat antworten
  #9 (permalink)  
Alt 09-05-2006, 08:44
brusau
 Newbie
Links : Onlinestatus : brusau ist offline
Registriert seit: Apr 2004
Beiträge: 42
brusau ist zur Zeit noch ein unbeschriebenes Blatt
Standard

echo $update;

Dann siehst du was der immer zur Datenbank sendet und siehst ob der Code richtig ist.


$line[4] wäre besser wenn du den Feldnamen nutzt.
Der Übersicht halber.


Für deine Last_Action musst du immer die Zeit ändern auf jeder Seite au der der user ist oder wann immer er eine Action macht.
Ist diese letzt action länger als 1 Std her lösche die Session
Mit Zitat antworten
  #10 (permalink)  
Alt 09-05-2006, 11:52
gameco
 Newbie
Links : Onlinestatus : gameco ist offline
Registriert seit: May 2006
Ort: Marbella, Spanien
Beiträge: 22
gameco ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo brusau,
hab den Fehler gefunden.
Das Problem war, dass ich die Variable $update erstellt habe, dann aber via mysql_query($update_access) senden wollte.
Hatte es einfach vergessen zu ändern, als ich die Zeit und die Zugriffe in eine Variable gepackt hatte.
Das fetch_row lasse ich so, da ich eh nur 5 Spalten habe und es somit übersichtlich genug für mich ist.
Aber Danke für den Tip.

Wie meinst du dass mit "Session löschen"?

Ich habe das bis jetzt so gelöst:
PHP-Code:
$login_time=$line[3];
$time=time();
$time+=3600;
if(
$login_time>$time) {
    print(
"Your Session is closed, please click <a href='index.php'>here</a> to login.");
    die(); } 
Gibt es da evtl. eine bessere Lösung?

Gruß
gameco
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Projektmanagement Damals und Heute
Projektmanagement Damals und HeuteWerfen Sie einen Blick auf das, was sich verändert hat, und entdecken Sie, wo die Zukunft dieses Gebietes hinsteuert.

18.01.2021 | Berni

Arbeitsmanagement-Tools
Arbeitsmanagement-ToolsWarum jedes Team Arbeitsmanagement-Tools benötigt. Man schätzt, dass 25% eines durchschnittlichen Mitarbeiter-Tages durch ineffiziente Arbeit vergeudet werden.

11.12.2020 | Berni


 

Aktuelle PHP Scripte

Formmailer Bootstrap 4

Mit dem Formmailer kann man sich eMails über seine Seite zukommen lassen.

08.07.2021 arne-home | Kategorie: PHP/ Formular
Fehlerseite Bootstrap 4

Bei Aufruf einer nicht existierenden Seite, teilen Sie Besuchern mit einer eigenen Fehlerseite mit, dass die gewünschte Seite nicht gefunden wurde. Die eigene Fehlerseite sollte dasselbe Design wie die Website haben. Zudem sollte ein Link zur Startseite a

04.07.2021 arne-home | Kategorie: PHP/ Counter
Upload Bootstrap 4

Mit dem PHP - Uploadscript kann man schnell und einfach Bilder und Dateien auf den Webserver hochladen.

04.07.2021 arne-home | Kategorie: PHP/ File
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:41 Uhr.