Ankündigung
Einklappen
Keine Ankündigung bisher.
ein login-system, basierend auf MySQL und sessions
Einklappen
Neue Werbung 2019
Einklappen
X
-
Was meiner Meinung aus Sichet der Sicherheit noch Sinn macht, ist dass man die IP-Adresse, oder zumindest einen Hash von dieser mit in der Session speichert und diese dann in geschützten Bereichen mit der aktuellen IP-Adresse vergleicht.
Dazu müsste in der Datei check_login.php folgendes hinzugefügt werden:
PHP-Code:$_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
Die Datei val_login.php müsste dann auch angepasst werden und zwar müsste die Zeile 3 wie folgt angepasst werden:
PHP-Code:if(($_SESSION['logged'] == FALSE) || ($_SESSION['IP'] != $_SERVER['REMOTE_ADDR']))
Gruß: elzumo
Edit:
Um mit Hashes zu arbeiten müssten die Codeänderungen wie folgt aussehen:
PHP-Code:$_SESSION['IP'] = md5($_SERVER['REMOTE_ADDR']);
PHP-Code:if(($_SESSION['logged'] == FALSE) || ($_SESSION['IP'] != md5($_SERVER['REMOTE_ADDR'])))
Real Programmers dont comment their code. If it was hard to write, it should be hard to read.
Kommentar
-
Sagt mir einfach nicht zu, halte ich nicht viel von, besonders wenn es dann irgendwann Richtung Datenbank geht. Ich will auch nicht, dass überall meine IP zu finden ist.
Zum Thema:
wirspeichernnicht.de - StartReal Programmers dont comment their code. If it was hard to write, it should be hard to read.
Kommentar
-
Hi leute,
ich hab das script versucht in etwas abgeänderter form in mein cms-script einzubauen, jedoch ergibt das bei immer einen fehler wegen dem header. Ich weiss nur leider nicht wie ich den beheben kann. (Ja, ich weiss das vor dem header keine ausgabe erzeugt sein darf).
Ich hab das ganze so aufgebaut: das ganze login zeugs wird per index.php?section=login aufgerufen. die cfg`s sind schon in der index.php includet. die login.html und die check_login hier aus dem script habe ich in eine datei zusammengefasst (login.php).
Die header informationen zum weiterleiten auf die inter.php habe ich so stehen lassen wie hier im script. Doch da ja erst die index.php aufgerufen wird habe ich natürlich auch ausgaben drinne. Jetzt dachte cih mri ich definiere den header in der index.php als aller erstes. Doch wie genau soll ich das machen? Also wie realisiere ich, das der header der login.php fehlerfrei funktioniert in meiner version?
P.S.: Wenn cih einfach die dateien erstelle wie sie hier im script sind und das login-script unabhängig von meinem cms als standalone nehme funktioniert alles. Es geht also nur um die implementierung in mein script woebi sich eben der oben genannte header fehler ergibt.
Der vollständigkeit halber hier noch die fehlermeldung:
Code:Warning: Cannot modify header information - headers already sent by (output started at /home/www/web37/html/tnkstuff/tnkcms/index.php:111) in /home/www/web37/html/tnkstuff/tnkcms/login/login_check.php on line 46
.visit » Tolga-Tanik.de
.visit » TolgaTanikFoto @ Facebook
.visit » Tolga Tanik Fotografie @ YouTube
Kommentar
-
Zitat von Ambience Beitrag anzeigenHast aber einen Fehler drinne...
Bei: val_login.php
da steht:
PHP-Code:header('login.html');
PHP-Code:header('location: login.html');
würde ich aus:
PHP-Code:<?php
session_start();
//die sessions auf FALSE setzen
$_SESSION['logged'] = FALSE;
$_SESSION['u_name'] = FALSE
PHP-Code:<?php
session_start();
session_destroy();
Das hab ich......es wir lediglich das "sie konnten als benutzer identifiziert werden" angezeigt.....es geht aber nicht weiter????
Ich meine es müsste login.htm aufgerufen werden
Das hab ich!?
PHP-Code:else
{
//eine session "logged" auf TRUE setzen
//eine session mit dem usernamen erstellen
$_SESSION['logged'] = TRUE;
$_SESSION['nic_name'] = $_POST['pw_user'];
//auf die geschützte datei weiterleiten
echo 'sie konnten als benutzer identifiziert werden';
header('login.htm');
exit();
}
}
Mike / Danke für die Hilfe.
Sage nicht alles, was Du weißt, aber wisse immer, was Du sagst.
Kommentar
-
Zitat von Montellese Beitrag anzeigenEs steht doch schon in dem von dir zitierten Teil, was anPHP-Code:header('login.htm');
PHP-Code:header('Location: login.htm');
Leider bleibt auch mit deinem Vorschlag die Seite beim "echo" stehenMike / Danke für die Hilfe.
Sage nicht alles, was Du weißt, aber wisse immer, was Du sagst.
Kommentar
-
Zitat von Klabautermann Beitrag anzeigenDie Fehlermeldung müsste
Warning: Cannot modify header information - headers already sent by (output started at *Deine Datei.php*:10) in *Deine Datei.php on line 34
Es darf also kein echo vor dem header Befehl stehen.
So ist es geschrieben!?
PHP-Code:if(mysql_num_rows($result) != 1)
{
//wenn nicht übereinstimmt
//echo 'sie konnten nicht als benutzer identifiziert werden';
header('Location: intern.php');
exit();
}
//wenn übereinstimmt
else
{
//eine session "logged" auf TRUE setzen
//eine session mit dem usernamen erstellen
$_SESSION['logged'] = TRUE;
$_SESSION['nic_name'] = $_POST['nic_name'];
//auf die geschützte datei weiterleiten
//echo 'sie konnten als benutzer identifiziert werden';
header('Location: intern.php');
exit();
}
}
?>
PHP-Code:if(mysql_num_rows($result) != 1)
{
//wenn nicht übereinstimmt
//echo 'sie konnten nicht als benutzer identifiziert werden';
header('Location: intern.php');
exit();
}
//wenn übereinstimmt
else
{
//eine session "logged" auf TRUE setzen
//eine session mit dem usernamen erstellen
$_SESSION['logged'] = TRUE;
$_SESSION['nic_name'] = $_POST['nic_name'];
//auf die geschützte datei weiterleiten
//echo 'sie konnten als benutzer identifiziert werden';
header('Location: intern.php');
exit();
}
}
?>
Mike / Danke für die Hilfe.
Sage nicht alles, was Du weißt, aber wisse immer, was Du sagst.
Kommentar
-
Zitat von mike-loewe Beitrag anzeigenPHP-Code:if
{
}
else
{
}
}
Kommentar
-
Zitat von Traum Beitrag anzeigenNa, was fällt auf? Genau, ne } zuviel...dann klappt es auch mit dem Nachbarn
Fehler:
Parse error: parse error, unexpected $ in /homepages/10/d171645326/htdocs/msw_event/test/check_login.php on line 46
Hier mal das ganze
PHP-Code://prüfen, ob die eingabefelder ausgefüllt wurden
if(empty($_POST['nic_name']) || empty($_POST['pw_user']))
{
//wenn sie nicht ausgefüllt wurden
echo 'es wurden nicht alle relevanten felder ausgefüllt';
exit();
//wenn sie ausgefüllt wurden
}else
{
//eine SQL-abfrage vorbereiten und sie abschicken
$sql = "SELECT user_id,
nic_name,
pw_user
FROM user_mse
WHERE nic_name = '".mysql_real_escape_string($_POST['nic_name'])."'
AND pw_user = '".mysql_real_escape_string($_POST['pw_user'])."'";
$result = mysql_query($sql) or die(mysql_error());
{
//prüfung, ob genau eine der spalten mit der eingabe überein stimmt
if(mysql_num_rows($result) != 1)
{
//wenn nicht übereinstimmt
header ("Location:http://www.ulr.com");
exit();
//wenn übereinstimmt
}else
{
//eine session "logged" auf TRUE setzen
//eine session mit dem usernamen erstellen
$_SESSION['logged'] = TRUE;
$_SESSION['nic_name'] = $_POST['nic_name'];
//auf die geschützte datei weiterleiten
header ("Location:http://www.ulr.com");
exit();
}
?>
Mike / Danke für die Hilfe.
Sage nicht alles, was Du weißt, aber wisse immer, was Du sagst.
Kommentar
-
Zähl bitte mal durch, wieviele { in deinem Scriptteil aufgehen und wieviele zu.... Ist das in deinem Editor auch so grässlich eingerückt oder nur hier im Forum irgendwie? Sieht ziemlich unübersichtlich aus....
Tipp: Wenn ein Fehler in der Zeile mit dem ?> angegeben wird, liegt das immer daran, dass zu wenige } eingesetzt wurden.
EDIT: Ich glaube der Hinweis von Traum war nicht ganz richtig! Da waren nicht zu viele Klammern sondern zu wenige bzw am falschen Ort.
Kommentar
-
PHP-Code://prüfen, ob die eingabefelder ausgefüllt wurden
if(empty($_POST['nic_name']) || empty($_POST['pw_user']))
{
//wenn sie nicht ausgefüllt wurden
echo 'es wurden nicht alle relevanten felder ausgefüllt';
exit();
//wenn sie ausgefüllt wurden
}else
{
//eine SQL-abfrage vorbereiten und sie abschicken
$sql = "SELECT user_id,
nic_name,
pw_user
FROM user_mse
WHERE nic_name = '".mysql_real_escape_string($_POST['nic_name'])."'
AND pw_user = '".mysql_real_escape_string($_POST['pw_user'])."'";
$result = mysql_query($sql) or die(mysql_error());
//prüfung, ob genau eine der spalten mit der eingabe überein stimmt
if(mysql_num_rows($result) != 1)
{
//wenn nicht übereinstimmt
header ("Location:http://www.ulr.com");
exit();
//wenn übereinstimmt
}else
{
//eine session "logged" auf TRUE setzen
//eine session mit dem usernamen erstellen
$_SESSION['logged'] = TRUE;
$_SESSION['nic_name'] = $_POST['nic_name'];
//auf die geschützte datei weiterleiten
header ("Location:http://www.ulr.com");
exit();
}
}
?>
So, passt.
Kommentar
Kommentar