kostenloser Webspace werbefrei: lima-city


Login Bereich Generator

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    vhm-9cr

    Kostenloser Webspace von vhm-9cr, auf Homepage erstellen warten

    vhm-9cr hat kostenlosen Webspace.

    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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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...
  4. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    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
  5. 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 ;)
  6. a***m

    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!';
    }
    ?>
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!