Anmeldeprobleme auf eigener Homepage

Steffen1539

Grünschnabel
ist es ein Session Problem? i don´t know...

Hallo liebe tutorials.de-Mitglieder.

Ich habe eine kleine page für meine Feuerwehr gebastelt die so auch gut funktioniert.
Mein Problem ist leider nur, dass wenn er sich anmeldet er sagt, dass es geklappt hat, aber wenn man auf einen Geschützten Bereich kommt die Fehlermeldung "Sie haben keinen Zugriff" erscheint. Ich glaub das hängt mit den sessions zusammen. Hier ist die Page: http://www.ff-hohenaspe.de (testlogin=test und test) AUsprobieren könnt ihr es nach dem login bei der Veranstaltungen*.php. Ich habe euch hier mal die wichtigsten cods aufgelistet bei denen es wohl hapern muss:
Anmeldeformular (Das gleiche gibt es nocheinmal mit registname und adminname da ich nicht will das sich jeder auf meiner homepage registrieren kann wende ich es einmal für ein registrationspasswort und einmal für den adminbereich an. Bei der registrations funktioniert alles):
PHP:
<html>
<head><title> Memberlogin</title>
<link rel="stylesheet" type="text/css" href="../stylessheet.css"/>
</head>

<body id="content">
<?php
session_start();
?>
<?php
$verbindung = require_once('mysql_config.php');
$membername = $_POST["membername"];
$password = md5($_POST["password"]);

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

if($row->password == $password)
    {
    $_SESSION["membername"] = $membername;
	
    echo "<h5>Login erfolgreich!<br>(Weiterleitung in wenigen Sekunden)</h5>";
print '<meta target="_self" http-equiv="refresh" content="3;../allgemein/neues.php">';
    }
else
    {
    echo "<h4>Benutzername und/oder Passwort waren falsch!</h4><br>(Weiterleitung in wenigen Sekunden)";
print '<meta http-equiv="refresh" content="3;mlogin.html">';
    }

?> 
</body>
</html>
und zum schluss die sicherheitsabfrage die ich neuerdings include (vorher gings auch schon nicht)
PHP:
<?php 
session_start(); 
?> 

<?php 
if(!isset($_SESSION["membername"])) 
   { 
   echo '<h4>Sie haben keinen Zugriff! <br> (Weiterleitung in wenigen Sekunden)'; 
  print '<meta http-equiv="refresh" content="3;../anmeldung/mlogin.html">';
   
   exit; 
   } 
?>

Ich über google gesucht, ich habe schon neue tutorials studiert.. es will nicht..
Ich bitte um vollste Verständnis, denn ich habe wenig Ahnung von PHP und dies muss langsam mal funktionieren da ich es der Feuerwehr bald präsentieren soll.:(
 
Zuletzt bearbeitet:
Hallo Steffen1539,

da Du beim Link keine Session-ID übergibst und die Session keinen Cookie setzt, würde ich vermuten, dass es daran liegt.

Test mal das (sollte in allen PHP-Dateien enthalten sein wo die Session gebraucht wird):
PHP:
ini_set( 'session.use_cookies', 'on' );

Desweiteren funktioniert die Weiterleitung nicht bzw. man wird auf eine nicht vorhandene Datei weitergeleitet.
Änder kannst Du das mit einem absoluten Pfad:
HTML:
<meta http-equiv="refresh" content="3;http://www.ff-hohenaspe.de/anmeldung/mlogin.html">

Gruß
 
Wo genau müsste ich denn ini_set( 'session.use_cookies', 'on' ); eintragen? immer hinter dem session_start(); bzw vor dem wo er vergleicht?
 
Hallo Steffen1539,

den Membernamen würde ich auch nicht unbedingt unbehandelt in den SQL-Query packen da dies Tür und Tor für SQL-Injection öffnet.

Das LIKE in dem SQL-Query brauchst Du auch nicht da Du ja einen bestimmten Benutzer auswählen möchtest:
PHP:
$abfrage = "SELECT membername, password FROM member WHERE membername = '$behandeltermembername' LIMIT 1";

Gruß

ps: md5 gilt nicht mehr als sicher, schau dir mal z.B. sha oder bcrypt an
 
Wie mach ich das denn um den membernamen zu behandeln? EInfach deinen code so übernehmen oder was muss ich auserdem ändern? ich persönich würde nun nur die Variabble ändern also auch auf $behandeltermembername
 
ICh habe das jetzt alles so abgeändert:
PHP:
<?php
ini_set( 'session.use_cookies', 'on' );
session_start(); 
?> 

<?php 
if(!isset($_SESSION["membername"])) 
   { 
   echo '<h4>Sie haben keinen Zugriff! <br> (Weiterleitung in wenigen Sekunden)'; 
  print '<meta http-equiv="refresh" content="3;../../anmeldung/mlogin.html">';
   
   exit; 
   } 
?>

und
PHP:
<?php
ini_set( 'session.use_cookies', 'on' );
?>
<html>
<head><title> Title</title>
<link rel="stylesheet" type="text/css" href="../stylessheet.css"/>
</head>

<body id="content">
<?php
session_start();
 
?>
<?php
$verbindung = require_once('mysql_config.php');
$behandeltermembername = $_POST["membername"];
$password = md5($_POST["password"]);

$abfrage = "SELECT membername, password FROM member WHERE membername = '$behandeltermembername' LIMIT 1"; 
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->password == $password)
    {
    $_SESSION["membername"] = $behandeltermembername;
	
    echo "<h5>Login erfolgreich!<br>(Weiterleitung in wenigen Sekunden)</h5>";
print '<meta target="_self" http-equiv="refresh" content="3;../allgemein/neues.php">';
    }
else
    {
    echo "<h4>Benutzername und/oder Passwort waren falsch!</h4><br>(Weiterleitung in wenigen Sekunden)";
print '<meta http-equiv="refresh" content="3;mlogin.html">';
    }

?> 
</body>
</html>

es möchte aber immer noch nicht..
 
Ich habe sowas von keine Ahnung davon... ich verstehe es nicht.. Auf meiner Seite werden keine besonders wichtigen Daten sein. Also will ich einfach nur das dieser Login funktioniert. Die sicherheit ist mir momentan vollkommen egal..

Bitte helf mir nur beim Hauptproblem.. oder ändere mir den Code so ab, wenn es dir wichtig ist. Hier ist dann die registrations.php..


PHP:
<html>
<head><title>regist</title>
<link rel="stylesheet" type="text/css" href="../../stylessheet.css"/>
</head>
<body id="content">
<?php
include_once('../logincheck/rcheck.php')
?>
<?php 
$verbindung = require_once('mysql_config.php');

$membername = $_POST["membername"];
$vname = $_POST["vname"];
$nname = $_POST["nname"];
$password = $_POST["password"];
$password2 = $_POST["password2"];
$email = $_POST["email"];

if($password != $password2 OR $membername == "" OR $vname == "" OR $nname == "" OR $password == "" OR $email == "")
    {
    echo "<h4>Eingabefehler. Bitte alle Felder korekt ausfüllen.</h4>";
	print '<meta http-equiv="refresh" content="3;regist.html">';
    exit;
    }
$password = md5($password);

$result = mysql_query("SELECT id FROM member WHERE membername LIKE '$membername'");
$menge = mysql_num_rows($result);

if($menge == 0)
    {
    $eintrag = "INSERT INTO member (membername, vname, nname, password, email) VALUES ('$membername', '$vname', '$nname', '$password', '$email')";
    $eintragen = mysql_query($eintrag);

    if($eintragen == true)
        {
        echo "<h5>Vielen Dank f&uuml;r deine Registrierung <b>$vname</b>! <br><br> Du ben&ouml;nitgst <b><u>keine</u></b> E-Mail-bestätigung!<br>(Weiterleitung in wenigen Sekunden)<h5>";
		   print '<meta http-equiv="refresh" content="8;../../allgemein/neues.php">';
        }
    else
        {
        echo "<h4>Fehler beim Speichern der Daten!</h4>"; 
		   print '<meta http-equiv="refresh" content="3;regist.html">';
        }


    }

else
    {
    echo "<h4>Benutzername schon vorhanden!</h4>";
	   print '<meta http-equiv="refresh" content="3;regist.html">';
    }
?>
</body>
</html>

Nochmals großen Dank das du mir hilfst.. ich hoffe das wir ds gemeinsam hin bekommen...
 
Zuletzt bearbeitet:
Zurück