Seite 1 von 1

Login Script, PHP5 Session...

Verfasst: 16.01.2011 14:20
von Nosferatuvn
Hallo,

... nach vielen jahr war auf einmal mein user weg Oo... musste mich neu registrieren hier im forum ... naja anders thema ....

Ich arbeite schon nen halben tag rum finde keine lösung ....

Ich habe dieses Tutorial genommen

http://www.php-einfach.de/tuts_mysql_login.php

und mein login script gemacht.

ich habe eine site.php wo ich alles reinlade von php seiten usw ...

registrieren funktioniert supper ich hab nur ein problem mit der "geheim.php"

Nach dem login wenn ich auf "geschützter Bereich" klicke bin ich nicht mehr eingeloggt und ich weiß einfach nicht warum ....

login.php

Code: Alles auswählen

<?php
session_start();
echo session_id(); 
?>

<?php
$verbindung = mysql_connect("localhost", "user" , "pw")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("db") or die ("Datenbank konnte nicht ausgewählt werden");

$username = $_POST["username"];
$passwort = md5($_POST["passwort"]);

$abfrage = "SELECT username, password FROM login WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->password == $passwort)
    {
    $_SESSION["username"] = $username;
    echo "Login erfolgreich $username. <br> <a href=\"site.php?page=geheim&p=$p&lan=$lan&d=$d&nk=$nk&rk=$rk&zn=$zn&zn2=$zn2&zn3=$zn3\">Geschützer Bereich</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"site.php?page=logintpl&p=$p&lan=$lan&d=$d&nk=$nk&rk=$rk&zn=$zn&zn2=$zn2&zn3=$zn3\">Login</a>";
    }

?> 
logintpl.php

Code: Alles auswählen

<form action="<?php echo "site.php?page=login&p=$p&lan=$lan&d=$d&nk=$nk&rk=$rk&zn=$zn&zn2=$zn2&zn3=$zn3"; ?>" method="post">
Dein Username:<br>
<input type="text" size="24" maxlength="50"
name="username"><br><br>

Dein Passwort:<br>
<input type="password" size="24" maxlength="50"
name="passwort"><br>

<input type="submit" value="Login">
</form>
geheim.php

Code: Alles auswählen

<?php
session_start();
echo session_id(); 

if(!isset($_SESSION["username"]))
   {
   echo "Bitte erst <a href=\"site.php?page=logintpl&p=$p&lan=$lan&d=$d&nk=$nk&rk=$rk&zn=$zn&zn2=$zn2&zn3=$zn3\">einloggen</a>";
     
   
}

echo "ICH BIN IM MEMBER BEREICH";
?> 
Das ich bin im member bereich wird aber trotzdem eingezeigt + bitte erst einloggen und das versteh ich nicht,... session start ist wie im tut und ich hab zum testen noch ne session id ausgegeben. die die selbe ist wie auf der login seite.

bitte bitte hilfe.

MFG
Nosferatuvn

Re: Login Script, PHP5 Session...

Verfasst: 17.01.2011 00:04
von cYbercOsmOnauT
Hallo auch :)

Anmerkungen zur login.php:

Code: Alles auswählen

echo session_id(); 
Wieso gibst Du oben die SessionID aus? Macht für mich keinen Sinn.

Code: Alles auswählen

$username = $_POST["username"];
$passwort = md5($_POST["passwort"]);

$abfrage = "SELECT username, password FROM login WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
if($row->password == $passwort)
Ganz böse Falle einen POST-Wert ungefiltert in eine SQL zu schreiben. Und warum verwendest Du LIKE? Wenn ich als Usernamen % eingebe und einen Standardpasswort, brauche ich den Usernamen gar nicht wissen und bin eingeloggt als der erste der so ein simples Passwort verwendet hat.

Das obige besser ersetzen durch

Code: Alles auswählen

$abfrage = "SELECT username, password FROM login WHERE username = '".mysql_real_escape_string($_POST["username"])."' AND passwort = MD5('".mysql_real_escape_string($_POST["passwort"])."')";
$ergebnis = mysql_query($abfrage);
$hit = mysql_num_rows($ergebnis);

if($hit)
Bei der geheim.php muss das erste echo durch einen die ersetzt werden.

Code: Alles auswählen

die("Bitte erst <a href=\"/site.php?page=logintpl&p=$p&lan=$lan&d=$d&nk=$nk&rk=$rk&zn=$zn&zn2=$zn2&zn3=$zn3\">einloggen</a>";)
Ich hoffe mal das Du die Variable $_GET['page'] in der site.php vor Missbrauch geschützt hast.

Viele grüße,
Tekin

Re: Login Script, PHP5 Session...

Verfasst: 22.01.2011 15:03
von Nosferatuvn
hi,

danke danke. lauft jetzt ;)

das mit session id war nur zum testen.

$_GET['page'] funkt nur im mom so wie es lauft, wenn ich das login uns user script fertig habem kommen die links in eine datenbank und eine ID zugewiesen.

Ich habe versucht das permission management system von
http://dog-net.org/content/development/ ... nt-system/

zu übernehmen.... nur ich bekomme es nicht zum laufen >.< und kenn mich da nicht wirklich aus, hatte schon mal nen anderes das lief aber aus irgend einen grund auch nicht >.<

geheim.php sieht so aus

Code: Alles auswählen

<?php
include("user/function.php");

if(isset($_SESSION["username"]))
{

echo "eingeloggt ";
echo $_SESSION["username"];
echo "<br>";
} 


$Has = 1;
$Need = 1;

$Permissions->CheckPermission($Has, $Need) {

echo "hi";
}

if(!isset($_SESSION["username"]))
   {
   echo "Bitte erst <a href=\"site.php?page=logintpl&p=$p&lan=$lan&d=$d&nk=$nk&rk=$rk&zn=$zn&zn2=$zn2&zn3=$zn3\">einloggen</a>";
}

?> 
funktion.php sieht so aus

Code: Alles auswählen

<?php


Class Permissions{

  static $Permissions = array();

  static $Level = 1;

 

  function AddLevel($Level){

    self::$Permissions[strval(self::$Level)] = $Level;

    self::$Level = self::$Level<<1;

  }

 

  function CheckPermission($Has, $Need){

    return ($Has & $Need)? true : false;

  }

 

  function DumpLevels(){

    Foreach (self::$Permissions AS $Level=>$Permission){

      echo "Level .:$Level.": ".$Permission."<br />";

    }

  }

 

  function DumpPermissions($Level){

    echo "Level ".$Level." :<br />";

    Foreach (self::$Permissions AS $sLevel=>$Permission){

      echo (self::CheckPermission($Level, $sLevel))? " - ".$Permission."<br />": "";  

    }

  }

}

$Permissions = new Permissions();
$Permissions->AddLevel("Admin");
$Permissions->AddLevel("User");
$Permissions->AddLevel("Newswriter");
$Permissions->AddLevel("Textwriter");
?>


Gruß
Nosferatu