Login Script, PHP5 Session...

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Nosferatuvn
Mitglied
Beiträge: 2
Registriert: 16.01.2011 14:10

Login Script, PHP5 Session...

Beitrag 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
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Login Script, PHP5 Session...

Beitrag 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
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Nosferatuvn
Mitglied
Beiträge: 2
Registriert: 16.01.2011 14:10

Re: Login Script, PHP5 Session...

Beitrag 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
Antworten

Zurück zu „Coding & Technik“