PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : einzelne Datenbankfelder per Passwort schützen


nette233
31.07.2008, 21:59:31
Hallo,

geht das, daß ich einzelne Datenbankspalten/-felder mit einem Passwort schütze?
Beispiel dazu: Datensatz komplett beinhaltet Handynummer, Durchwahl, Email usw - soll aber nur angezeigt werden, wenn ein Paßwort (1 gemeinsames für alle Benutzer, die vom Webmaster eins angefordert haben) eingegeben wird, ansonsten erscheint der Datensatz MINUS Handynummer, Durchwahl, Email usw

Weiß nicht so recht wie ich danach googlen soll, probiers aber wie immer weiter.

LG und Vielen Dank im Voraus!

Domi
31.07.2008, 22:35:54
Du kannst mit mcrypt verschlüsseln ..

http://selfphp.de/kochbuch/kochbuch.php?code=81

doppelklick
01.08.2008, 08:55:26
Du startest eine Session wenn der Benutzer sein Passwort eingegeben hat.
Dann fragst Du bei der Ausgabe ab ob die Session-Variable für das Passwort gesetzt ist. Wenn "ja" gibst du Daten aus, wenn "nein" gibst Du nichts aus.

doppelklick

nette233
06.08.2008, 17:02:38
Hallo,

hab das ganze jetzt mit einer Auswahlseite gelöst, ob man sich einloggen möchte, oder ohne Login weitergeht. Bei letzterem Weg kommt man auf eine angepaßte Datenbankabfrage ohne sensible Daten.

Habe jetzt nur folgendes Problem:
ich logge mich ein und alles ist wunderbar. Komm ich jetzt wieder auf die Auswahlseite mit dem Login kommt die bekannte Fehlermeldung

Warning: Cannot modify header information - headers already sent by ...

Ich denke es liegt daran, daß ich keinen Ausloggbutton habe. Das hab ich als php-Anfänger bis jetzt leider noch nicht hinbekommen.

Würde ja gerne die zugehörige URL posten, aber dann isse in den Suchmaschinen, und die Site ist noch nicht komplett online.

Hier mal ein paar Scriptauszüge:

userlogin.php
<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
echo '<form method="post" action="userlogin.php">
<label>Benutzername:</label>
<br>
<input name="username" type="text">
<br>
<label>Passwort: </label>
<br>
<input name="userpass" type="password" id="userpass">
<br><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>';
else {
header('Location: xxx.htm'); }
?>

logged_in.php
<?
session_start();
include 'sessionhelpers.inc.php';
echo 'Sie sind ';
if (!logged_in())
echo 'nicht ';
echo 'eingeloggt.<p />';
echo '<a href="userlogin.php">Start</a>';
?>

In der sessionhelpers.inc.php sind sämtliche Funktionen aufgeführt (connect, check_user, login, logged_in, logout ).

Was mach ich denn falsch, dass diese blöde Fehlermeldung kommt und wie bekomm ich das Logout irgendwo unter?

Giz
06.08.2008, 17:46:00
Irgendwelche Zeichen vor dem einleitenden <? ??
Was steht denn in Zeile "..." ? Vielleicht "session_start();" und der Fehler tritt in der Zeile "header('Location..." auf ?

nette233
06.08.2008, 18:03:53
Ich werd bekloppt !!!!

Eigentlich hatte ich bereits alle Leerzeilen vor und nach dem php-Code entfernt, aber in 2 Scripten existierte tatsächlich noch ein einzelnes kleines Leerzeichen, das ich übersehen habe...

Nungut, Problem 1 gelöst.

Aber wie mach ich das mit dem Ausloggen?

nette233
06.08.2008, 18:41:41
Okay, hab auch das Ausloggen-Problem gelöst. War eigentlich ganz einfach.

vt1816
06.08.2008, 19:54:59
... War eigentlich ganz einfach.

Und wie? Für alle die, die mal ein ähnliches Problem haben.

nette233
06.08.2008, 20:38:10
Sorry, hab wieder nur an mich gedacht ;o)

Die einfachste Lösung:

<a href="userlogout.php">Ausloggen</a>

Kann man sicher auch noch mit Buttons oder sonstigem verlinken.

nette233
06.08.2008, 23:00:56
Nochmal `ne Frage zu folgendem Script:

userlogin.php
<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
echo '<form method="post" action="userlogin.php">
<label>Benutzername:</label>
<br>
<input name="username" type="text">
<br>
<label>Passwort: </label>
<br>
<input name="userpass" type="password" id="userpass">
<br><br>
<input name="login" type="submit" id="login" value="Einloggen">
</form>';
else {
header('Location: xxx.htm'); }
?>

Wenn ich da unter
include 'sessionhelpers.inc.php';
oder an jeder anderen beliebigen Stelle folgenden CSS-Verweis einbaue,
echo '<link href="../styling.css" rel="stylesheet" type="text/css" />';
bekomm ich wieder die "beliebte" Fehlermeldung, dann für die Zeilen 4 und 26:

Zeile 4: echo '<link href="../styling.css" rel="stylesheet" type="text/css" />';

Zeile26: header('Location: ../qvfull.htm'); }

Wie kommt das?

Elfram
07.08.2008, 23:27:26
Ich zitiere:
Beachten Sie, dass Sie die Funktion header() aufrufen müssen, bevor Sie irgendeine andere Art von Ausgabe (seien es normale HTML-Tags, Leerzeilen in einer Datei oder von PHP) zum Client schicken.
http://de2.php.net/manual/de/function.header.php

Es müsste der gleiche Fehler kommen, wenn if (!logged_in()) zutrifft (weil dann wieder was ausgegeben wird)...

Gruß Elfram

doppelklick
08.08.2008, 08:40:33
Es müsste der gleiche Fehler kommen, wenn if (!logged_in()) zutrifft (weil dann wieder was ausgegeben wird)...

Und warum bitteschön soll der Fehler kommen?
"header('Location: xxx.htm')" wird im "else-Zweig" aufgerufen. Kommt also gar nicht zur Ausführung.

doppelklick

nette233
08.08.2008, 12:23:28
Hallo,

habs jetzt folgendermaßen gelöst und komischerweise funktionierts jetzt:
<?
session_start();
include 'sessionhelpers.inc.php';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo '<link href="../styling.css" rel="stylesheet" type="text/css" />Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
echo '<form method="post" action="userlogin.php">
<label>Benutzername:</label>
<input name="username" type="text">
&nbsp;&nbsp;
<label>Passwort: </label>
<input name="userpass" type="password" id="userpass">
&nbsp;&nbsp;<input name="login" type="submit" id="login" value="Einloggen">
</form>';
else {
header('Location: ../SUCHE/qvfull.htm'); }
?>

Wenn ich aber die Zeile echo '<link href="../styling.css" rel="stylesheet" type="text/css" />'; vor echo 'Ihre Anmeldedaten waren nicht korrekt!'; einfüge, bekomme ich die Fehlermeldung.

Sehr seltsam.

LG

Elfram
09.08.2008, 23:58:27
Und warum bitteschön soll der Fehler kommen?
"header('Location: xxx.htm')" wird im "else-Zweig" aufgerufen. Kommt also gar nicht zur Ausführung.

doppelklick

Hast Recht, hab ich übersehn :D

Wenn ich aber die Zeile
echo '<link href="../styling.css" rel="stylesheet" type="text/css" />';
vor
echo 'Ihre Anmeldedaten waren nicht korrekt!';
einfüge, bekomme ich die Fehlermeldung.

Setzt du dann geschweifte Klammern um den else-Teil? Wenn nein, würde das das erklären, da das zweite echo immer ausgeführt wird.

Überhaupt sieht dein HTML sehr merkwürdig aus ^^ Mir fehlen da irgendwie so Sachen wie <html>, <head> etc. ;-)

Aber das ist bestimmt alles nur zum Testen, oder? *g*