News:

SMF 2.1.4 has been released! Take it for a spin! Read more.

Main Menu

loginüberprüfung für andere php.seite

Started by OleD, November 23, 2005, 01:53:43 AM

Previous topic - Next topic

OleD

Hallo,

kann mir jemand sage ob und wenn wie es möglich ist, beim aufrufen einer php-Seite überprüfen zulassen ob der jenige ein angemeldeter Forumuser ist. Wenn möglich noch eine Gruppenzugehörigkeit zuüberprüfen.


Gruß Olaf

noex

siehe: http://www.simplemachines.org/community/index.php?topic=23842.0

Mit der SSI.php kannst du auf jeder beliebigen PHP Seite überprüfen ob der User eingeloggt ist.
Auch die Gruppe des Users sollte kein Problem sein.

lg
noex
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

dieter4

wenn die SSI.php eingebunden ist (wie s.o. bei noex), dann ist die Information mit der Variable $context['user']['is_logged'] gespeichert.

OleD

vielen Dank erst mal , das sieht ja schon mal ganz gut aus, werd ich am Wochenende gleich mal ausprobieren.
Ich hoffe ich bekomme das auch mit der Gruppenabfrage hin (es solllten dann ja mehr als eine Gruppe sein)
Solle ich noch Fragen haben, werde cih mcih eh wieder melden.

aber schon mal vielen Dank

Gruß Olaf

OleD

Morgen,

so hab das ausprobiert und die überprüfung auf login klappt prima, nur kenn ich mich jetzt leider nicht weiter aus. Ich hab den code als erstes in dieser Index.php eingefügt, nun will ich ja das er fals gast nicht den rest des codes ausführt, was er immo noch tut und daher die Seite weiterhinanzeigt.


<?php
require("/home/httpd/vhosts/haus-klingensang.de/httpdocs/forum/SSI.php");

if (
$context['user']['is_guest'])
{
  echo
 
'<h5>Zugriff verweigert </h5>
  Es tut uns leid Gast, aber Sie haben nicht die Berechtigung diesen Roster einzusehen.'
;
}
else
{
  echo
 
'<h5>Willkommen, ', $context['user']['name'], '!</h5>
  Hier gehts zum WoW-Roster:'
;
}
?>
<?php require 'conf.php'; ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
  <title>[<?php print $guild_name; ?> Roster]</title>
  <link rel="stylesheet" type="text/css" href="<?php print $stylesheet2 ?>">
  <link rel="stylesheet" type="text/css" href="<?php print $stylesheet1 ?>">
<style type="text/css">
/* This is the border line & background colour round the entire page */
.bodyline       { background-color: #000000; border: 1px #212121 solid; }
</style>
</head>
<body>

<table border=0 cellpadding=0 cellspacing=0 width="100%">
  <tr><td align="center">
  <table border=0 cellpadding=8 cellspacing=0 width="100%">
  <tr><td width="100%" class="bodyline">
  <table border=0 cellpadding=0 cellspacing=0 width="100%">
  <tr><td align="center" width="100%" class="bodyline">
  <a href="<?php print $website_address ?>"><img src="<?php print $logo ?>" alt="" border="0"></a><br>
  </td>
  <tr><td align="center">
  <br><font color="#FFFFFF">WoW Roster Version <?php print $version ?></font></b><br><br>
  <a href="#update"><font size="4"><?php echo ($update_link[$roster_lang]); ?></font></a><br><br>


<?php require 'membersList.php'; ?>

</td></tr>
<tr><td>
<hr>
<a name="update"></a>

<?php echo $update_instruct[$roster_lang]; ?>
<?php if ($show_pvplist == 1){
echo
$update_instructpvp[$roster_lang];
}
?>
<hr><small>

<?php echo $credits[$roster_lang];?>

</small>
</td></tr>
</table>
</td></tr>
</table>
</td></tr>
</table>
</body>
</html>


ausserdem erhalte ich auf der Seite ganz am Schluss eine Fehlermeldung:


Datenbankfehler: No Database Selected
Datei: /home/httpd/vhosts/haus-klingensang.de/httpdocs/forum/Sources/Load.php
Zeile: 1877
Warning: Unknown(): A session is active. You cannot change the session module's ini settings at this time. in Unknown on line 0


mit der ich auch nciht viel anfangen kann. ich hoffe nicht zu nerven ;)

Gruß Olaf

Angie

Greetings from Angie (fiancé of mediman ;-))


dieter4

ich glaube er will, dass ein gast nur die meldung angezeigt kriegt, das er keinen zugriff hat und dann -> Ende.

dafür musst du nur ein exit; unter der meldung für den gast eingeben.

mehr habe ich auch nicht verstanden.

Angie

Ich verstehe grad nicht wirklich wo da das Problem liegt ...


<? ob_start();
require(
"/home/www/web4/html/forum/SSI.php");
global
$context, $settings, $user_info;
if ($user_info['is_guest']) {
echo "<span style='color: red;'>Du bist nicht angemeldet, bitte im Forum einloggen</span>";
die;
}
// Ab hier die Inhalte der User, die der angemeldete User sehen soll.
?>

Greetings from Angie (fiancé of mediman ;-))


dieter4

jupp, aber was ist denn jetzt genau mit der fehlermeldung ???

Angie

Der Mod wird gar nicht auf die entsprechende Source können, weil eine Session bereits gefeuert wurde.
Damit kann er auch keine Queries absetzen.

P.S. Die SSI.php stellt bereits einen DB-Zugriff zur Verfügung. Demzufolge sollte in der conf.php nicht nochmal einer sein.
Die DB muss aber connected sein.

Übrigens eine Abfrage der Gruppenzugehörigkeit lässt sich über "field in set" als where clause ganz einfach umsetzen.

lg Angie



Greetings from Angie (fiancé of mediman ;-))


OleD

danke Angie,

so klappts auch , habs grad mal getestet. nun wird eine Leere Seite gebracht mit dem Hinweis sich einzulogen.

wenn man eingelogt ist, kommt immer noch diese Fehlermeldung. Ich denke auch das hat was mit der conf.php zu tun.
in der ssi.php werden die daten für die DB ja schon mal aus der fürs Forum übergeben und dann kommt noch mal eine conf.php in dem code wo die Daten für die DB für diesen Roster (ist eine Onlinedatenbank, in der von den Usern Daten aus dem Spiel WoW gesammelt und angezeigt werden) noch mal zugewiesen werden.
weiss nur nicht was ich dagegen tun soll, würde man diesen Fehler vermeiden könne , wenn alle daten in der gleichen DB gespeichert werden und somit die Daten in beiden config.php gleich sind ?

bei Gelegenheit wäre ich noch für ein Beispiel, wie ich die Gruppe abfragen kann. Ich könnte mir das über die GruppenID vorstellen. es sollten auf jeden fall mindestens 2 oder 3 Gruppen sein.

Gruß Olaf

Angie

Ich lann da gerne einen Blick draufwerfen, dazu müsste ich allerdings den Aufbau der conf.php kennen.

Es ist nicht zwingend notwendig, dass es in ein und derselben DB gepspeichert wird.

Wegen der Gruppenabfrage. Auch das ist kein Problem.

Beschreibe doch bitte mal was ganz konkret passieren soll und wie die nicht zu SMF gehörigen Dateien aussehen.

lg Angie
Greetings from Angie (fiancé of mediman ;-))


OleD

Morgen,

ich erwähne noch mal kurz, das ich mich eigentlich mit coden garnicht auskenne, meist versuche ich es mit probieren hinzubekommen.

da die Fehlermeldung auf eine schon vorhandene Session hinwies, hab ich mir heute Morgen mal das dicke PHP-Buch rausgenommen und versucht über diese Thema zu lesen. ichhab daraufhin einfach mal folgendes versucht.

als erstes hab ich den Code aus der index.php gelöscht und in eine eigene check.php geschrieben, so kann ich die besser auch für andere Dateien verwenden. dann hab ich die nur mit
<?php require 'check.php' ;?>
aus der Index.php aufgerufen.

den Code hab ich mal so angepasst, falls ich das richtig verstehe , öffne ich zu anfag eine neue Session und beende die zum schluss, davor lösche ich alle gespeicherten Daten dieser Session.


<? ob_start();
session_start();
require("/home/httpd/vhosts/haus-klingensang.de/httpdocs/forum/SSI.php");
global $context, $settings, $user_info;

if ($user_info['is_guest']) {
echo "<span style='color: red;'>Du bist nicht angemeldet, bitte im Forum einloggen</span>";
die;}
session_unset();
session_destroy();
// Ab hier die Inhalte der User, die der angemeldete User sehen soll.
?>


so funktioniert es und es kommt keine Fehlermeldung mehr *freu*

also der erste Teil klappt schon mal ganz gut, bleibt noch der Teil mit den Gruppen.

und ich hab mir die Frage gestellt , ob man dies nicht auf das ganze Verzeichnis ausweiten kann über HTACCESS ?
So müsste ich die check.php jetzt am anfang alle .php Datein ausführen lassen. Das ist nur sone Idee, sollte das nciht gehen, wäre das auch nicht so schlimm, dann müsste ichhalt wirklich die datein anfassen, dei deren Aufruf der Login gecheckt werden muss.

@Angie, ich denke mal das mit der config.php hat sich dann wohl erledigt, der Aufbau ist wohl nicht mehr interessant?
zur Gruppenabfrage: ich habe mindestens 3 Gruppen im Forum ("Admin" , "Offiziere" , "Haus Klingensang" wobei ich selbst also Admin und auch die Offiziere auch derGruppe "Haus Klingensang" angehören, da sollte die eine Gruppe reichen, und eine Gruppe "Raidgäste")
, also doch mehr als 3 wobei 2 reichen sollten, da in den beiden alle möglichen in Frage kommenden User drin sind!

jetzt müsste ich nur wissen wie ich diese beiden Gruppen abfragen kann und wie die ssi.php die Gruppe als Variable übergibt.

vielen Dank noch mal für die Mühe

Gruß Olaf

Angie

Wofür ist die Session gut?
Du hast doch bereits eine Session durch das Forum laufen?
Welche Daten der Session löschst du? Ich sehe nirgends ein Varialbenzuweisung an die Session.

Die Gruppenabfrage ist simple zu machen. Dazu schau dir den WHERE Parameter genauer an. Mit field_in_set kann man auch aus Listen Daten filtern.

Greetings from Angie (fiancé of mediman ;-))


LortGob

Sorry to break in here like that, but I've encountered the same session error as OleD and can't seem to find an answer. They began appearing when I installed the discussbot (http://www.simplemachines.org/community/index.php?topic=58578.0) and only go away when I deinstall the bot.

As my German isn't that good to understand what you did to solve this, could someone please explain in English in a PM?

Thx!
hxxp:www.energieportal.nl [nonactive]

MisterT

Hello,

I'm also having the same issue as described originaly.
Unfortunaly, I can't speak German...  :(

Do you have solved the issue ?
If yes, would you mind explaining me (us ?) how, in English ?

Thanks a lot for your help,

Advertisement: