Login Bereich Generator
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzeigen
array
benutzer
datei
datenbank
ende
formular
kennung
login
meldung
modus
not
null
set
sitzung
update
url
verbindung
verzeichnis
zugriff
-
Hey Leuts
http://www.lima-city.de/tutorials/log-in-ohne-mysql
habe versucht mir ein Login bereich herzustellen. doch erfolg los
gibt es Genarator Homepages die mit anmeldung alles genarieren?
Google hilft nicht weiter.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mir sind für diese Art des Loginsystems keine Generatoren bekannt.
Kannst du dein Problem etwas genauer beschreiben? Eigentlich scheint alles im Tutorial erklärt zu sein... -
Es kommt darauf an, was du machen willst, evtl. reicht sogar ein .htaccess Passwortschutz.
Anleitung
Den "Unix-Pfad" bekommst du hier:
Verwaltung » Domain
Beitrag zuletzt geändert: 24.3.2010 22:07:39 von thomasba -
hallo
ich habe die scripts dafür du musst sie nur noch anpassen. benötigt sind die Felder in der mysql datenbank:
CREATE TABLE user (
ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
username CHAR(50) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
kwort CHAR(50) NOT NULL, // ohne md5 verschlüsselung
admin TINYINT(2) DEFAULT '-1' NOT NULL, //-1=user 1=admin //also musst du dies später ändern weil du ja ein admin bist
beschreibung CHAR(255),
kennung CHAR(50),
zeit DATETIME,
PRIMARY KEY ('ID'),
UNIQUE (username)
);
und hier ist das script cl_db.php:
<?php
class db extends db_mysql
{
PROTECTED $db_user ='xxx';
PROTECTED $db_pass ='xxx';
PROTECTED $db_server ='xxx';
PUBLIC function __construct($datenbank = 'xxx')
{
parent::__construct($datenbank);
}
}
?>
hier ist das script cl_db_mysql.php:
<?php
class db_mysql
{
PROTECTED $db_user;
PROTECTED $db_pass;
PROTECTED $db_server;
PROTECTED $insert_id;
PROTECTED $affected_rows;
PROTECTED $num_rows;
PROTECTED STATIC $con;
PROTECTED STATIC $queries;
PROTECTED STATIC $verbindungen;
PUBLIC function __construct($datenbank)
{
if(!is_ressource(self::$con))
{
self::$con = mysql_connect
($this->db_server,$this->db_user,$this->db_pass);
++self::$verbindungen;
}
mysql_select_db($datenbank, self::$con)
OR die('Fehler beim Verbinden zur Datenbank');
}
PUBLIC function prepare($var)
{
return mysql_real_escape_string($var);
}
Public function execute($sql)
{
++self::$queries;
$erg = mysql_query($sql, self::$con);
mysql_error();
$this->affected_rows = mysql_affected_rows(self::$con);
$this->num_rows = @mysql_num_rows($erg);
if($this->num_rows)
{
$i=1;
while($array[$i] = mysql_fetch_assoc($erg)) {++$i:}
mysql_free_result($erg);
unset($array[$i]);
return $array;
}
$this->insert_id = mysql_insert_id(self::$con);
return true;
}
PUBLIC function insert_id()
{
return $this->insert_id;
}
PUBLIC function affected_rows()
{
return $this->affected_rows;
}
PUBLIC function num_rows()
{
return $this->num_rows;
}
PUBLIC function queries()
{
return self::$queries;
}
PUBLIC function verbindungen()
{
return self::$verbindungen;
}
}//Ende Klasse
?>
und hier ist die letzte klasse cl_zugriff.php:
<?php
class zugriff
{
PROTECTED $idle=10;//Leerlaufzeit
PROTECTED $umleitenlogout="<a href=\"ziel.php\" target=\"_top\">Weiter</a>";//Umleitungsziel
PROTECTED $umleitenlogin="<a href=\"ziel.php\" target=\"_top\">Weiter</a>";//Umleitungsziel
PRIVATE $modus;
PUBLIC function __construct($modus=1, $mindestrecht=1)
{
//modus 1 Zugriffsrecht testen
//modus 2 Login anzeigen
//modus 3 Logout anzeigen
//$mindestrecht==1 //normale Seite mit Schutz
//$mindestrecht==2 //Admin Seite
$this->modus=$modus;
if($_POST['sentzu']==2)
{
$ret = $this->logout();
$ret[1].="<br>".$this->umleitenlogout;
}
if($_POST['sentzu']==1)
{
$ret = $this->testlogin();
if($this->modus==2 AND $ret[0])
{$ret[1].="<br>".$this->umleitenlogin;}
}
if($this->modus==1)
{
$ret=$this->testrecht($mindestrecht);
}
if($ret[0])
{
$this->schreibrecht();
}
if(!$ret[0] OR $this->modus==2 OR $this->modus==3)
{
echo "<html><head><title>LOGIN/LOGOUT</title></head><body>";
echo "<div align=center>";
if($ret[1]){echo "<h2><font color=red>".$ret[1]."</font></h2>";>}
}
if(!$ret[0] AND $this->modus!=3)
{
echo $this->formlogin();
}
if(!$ret[0] AND $this->modus==3)
{
echo $this->formlogout();
}
if(!$ret[0] OR $this->modus==2 OR $this->modus==3)
{
echo "</div></body></html>";
die();
}
}//Ende Konstruktor
PROTECTED function testlogin()
{
$db = new db();
$result=$db->execute("SELECT kwort, ID, kennung, (UNIX_TIMESTAMP()-UNIX_TIMESTAMP(zeit)) as time, zeit FROM user WHERE username='".$db->prepare($_POST['username')."' ");
if($db->num_rows() != 1 )
{
$meldung="Bitte kontrollieren Sie Ihren Benutzernamen";
return array(FALSE, $meldung);
}
if($_POST['kwort'] != $result[1]['kwort'])
{
$meldung="Bitte kontollieren Sie Ihr Kennwort";
return array(FALSE, $meldung);
}
if($result[1]['kennung']== session_id() AND $result[1]['time']/60 < $this->idle)
{
$meldung.="Sie sind bereits eingeloggt als ".$this->username();
$_SESSION['sit']=session_id();
$_SESSION['IDuser']=$result[1]['ID'];
return array(FALSE, $meldung);
}
if($result[1]['kennung'] !='' AND $result[1]['time']/60<$this->idle)
{
$meldung.="Es ist bereits jemand mit Ihrem Benutzernamen eingeloggt";
return array(FALSE, $meldung);
}
$db1= new db();
$sql="UPDATE user SET ";
$sql.=" zeit= now(), ";
$sql.=" kennung='".session_id()."' ";
$sql.=" WHERE ID='".$result[1]['ID']."' ";
$db1->execute($sql);
$_SESSION['IDuser']=$result[1]['ID'];
$_SESSION['sit']=session_id();
$meldung="Sie wurden eingeloggt als ".$_POST['username'];
return array(TRUE, $meldung);
}
PROTECTED function formlogin()
{
$aus.="<h1>Login</h1>";
$aus.="<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">";
$aus.="<input type=\"hidden\" name=\"sentzu\" value=\"1\">";
$aus.="<p>Benutzername</p>";
$aus.="<input type\"text\" name=\"username\" value=\"".$_POST['username']."\">";
$aus.="<p>Kennwort</p>";
$aus.="<input type=\"password\" name=\"kwort\">";
$aus.="<br><br><input type=\"submit\" value=\"Login\">";
$aus.="</form>";
return $aus;
}
PROTECTED function testrecht($mindestrecht)
{
if(!$_SESSION['IDuser'])
{
$meldung="<br>Bitte loggen Sie sich ein.";
return array(FALSE, $meldung)
}
if(!$_SESSION['sit'])
{
$meldung="<br>Bitte loggen Sie sich ein.";
return array(FALSE, $meldung)
}
$sql="SELECT admin, zeit, kennung, (UNIX_TIMESTAMP()-UNIX_TIMESTAMP(zeit)) as time FROM user WHERE ID=".$_SESSION['IDuser']." AND kennung='".$_SESSION['sit']."'";
$db = new db();
$result=$db->execute($sql);
if($db->num_rows() != 1)
{
$meldung="<br>Sie sind nicht angemeldet, bitte loggen Sie sich ein.";
return array(FALSE, $meldung);
}
if($result[1]['time']/60>$this->idle)
{
$meldung="<br>Sie waren zu lange inaktiv und wurden aus Sicherheitsgründen ausgeloggt.";
return array(FALSE, $meldung);
}
if($result[1]['Admin']==-1 AND $mindestrecht==2)
{
$meldung="<br>Sie haben keine Rechte diese Seite zu betreten.";
return array(FALSE, $meldung);
}
return array(TRUE, "");
}
PROTECTED function schreibrecht()
{
if($_SESSION['IDuser'] AND $_SESSION['sit'])
{
$sql="UPDATE user SET ";
$sql.=" zeit= now() ";
$sql.=" WHERE ID='".['IDuser']." AND kennung = '".$_SESSION['sit']."'";
$db = new db();
$result=$db->execute($sql);
}
}
PROTECTED function formlogout()
{
$aus.="<h2>Möchten Sie sich wirklich abmelden?<br>";
$aus.="</h2>";
$aus.="<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">";
$aus.="<input type=\"hidden\" name=\"sentzu\" value=\"2\">";
$aus.="<br><br><input type=\"submit\" value=\"Login\">";
$aus.="</form>";
return $aus;
}//Ende logoutform
PROTECTED function logout()
{
$sql="UPDATE user SET ";
$sql.=" zeit= 0, ";
$sql.=" kennung='' ";
$sql.=" WHERE ID='".['IDuser']."' ";
$db = new db();
$result=$db->execute($sql);
if($db->affected_rows() == 1)
{
$_SESSION['sit']="";
$_SESSION['IDuser']="";
$meldung="<br>Sie wurden ausgeloggt.";
}
else
{
$meldung="<br>Sie waren nicht angemeldet.";
}
return array(TRUE, $meldung);
}
PUBLIC function username()
{
$sql="SELECT username FROM user ";
$sql.=" WHERE ID='".$_SESSION['IDuser']."' ";
$db = new db();
$result=$db->execute($sql);
if($db->num_rows() == 1)
{
return $result[1]['username'];
}
else {return False;}
}
}//Ende class
?>
jetzt speicherst du alles in ein verzeichnis und in das verzeichnis kommen schließlich die scripts für alles:
!!!achtung diese scripts muss auf jeden Fall ganz am Anfang des dokuments weswegen frames zu empfehlen sind damit es einigermaßen farbe hat!!!
login.php:
<?php
session_start();
require_once('cl_db_mysql.php');
require_once('cl_db.php');
require_once('cl_zugriff.php');
$zugriff1 = new zugriff(2);
?>
logout.php
<?php
session_start();
require_once('cl_db_mysql.php');
require_once('cl_db.php');
require_once('cl_zugriff.php');
$zugriff1 = new zugriff(3);
?>
und jede seite die du schützen möchtest die für normale user und admins zugänglich sind:
<?php
session_start();
require_once('cl_db_mysql.php');
require_once('cl_db.php');
require_once('cl_zugriff.php');
$zugriff1 = new zugriff(1,1);
?>
und die sites nur für admins:
<?php
session_start();
require_once('cl_db_mysql.php');
require_once('cl_db.php');
require_once('cl_zugriff.php');
$zugriff1 = new zugriff(1,2);
?>
Solltest du nicht beachten das script vor der ersten textausgabe zu setzen wird dir ein hübscher error präsentiert.
falls du einen bereich haben möchtest in dem du deine user bearbeiten kannst schick mir einfach eine nachricht.
Ich hoffe es hilft ;) -
das mit den sessions ist die beste variante finde ich. wenn du ohne datenbank arbeiten willst, versuchs mal hiermit:
mit session_start() eröffnest du eine sitzung, die standardmäßig bis zum schließen des browsers offen bleibt.
in der sitzung kannst du variablen registrieren, wie zb deinen benutzernamen und später überprüfen, ob diese variable registriert ist, sprich dein benutzer angemeldet ist.
Du erstellst einfach ein Login-Formular wie zb
<form name="login" action="login.php" method="post">
<input type="text" name="benutzer" />
<input type="password" name="passwort" />
<input type="submit" name="submit" value="LOGIN!" />
</form>
Das kannst du auch ganz normal in eine html datei reinstellen
Als 2. brauchst du eine login.php datei mit etwa diesem inhalt:
<?php
session_start(); // Immer wenn du überprüfen willst, ob dein Benutzer eingeloggt is, musst die eine Session starten
if ($_POST["benutzer"] == ''admin" && $_POST["passwort"] == 'geheim') //Eingabe vom formular überprüfen
{
$user = $_POST["benutzer"];
session_register('user'); //'user' kommt von $user und wird in der sitzung registriert
header("location:adminbereich.php"); //weiterleiten auf die seite, wo man registriert sein muss
}
else
{
echo 'Falsche Eingabe';
}
?>
(Das loginskript kannst du natürlich auch auf der selben seite einbinden wo das formular ist, allerdings muss diese datei dann die .php endung haben!)
und wenn du dann zb im adminbereich.php gewisse teile nur anzeigen willst, wenn der benutzer angemeldet ist, dann mach das so:
adminbereich.php:
<?php
session_start(); //immer session starten, wenn man login überprüfen will
if (session_is_registered('user'))
{
//Inhalt für den Adminbereich!
echo 'Hallo Administrator!';
}
else
{
echo 'Kein Zugriff, user ist nicht registriert in dieser Sitzung!';
}
?>
das gute an diesen sessions ist, dass du auf vielen seiten den login prüfen kannst, du musst immer nur session_start() zu beginn ausführen.
Übrigens: mit $_SESSION["user"] kannst du den benutzernamen ins skript einbinden, z.B
<?php
if (session_is_registered('user'))
{
echo 'Hallo, '.$_SESSION["user"].'! Schön das du wieder da bist!';
}
else
{
echo 'Hallo, du bist nicht angemeldet!';
}
?> -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage