Session
Kevin
- sonstiges
Moin moin,
if(!isset($_SESSION["loginname"]))
{
echo "Bitte erst einloggen!";
exit;
}
else {
}
dies hab ich immer vor jedem geschützten Bereich stehen. ( oben steht ebenfalls session_start ();)
Leider kommt, wenn ich die URL aufrufe nicht das echo sondern das else. Was mach ich da falsch? Eigentlich soll man ja *User*-Bereiche nicht per URL aufrufen können..
Dankee
Eigentlich soll man ja *User*-Bereiche nicht per URL aufrufen können..
Wie denn sonst? Durch Magie?
Oben ist die Adressleiste. Ich will nicht, dass irgentwer die URL eingibt und dadurch in geschützte Bereiche kommt.
Die sollen sich einloggen, und wer ein Account hat kann sich einloggen, und damit in den geschützen bereich zu kommen.
Hi!
Eigentlich soll man ja *User*-Bereiche nicht per URL aufrufen können..
?? Wie denn dann?
off:PP
Hello,
Also hast Du dort stehen:
session_start();
if(!isset($_SESSION["loginname"]))
{
echo "Bitte erst einloggen!";
exit;
}
else
{
## weiterarbeiten
}
Den Else-Zweig kannst Du Dir sparen, wenn Du mit 'exit' abrbeitest, denn das weitre Script ist dann bereits der Else-Zweig.
Hast Du Dir schon mal $_SESSION ausgeben lassen?
also
<?php ### session-test.php ###
session_start();
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_SESSION,1));
echo "</pre>\r\n";
if(!isset($_SESSION["loginname"]))
{
echo "Bitte erst einloggen!";
exit;
}
## weiterarbeiten
## ...
?>
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
if(!isset($_SESSION["loginname"]))
{
echo "Bitte erst einloggen!";
exit;
Das Skript sterben zu lassen, ist meiner Meinung nach nicht besonders benutzerfreundlich. Möchtest Du dem Benutzer nicht lieber eine Loginmöglichkeit geben (im Stil eines Affenformulars). Falls Du nur eine zentrale Loginmöglichkeit hast, solltest Du den Benutzer wenigstens dorthin umleiten.
Freundliche Grüße
Vinzenz
Hallo,
if(!isset($_SESSION["loginname"]))
{
echo "Bitte erst einloggen!";
exit;
}
else {
}
Leider kommt, wenn ich die URL aufrufe nicht das echo sondern das else. Was mach ich da falsch? Eigentlich soll man ja *User*-Bereiche nicht per URL aufrufen können..
Das liegt daran das deine Session wohl existiert, versuche mal
$_SESSION[]
session_start();
session_destroy();
nun sollte die Session futsch sein und dein -wenn ich mal vermekren darf- unsicheres Script sollte funktionieren.
Wenn du en paar Tipps haben willst bzw. wie man sowas einigermaßen sicher macht kannst dich ja noch mal hier melden.
Gruß Jonny F.
~~~php
session_start();
session_destroy();
Sry das kannst du mal versuchen, das killt deine Sessions.
wie mzss ich das denn schreiben wenn nur eingeloggt user in benutzerbreich können dürfen...
Also mal Grundlegendes:
Also du hast ein Formular mit den man sich anmelden kann, diese Werte gleichst du ja mit deiner Datenbank ab.
Wenn die Werte übereinstimmen dann füllst du die Login Session mit der geprüft wird ob er zugriff auf den geschützten Bereich bekommt oder eben nicht.
Sprich so.
<?php
if($datenbank['passwort']==$_POST['passwort'] && $datenbank['username']==$_POST['username']){
$_SESSION['loginstatus']="true"; //Variable mit der du dann deinen Berreich begrenzt
}
//Nun hast du auf den anderen Seiten stehen
//Wenn user nicht angemeldet ist, ist die Session leer
session_start();
$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);
if(!isset($_SESSION['loginstatus']) || !$_SESSION['loginstatus']){
//damit kannst du auf eine andere Seite verweisen, ziemlich praktisch finde ich
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php');
exit;
}
//oder wie du es gemacht hast.
if(!isset($_SESSION['loginstatus'])){
echo "bitte anmelden, geschützter Bereich";
exit;
}
//else Bereich nicht nötig, da exit script beendet
?>
Habs jetzt richtig, auch so wie ich die session genannt habe...aber wenn ich die url aufrufe in der adressleiste zeigt er immernoch die sachen an und die 3te seite die im bau ist zeigt er dann nur noch "falsch" an
Dann zeig mal bitte die ersten 20 Zeilen deines Scriptes, dann werde ich dir mehr sagen können.
Die variablen kannst du ja auch nennen wie du willst, hab halt jetzt ma die namen genommen.
Gruß Jonny F.
das session start ist in der index datei! bei mir läuft ja alles darüber ( index.php?usw...
naja jetzt klappt alles im eingeloggten bereich glaub. aber mann kann immernoch die sachen sehen wenn man url eingibt...^^
das session start ist in der index datei! bei mir läuft ja alles darüber ( index.php?usw...
naja jetzt klappt alles im eingeloggten bereich glaub. aber mann kann immernoch die sachen sehen wenn man url eingibt...^^
Jetzt steh ich aufm Schlauch, aber du hast schon mehrere PHP Scripte oder...
und includierst sie jeweils oder hast du nur ein Script in dem alles drins steht.
Eine Datei jeweils( also zb bei login alle in eine datei ) wo ich die alle drinne habe.
Hello,
wie mzss ich das denn schreiben wenn nur eingeloggt user in benutzerbreich können dürfen...
Das war im Prinzip schon richtig, wie Du da vorgehst, auch wenn ich diese sehr einfache Art für sehr bedenklich halte.
Du setzt also voraus, dass es eine gültige Session für den User gibt (gerade eröffnet). Der User hat sich mit dem Request auch gerade authentifiziert. Dann schreibst Du in diese frische Session den Loginnamen des Users rein in das Element $_SESSION['loginname'].
Das ist soweit vollkommen nachzuvollziehen nund auch kein merkwürdiges Konstrukt.
Wenn nun der nächste Aufruf (Request) mit dieser Sessionnummer kommt, nimmst Du die Session wieder auf und schaust nach, ob der User sich bereits authentifiziert hat, indem Du nach dem Element $_SESSION['loginname'] fragst. Auch das ist ok.
Wenn da nun irgendwas nicht klappt, musst Du nachforschen.
Wie das geht, hatte ich Dir ja schon gepostet.
https://forum.selfhtml.org/?t=196976&m=1320474
Es muss allerdings auch ein Teil im Script geben, in dem die Benutzeranmeldung geprüft wird, die Sesssion aufgebaut wird und der ['loginname'] als Element in die (frische) Session geschrieben wird.
Dieser Teil (die Funktion) wird aber nur aufgerufen, wenn noch keine Anmeldung vorliegt...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
naja die session klappt immernoch nicht. oder die klappt. aber die übernimmt die daten nicht. also zum beispiel ich bin im benutzercenter will jetzt auf daten ändern klicken, aber wenn ich jetzt dort hingehe zeigt er mir jetzt nicht eingeloggt an.
session_start ();
ist in meiner "index.php" Datei...alle Seiten laufen über index.php?xy=???
URL. Wenn ich jetzt session dort wieder mit destroy schließe( in der index), bringt es ja garnichts. oder?
if($_GET[*]=="*")
{
*mysql abfragen usw*
if($row->*** == md5($_POST[***]) && $row->*** == "$_POST[benutzer]" )
{
$_SESSION["123"] = $_POST[456];
echo "
"
else {
Benutzerdaten stimmen nicht
}
da klappt ja noch alles aber dann hier:
if ($_GET[b]=="3")
{
*mysql abfragen usw*
if(!isset($_SESSION["$_POST[456]"]))
{
echo "Bitte erst einloggen!";
}
else {
*das was bei user=eingeloggt alles zeigen soll*
}
hm. fehler?
if(!isset($_SESSION["$_POST[456]"]))
{
echo "Bitte erst einloggen!";
}
Was ist das für ein Konstrukt, was versprichst du dir davon. Heißt die Session so oder was ist da schief gegangen???
Gruß Jonny F.