Session mit Frameseiten

radarin

Angesehenes Mitglied
Die Session generiere ich so:

CODE
<?php
session_start ();



Nun arbeite ich mit Frames. Reicht es wenn ich das vor die Framedefinition stelle, oder muss ich das in jede Seite Packen die ich in ein Frame lade..?
 
QUOTE (radarin @ Mi 28.9.2005, 16:58) [...]
Nun arbeite ich mit Frames. Reicht es wenn ich das vor die Framedefinition stelle, oder muss ich das in jede Seite Packen die ich in ein Frame lade..?

Du musst auch an jede Frameseite die Session-ID übergeben, sprich auch die entsprechenden Kontrollen in jeder Seite einbauen, dann funktioniert es. ;-)


MfG Sascha Ahlers
 
Session ID übergeben? Also einfach session_start (); am Anfang der Seite einfügen..?
 
QUOTE (radarin @ Mi 28.9.2005, 21:21)Session ID übergeben? Also einfach session_start (); am Anfang der Seite einfügen..?

Und die Einträge bei der Frameseite wie einen Link behandeln auf der Seite, oder arbeitest Du etwa mit Cookies, dann würde ich Dir da eher von abraten, Cookies sollte man nur verwenden, wenn es unbedingt sein muss. Oder zumindestens immer eine Alternative anbieten können.
Soweit ich weiß, ist dies auch mit den Session-Fuktionen möglich, nur wie es nochmal genau ging, weiß ich so nicht mehr.

Quellcode Beispielt einer Session-Übergabe via Link:

HTML <frame src="unterseite.php?sid=64c71c20abdbd7778a8e85d43c94ef7a" />




MfG Sascha Ahlers

PS: Ich habe mir nur mal kurz die Session-Funktionen angeschaut, ich arbeitet sonst mit einem eigenen Session-System.
 
QUOTE (chogle @ Mi 28.9.2005, 23:24)wiso mit einem eigenen? das interessiert mich :) kannst du das bitte mal erläutern?

Nun das hat unter anderem damit zu tun, dass ich meine eigene Session-Abhandlung seit PHP 3 benutze, ich mich lieber auf meine selber geschriebenen Funktionen verlasse (teilweise selbst dann, wenn diese Funktionen schon in PHP existieren, da ich mir die ein oder andere Funktion schon mal selber schreiben musste, weil sie nicht so funktionierte wie in der PHP Dokumentation beschrieben) und ich bisher keinen Grund gesehen habe, meine angepasstes Session-Handling gegen das integrierte Session-Handling von PHP zu tauschen, da ich doch etwas freier in der Benutzung sein kann.
Und einen wirklich eindeutigen Preformence-Gewinn sehe ich beim Wechsel auch nicht.

Nebenbei verwendet auch nicht jedes OpenSource-Programm unbedingt die PHP eigene Sessionabwicklung, wie z. B. (AFAIK) das Forum-System phpBB 2.



MfG Sascha Ahlers
 
Hallöchen
habe auch ein Problem mit meine Frames
Ich kann mich einlogen und bekomme dann die Haupseite wenn ich jetzt ein link anglicke kriege ich die Medlung,das ich nicht eingelogt bin.
Habe auf jeder Seite diesen Code in oberen Breich eingefügt

CODE <?php
session_start();
?>
<?
if (!session_is_registered('user'))
{
die ("Sie müssen sich einloggen!");
}
?>

habe das gefühlt das die session nicht übergen wird
Grüß
Martin
 
Hast Du auch sichergestellt, dass nicht eine alte Version der Seite geladen wird, oft wird nicht darauf geachtet, dass der Cache die Änderungen überdecken kann, besonders problematisch kann sowas beim MSIE werden.

Die kann natürlich auch dadurch passieren, dass die SID nicht richtig übergeben wird bzw. aufgerufen wird.



MfG Sascha Ahlers
 
Ich komme jetzt voll in schleudern über den Internetexplorer geht es
Firefox opera u.s.w nicht,daten habe ich gelöscht ist verlleicht in login ein fehler
CODE <?
if ($anmelden) { anmelden($fertig, $user, $password1, $password2, $email);}
else if ($abmelden) { abmelden($fertig, $user, $password);}
else if ($forgot) { forgot($fertig, $email);}
else { login($fertig, $user, $password);}

?>
<?
function inhalt($user)
{
session_start();
session_register("user");
?>
<frameset cols="180,800" bordersize="0" frameborder="0" framespacing="0" border="0">
<frame marginwidth="0" marginheight="0" bordersize="0" frameborder="0" border="0" scrolling="no" src="navigation.php" name="nav">
<frame marginwidth="0" marginheight="0" bordersize="0" frameborder="0" border="0" scrolling="auto" src="startseite.php" name="inhalt">


<noframes>
<body>
Ihr Browser unterstützt keine Frames!
</body>
</noframes>
</frameset>
</html>
<?
}
?>
<?
function login($fertig, $user, $password)
{
include("config.php");

if ($fertig) {

$abfrage = mysql_query ("SELECT * FROM login WHERE user = '$user'");
$reihen = mysql_num_rows($abfrage);
if ($reihen <= 0) {
echo "Unbekannter Benutzername!";
}
else {
while ($row = mysql_fetch_object ($abfrage)) {
if ($row->password==$password) {
inhalt($user);
}
else {
echo "Falsches Passwort!";
}
}
}

}

else {
echo "Zum anmelden geht es <a href=\"$PHP_SELF?anmelden=yes\">hier</a> lang!";
echo "<p><h2>Login</h2></p>";

echo "<form method=\"POST\" action=\"$PHP_SELF?fertig=yes\">";
?>
<table cellspacing="1" cellpadding="2" border="0">
<tr>
<td><font size="2">Benutzername:</font></td>
<td><font size="2"><input type="text" name="user" value=""> </font></td>
</tr>
<tr>
<td><font size="2">Passwort:</font></td>
<td><font size="2"><input type="password" name="password" value=""></font></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value=Login></td>
</tr>
</table>
</form>
<?
echo "<p><a href=\"$PHP_SELF?forgot=yes\">Passwort vergessen?</a><br><a href=\"$PHP_SELF?abmelden=yes\">Abmelden</a></p>";
}

}
?>


<?
function anmelden ($fertig, $user, $password1, $password2, $email)
{
include("config.php");

if($fertig) {
$abfrage1 = mysql_query("SELECT user FROM login");
while ($row = mysql_fetch_object ($abfrage1)) {
if ($row->user==$user) {
echo "Dieser Benutzer existiert schon!";
exit;
}
}
if ($user=="" OR $password1=="" OR $password2=="" or $email=="") {
echo "Sie haben mindestens ein Feld nicht ausgefüllt!";
}
else if ($password1!=$password2) {
echo "Ihr Passwort ist ungleich Ihrer Wiederholung!";
}
else {
$anfuegen=mysql_query("INSERT INTO login (user, password, email) VALUES ('$user','$password1', '$email')");
echo "Erfolgreich angemeldet! Sie können sich nun einloggen:<br>";
@login();
}
}
else {
echo "<h2>Anmelden</h2>";
echo "<form method=\"POST\" action=\"$PHP_SELF?anmelden=yes&fertig=yes\">";
?>
<table cellspacing="1" cellpadding="2" border="0">
<tr>
<td><font size="2">Benutzername:</font></td>
<td><font size="2"><input type="text" name="user" value=""> </font></td>
</tr>
<tr>
<td><font size="2">Passwort:</font></td>
<td><font size="2"><input type="password" name="password1" value=""></font></td>
</tr>
<tr>
<td><font size="2">Wiederholen:</font></td>
<td><font size="2"><input type="password" name="password2" value=""></font></td>
</tr>
<tr>
<td><font size="2">E-Mail:</font></td>
<td><font size="2"><input type="text" name="email" value=""> </font></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value=Anmelden></td>
</tr>
</table>
</form>
<?
}

}
?>




<?
function forgot ($fertig, $email)
{

include("config.php");

if ($fertig) {
$abfrage=mysql_query("SELECT * FROM login");
while ($row = mysql_fetch_object ($abfrage)) {
if ($email==$row->email) { $ismail="true"; }
}
if ($ismail=="true") {
$password=mysql_query("SELECT * FROM login WHERE email = '$email'");
while ($row = mysql_fetch_object ($password)) {
$nachricht="Hallo $row->user!\n\nIhr Passwort ist:\n\n$row->password\n\nMfG\nAdmin";
}
mail($email, "Passwort", $nachricht, "From: Administrator");
?>
<p>Das Passwort wurde Ihnen erfolgreich an die Adresse <i><? echo $email; ?></i> geschickt!<br>
Rufen Sie Ihre E-Mails ab und loggen Sie sich ein.<br></p>

<?

@login();
}
else { echo "Ihre angegebene E-Mail Adresse wurde nicht gefunden!";}
}
else {

echo "<p><h2>Passwort vergessen</h2><p>";
echo "<p><form method=post action=\"$PHP_SELF?forgot=yes&fertig=yes\">";
?>
<table cellspacing="1" cellpadding="2" border="0">
<tr><td><font size="2">E-Mail Adresse:</font></td><td align=center><input type=text name=email></td></tr>
<tr><td colspan="2" align=center><input type=submit value="Schicken!"></td></tr>
</table></form></p>
<?
}
}
?>



<?
function abmelden($fertig, $user, $password)
{

include ("config.php");

if($fertig) {
$abfrage = mysql_query ("SELECT * FROM login WHERE user = '$user'");
$reihen = mysql_num_rows($abfrage);
if ($reihen <= 0) {
echo "Unbekannter Benutzername!";
}
else {
while ($row = mysql_fetch_object ($abfrage)) {
if ($row->password==$password) {
$delete = mysql_query ("DELETE FROM login WHERE user = '$user'");
echo "Ihre Daten wurden erfolgreich aus der Datenbank entfernt!";
}
else {
echo "Falsches Passwort!";
}
}
}

}
else {
echo "<p><h2>Abmelden</h2></p>";
echo "<form method=\"POST\" action=\"$PHP_SELF?abmelden=yes&fertig=yes\">";
?>
<table cellspacing="1" cellpadding="2" border="0">
<tr>
<td><font size="2">Benutzername:</font></td>
<td><font size="2"><input type="text" name="user" value=""> </font></td>
</tr>
<tr>
<td><font size="2">Passwort:</font></td>
<td><font size="2"><input type="password" name="password" value=""></font></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value=Abmelden></td>
</tr>
</table>
</form>
<?
}

}

 
Du kannst ja einfach mal probieren, die Session ID aus dem Frameset, an die Frames zu übergeben. Evtl. hast du Glück, und es geht. Also zB:

CODE
<frame marginwidth="0" marginheight="0" bordersize="0" frameborder="0" border="0" scrolling="no" src="navigation.php?<?=session_name() . '=' . session_id();?>" name="nav">

<frame marginwidth="0" marginheight="0" bordersize="0" frameborder="0" border="0" scrolling="auto" src="startseite.php?<?=session_name() . '=' . session_id();?>" name="inhalt">


Ansonsten empfehl ich dir mal, die PHP-Konfiguration zu überprüfen. register_globals sollte unbedingt ausgeschaltet werden, bei dir ist's scheinbar an. Evtl. ist bei dir session.use_trans_sid abgeschaltet, wenn dem so ist, hast du evtl. das Problem gefunden.

Desweiteren empfehle ich dir die Dokumentation zu der Funktion mysql_escape_string zu lesen. Das was du da zusammengebaut hast, ist so riskannt, sollte deine Seite viele Besucher haben, knacken dir die ersten Script-Kiddys die vorbeikommen die Seite in weniger als 5 Minuten.
 
habe die daten in der php.ini geprüft register_globals ist on und das andere ist auch an.
Wie kann man dies ändern ,habe glasube ich kein zugriff drauf
Habe jetzt schon mehrer scripte probiert,welchen können Sie mir dann endfehlen in punkto sicherheit

grüß
Martin
 
Ich dachte das war deine eigene Schöpfung... Wenn du ein fertiges CMS haben willst, davon gibt es so einige. Typo3, Mambo, Joomla, Postnuke, Papaya, ModxCms, Drupal,... usw. usw.... gibt also eine Menge Auswahl. Ich verwende mein eigenes, das ist daher auch das einzige was ich empfehlen kann, da ich es selbst verbockt habe :)
 
Zurück
Oben