einfaches login-script mit cookies PHP 

Status
Für weitere Antworten geschlossen.

happy_neo

Registered +
Registriert
Juni 2005
Beiträge
136
hey leute,

ich bin auf der such nach einem ganz einfachem login-system. es soll auf der startseite einfach nur ein passwort eigegeben werden und das wars. am besten wäre, wenn man noch ein hacken für cookies setzten kann. könnt ihr mir da weiterhelfen?

viele grüße
happy_neo
 
Google schon benutzt? Ne oder?

Such dir nen einfaches Script und ich passe es dir dann an so wie du es willst.
 
ja, habe google benutzt! sonst hätte ich das thema hier nicht neur eröffnet!

@h4rm0ny: habe dir eine pn geschrieben... habe ein passendes login-script das nur noch überarbeitet werden muss.

viele grüße
happy_neo
 
Hey...

Ein paar mehr Details wären vllt auch nicht schlecht. Du kannst ein Login System ja in vielen wegen realisieren. Soll es z.B. Text-Datei gebunden sein oder mySQL Datenbank ? Soll es MD5 oder Blowfish codiert werden... Und und und...

lg...
 
@raveshow: wow, also sogenau kenne ich mich damit auch nicht aus...

ich habe ein website die eigentlich nur für meinen freundeskreis bestimmt ist. d.h. ich will die seite mit einem simplen login schützen... siehe hier (http://www.gockelranch.de/). nur möchte ich, dass die leute sich nicht immer mit dem passwort anmelden müssen, sondern cookies setzen können. im beispiel fehlt das noch

... soetwas also suche ich.... h4rm0ny wollte irgendwie helfen, aber er meldet sich nicht mehr

hoffe ihr könnt weiterhelfen.
viel grüße
happy_neo
 
Dann poste doch mal bitte, was du harmony geschrieben hast, damit wir das ändern können. Dürfte sehr schnell von Statten gehen ;)

Gruß
Broken Sword
 
ok, poste heute abende die entsprchenden scripte... komme gerade nicht ran, bin gerade unterwegs. es sind glaube ich ein login.php und eine author.php oder so.

bis heute abend.
viele grüße
happy_neo

also, dass ist was ich bisher habe...

hierbei wird eine seite geschützt:
> ich logge mich mit benutzername und passwort ein
> anschließen logge ich mich wieder aus

die login.php
PHP:
 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
session_start();

$username = $_POST['username'];
$passwort = $_POST['passwort'];

$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);

// Benutzername und Passwort werden überprüft
if ($username == 'xxxxx' && $passwort == 'xxxxx') {
$_SESSION['angemeldet'] = true;

// Weiterleitung zur geschützten Startseite
if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
if (php_sapi_name() == 'cgi') {
header('Status: 303 See Other');
}
else {
header('HTTP/1.1 303 See Other');
}
}

header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/xxxx.php');
exit;
}
}
?>






 


 


[CENTER][TABLE]

[TR]

[td]
 


 


[CENTER]XXXXX


 


[TABLE]

[TR]

[td][RIGHT]xxxxx:[/RIGHT][/td]

[td][RIGHT]
[/RIGHT][/td]

[/TR]

[TR]

[td][RIGHT]xxxxx:[/RIGHT][/td]

[td][RIGHT][/RIGHT][/td]

[/TR]

[TR]

[td][CENTER]
[TABLE]

[TR]

[td] [/td]
[/TR]

[/TABLE]

[/CENTER][/td]

[/TR]

[/TABLE][/CENTER][/td]

[/TR]

[/TABLE]


© xxx xx xxxxx.xx[/CENTER]

die logout.php
PHP:
 session_start();
session_destroy();

$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);

header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php');
?>

die auth.php
PHP:
 session_start();

$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);

if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/xxxx.php');
exit;
}
?>

und in der seite, die geschützt wird, steht folgendes:
PHP:

hoffe ihr könnt etwas damit anfangen. nochmal für alle: ziel ist es, dass ich nur noch ein passwort eingeben muss und cookies setzen kann, damit die user nicht immer das pw eingeben müssen (hier ein beispiel, allerdings fehlt die cookie-funktion: gockelranch.de)

hoffe ihr könnt mir helfen.
viele grüße
happy_neo

hattet ihr nicht gesagt, ihr könnt das "schnell" und "einfach" überarbeiten? oder klappt es doch nicht?

grüße
happy_neo
 
Oh man, Geduld ist eine Tugend und ein Trippel-Post macht dich bei MeX nicht gerade beliebt oO

Also als erstes editierste den ersten PHP CODE über dem LogIn mit:
PHP:
 $hostname = $_SERVER['HTTP_HOST']; 
$path = dirname($_SERVER['PHP_SELF']); 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
session_start(); 
$username = $_POST['username']; 
$passwort = $_POST['passwort']; 



// Benutzername und Passwort werden überprüft 
if ($username == 'xxxxx' && $passwort == 'xxxxx') { 
$_SESSION['angemeldet'] = true; 
if(isset($_POST['usecookie'])) setcookie('001122',md5($passwort.'X'.$username),time()+3600); //hält ne stunde
// Weiterleitung zur geschützten Startseite 
if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') { 
if (php_sapi_name() == 'cgi') { 
header('Status: 303 See Other'); 
} 
else { 
header('HTTP/1.1 303 See Other'); 
} 
} 

header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/xxxx.php'); 
exit; 
} 
}
elseif(isset($_COOKIE['001122'])) {
if($_COOKIE['001122'] == md5('passwortXuser')) {
session_start();
$_SESSION['angemeldet'] = true;
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/xxxx.php'); 
exit();
}
}


?>
User und passwort musst natürlich noch verändern ;)


Danach HTML CODE am besten unter
Code:
[TR]

[td][RIGHT]xxxxx:[/RIGHT][/td]

[td][RIGHT][/RIGHT][/td]

[/TR]
Das hier einfügen:

Code:
[TR]

[td][RIGHT]Cookies benutzen:[/RIGHT][/td]

[td][RIGHT][/RIGHT][/td]

[/TR]

Gruß
Broken Sword
 
@broken sword: ja sorry, bin ein bisschen ungeduldig gewesen. nimms mir bitte nicht böse.
vielen dank für deine hilfe.

allerdings funktioniert das noch nicht so ganz...

1.) wenn ich nichts eingebe und nur auf login klicke, dann kommt folgendes:
PHP:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/login.php:1) in /home/www/login.php on line 5

2.) wenn ich die richtigen daten eintippe, also richtiger benutzername und username, dann kommt folgende meldung:
PHP:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/login.php:1) in /home/www/login.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at /home/www/login.php:1) in /home/www/login.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /home/www/login.php:1) in /home/www/login.php on line 25

3.) in der login.php steht etwas von "//hält ne stunde". heißt das, die cookies werden nur für eine stunde gespeichert?

4.) ist es möglich das man nur ein pw eingeben muss, ohne benutzername? so wie im beispiel: gockelranch.de

danke dir auf jeden fall für deine unterstützung, hoffe du bist mir fürs ungeduldigsein nicht böse...

grüße
happy_neo
 
session start muss immer als erstes im script ausgeführt werden -> sprich vor jedlicher Ausgabe! Am besten gleich nach
PHP:
 elseif(isset($_COOKIE['001122'])) {
if($_COOKIE['001122'] == md5('passwortXuser')) {
//session_start(); --> diese Zeile entfernen!
$_SESSION['angemeldet'] = true;
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/xxxx.php'); 
exit();
}
}
 
@gebi84: habe die zeile gelöscht, wie du geschrieben hast... bekomme allerdings die gleiche fehlermeldung...???

grüße
happy_neo
 
hier die login.php
PHP:
  $hostname = $_SERVER['HTTP_HOST']; 
$path = dirname($_SERVER['PHP_SELF']); 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
session_start(); 
$username = $_POST['username']; 
$passwort = $_POST['passwort']; 



// Benutzername und Passwort werden überprüft 
if ($username == 'test' && $passwort == 'test123') { 
$_SESSION['angemeldet'] = true; 
if(isset($_POST['usecookie'])) setcookie('001122',md5($passwort.'X'.$username),time()+3600); //hält ne stunde
// Weiterleitung zur geschützten Startseite 
if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') { 
if (php_sapi_name() == 'cgi') { 
header('Status: 303 See Other'); 
} 
else { 
header('HTTP/1.1 303 See Other'); 
} 
} 

header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/xxxx.php'); 
exit; 
} 
}
elseif(isset($_COOKIE['001122'])) {
if($_COOKIE['001122'] == md5('passwortXuser')) {
$_SESSION['angemeldet'] = true;
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/xxxx.php'); 
exit();
}
}


?>

und hier die fehlermeldung:
HTML:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/login.php:1) in /home/www/login.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at /home/www/login.php:1) in /home/www/login.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /home/www/login.php:1) in /home/www/login.php on line 25

> habe gesehen, wenn ich die seite dann aktualisiere, dann bin ich eingeloggt...

grüße
happy_neo
 
try this:

PHP:
//session start
session_start(); 

$hostname = $_SERVER['HTTP_HOST']; 
$path = dirname($_SERVER['PHP_SELF']); 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
$username = $_POST['username']; 
$passwort = $_POST['passwort']; 

// Benutzername und Passwort werden überprüft 
if ($username == 'test' && $passwort == 'test') { 
$_SESSION['angemeldet'] = true; 
if(isset($_POST['usecookie'])) {
setcookie('001122',md5($passwort.'X'.$username),time()+3600); //hält ne stunde
}

// Weiterleitung zur geschützten Startseite 
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/xxxx.php'); 
exit; 
} else {
echo 'Username oder Passwort falsch!';
}

} else if(isset($_COOKIE['001122'])) {
if($_COOKIE['001122'] == md5('passwortXuser')) {
$_SESSION['angemeldet'] = true;
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/xxxx.php'); //hier das geschützte File angeben!
exit();
}
}


?>
 
wenn ich jetzt die geschützte startseite öffne, um mich anzumelden, erscheint sofort folgende fehlermeldung:
HTML:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/login.php:1) in /home/www/login.php on line 4

will ich mich dann einloggen und gebe benutzername und pw an erscheinen folgende meldungen:
HTML:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/login.php:1) in /home/www/login.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /home/www/login.php:1) in /home/www/login.php on line 21
 
index.php
PHP:
// Pruefen ob der Browser Cookies akzeptiert
if(isset($_COOKIE['browser_check'])) {
$browser_check = true;
}elseif($_GET['check'] != 1) {

@setcookie("browser_check","set",time()+3600);
header("Location: index.php?check=1");


}

include("inc.php");

// Wenn $_GET['logout'] gesetzt ist dann loesche $_SESSION['success']
if(isset($_GET['logout'])) {

// Wenn $_COOKIE['login_cookie'] gesetzt ist dann loesche Cookie
if(isset($_COOKIE['login_cookie'])) @setcookie("login_cookie",0,time()-3600);

// Loesche SESSION['success']
unset($_SESSION['success']);

//Leite weiter zur index.php
header("Location: index.php");

}

// Wenn $_COOKIE['login_cookie'] gesetzt ist dann ueberpruefe den Inhalt und fuehre ggf. den auto login aus
if(isset($_COOKIE['login_cookie']) AND !isset($_POST['sender']) AND !isset($_GET['logout'])) {

// Hole den Inhalt aus dem Cookie
$cookie_inhalt = $_COOKIE['login_cookie'];

// Trenne benutzername und kennwort anhand des Trennzeichens @
$cookie_inhalt = explode("@",$cookie_inhalt);

// Gehe mit Cookiedaten in die login funktion
login($cookie_inhalt[0],$cookie_inhalt[1],1,2);

}

// Wenn Sumbit gepostet wurde 
if(isset($_POST['sender'])) {

// Wenn Cookie setzen "aktiv"
if($_POST['co'] == 'on') {

if(login($_POST['username'],$_POST['password']) == false) {

echo "Sry da hat was nicht geklappt";

}

}else {

if(login($_POST['username'],$_POST['password'],2,1) == false) {

echo "Sry da hat was nicht geklappt";

}

}

}



?>









if(isset($_SESSION['success'])) {

echo "drin
[URL='https://finale.freesoft-board.to/index.php?logout=true']Logout[/URL]";


}else {

?>



"; ?>
User : 

Pass : 

Cookie (ja/nein) : >

inc.php
PHP:
@session_start(); 

@mysql_connect("HOST","USER","PASS");
@mysql_select_db("DB");

function check_string($string) {

// erlaubte zeichen a-z,A-Z,0-9,-,_

if((preg_match('/^[a-zA-Z0-9\-\_]+$/',$string))) return true;

return false;

}


function login($benutzername,$kennwort,$modus=1,$cookie_gelesen=1) {

// ############# Konfiguration start #############

// ### Cookies ###

// Name des Cookies
$conf['cookie_name'] = "login_cookie";

// Ablaufzeit des Cookies (1 Monat)
$conf['cookie_zeit'] = time()+3600*24*7*4;

// Inhalt des Cookies (Wird im spaeterem Verlauf festgelegt)
$conf['cookie_inhalt'] = "";

// ### Sonstiges ### 

// Modus ( 1 = Session und Cookie setzen / 2 = Session ohne Cookie setzen )
$conf['modus'] = $modus;

// CookieSet ( 1 = Benutzername und Kennwort sind nicht aus einem Cookie entnommen /  $conf['cookie_gelesen'] = $cookie_gelesen;

// ### Variablen ###

// Benutzername
$vars['benutzername'] = htmlspecialchars(trim($benutzername));

// Kennwort
$vars['kennwort'] = htmlspecialchars(trim($kennwort));

// ############# Konfiguration ende #############

// Ist der Benutzername oder das Kennwort "leer" oder sind ungueltige Zeichen im String dann gib ein false wert zurueck 
if(strlen($vars['benutzername']) == 0 OR strlen($vars['kennwort']) == 0 OR !check_string($vars['benutzername']) OR !check_string($vars['kennwort'])) {

return false;

}else {

// Ist das Kennwort NICHT aus einem Cookie dann muss es mit md5 verschluesselt bzw. verhasht werden 
if($conf['cookie_gelesen'] == 1) {

$vars['kennwort'] = md5($vars['kennwort']); 

}

// SQL Abfrage ob benutzername und kennwort gleich den in der Datenbank sind 
$sql = @mysql_query("SELECT benutzer_id FROM tbl_benutzer WHERE benutzername = '".$vars['benutzername']."' AND kennwort = '".$vars['kennwort']."' ");

// Ist die Abfrage erfolgreich dann check den Modus 
if(@mysql_num_rows($sql) == 1) {


if($conf['modus'] == 1) {

// Cookie Inhalt wird aus benutzername@kennwort zusammengebaut 
$conf['cookie_inhalt'] = $vars['benutzername']."@".$vars['kennwort'];

// Cookie wird gesetzt 
@setcookie($conf['cookie_name'],$conf['cookie_inhalt'],$conf['cookie_zeit']);

// Session für den login wird gesetzt 
$_SESSION['success'] = true;

return true;

}else {

// Session für den login wird gesetzt 
$_SESSION['success'] = true;

return true; 

} 

}else { 

// SQL Abfrage hat nicht geklappt 
return false; 

}

}

}

Nicht selbstgeschrieben!!! GOOGLE ;)
aber ist ohne cookies! Cookies kann man ausnutzen wenn man weiß wie ;)
 
@c-r-k

erst mal vielen dank für deine hilfe. allerdings funktioniert es noch nicht so richtig... weiß auch nicht woran das liegt...
kannst du mir weiterhelfen? wenn ich die richtigen login-daten eingebe, dann passiert nichts (bzw. es kommt eben die fehlermeldung: Sry da hat was nicht geklappt).

weißt du woran das liegt?

grüße
happy_neo
 
Ich würde mal tippen, dass die mySQL-Datenbankabfrage fehlschlägt, hast Du denn die für das Script erforderliche Datenbanktabelle angelegt und einen entsprechenden User eingetragen?
 
@beinz: ne, habe ich nicht... wie mache ich das? ist es auch möglich, dass man keinen benutzer angibt? will ja meine hompage nur mit einem passwort schützen.

grüße
happy_neo
 
Wärs nich einfacher einfach n htaccess zu benutzen?

--> google
 
@Falves
wäre es, aber warum eifnach wenns auch schweirig geht?

@Happy Neo
Google mal nach MySQL Anlegen
 
ich habe jetzt eine php-methode gefunden, mit der ich meine homepage schützen kann. allerdings gibt es noch ein kleines problem. ich benutze ein fertiges gästebuch (von wortlab - burningbook). dies soll natürlch auch geschützt werden, damit man auch nicht mit dem direkten link den schutz umgehen kann.
nun nutze ich folgenden code für jede seite, die geschützt werden soll:

PHP:
 if($_SESSION['login'] == 1 or $_COOKIE['logged'] == 1) {
?>

 }
else header("Location: index.php");
?>

allerdings bekomme ich bei einer seite (handel sich um mein gästebuch) folgende fehlermeldung:

Code:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/www/burningbook/index.php(127) : eval()'d code on line 2

bei jeder anderen seite, bei dem ich den o.g. benutze funktioniert es...

könnt ihr mir weiterhelfen

viele grüße

happy_neo
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten