Zwie Probleme mit Frames (php)..Hilfe

salo

Mitglied
Hallo miteinander,
Ich habe zwei Probleme mit Frames. Ich versuch habe meine Beispiel Dateien hingezugefügt.
Problem 1:
Am Anfang, wenn der User link ruft kommt frame-seite. Der navigation und Mainframe
hat. In Mainframe ist Loginseite. Bei Login Seite, wenn alles stimmt Setzt Sessions
wie $_SESSION['user']=$username;...Siehe bitte Code.
Ich habe gar nicht geschaft mit navigation Seite und Sessions zu kombininieren.
Wenn auf mein Browser cookies erlaubt sind, funktioniert alles wunderbar.
Wenn nicht, sollten mit Sessions schaffen. Kennt keine Sessions mehr wenn ich ein link in Navigation Teil klicke.
Wie würdet Ihr diese Kode verbessern, damit Sessions funktionieren. Ich habe
in Html Dateien session_start() probiert, aber hat's auch nicht geholfen. Jetzt habe ich weggelassen.

Problem2:
Ist egal, ob Cookies erlaubt oder nicht erlaubt ist wenn ich oben auf Aktualisieren/Nue Laden Button klicke, landet Mainframe immer zur Login Seite aber nicht wo er war.

p.s.: Datenbank Abfragen habe im mein Code erst weggelassen.

Danke mehr mals

Gruss

start:

Navi.html
[ /php ]
PHP:
<html>  
<head>  <title>Versuch</title>  </head>  
<body >  <img align="right" src="fzdlogo.gif" width=55 height=55>
    <table>  <tr><th>  
<a href="link1.php" target="MainFrame">start</a><br><br>  </th><th>  
<a href="link2.php" target="MainFrame">tour</a><br><br>  </th><th> 
<a href="link3.php" target="MainFrame">preise</a><br><br>  </th><th> 
<a href="link4.php" target="MainFrame"><font color="#ff0000">Abmelden<font></a>
<br><br>  </tr><th>  </table>  </body >  </html>

index.html:

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"    
 "http://www.w3.org/TR/html4/frameset.dtd">  <html>  <head>  <title>Versuch</title> 
 </head>  <frameset rows="88,*">    
<frame src="navi.html" name="Navigation" noresize>       
 <frame src="loginseite.php" name="MainFrame">        
<noframes>     xxxxxxxxx    </noframes>  
</frameset>

start.php

PHP:
<?php  session_start();  
if(SID) {    $sid1 = "?" . SID;    $sid2 = "&" . SID; 
}  else {    $sid1=""; $sid2=""; }  
$tour = array_item($_POST, 'tour');  
$preise  = array_item($_POST, 'preise');  
$logout	   = array_item($_POST, 'logout'); 
$changepass= array_item($_POST, 'changepass');    
$user	   =htmlentities($_SESSION['sesBenutzerName']); 
 // Formular Daten checken  // nur eigeloggte Benutzer können weiter arbeiten!     if(empty($user)) {     
 header("Location:loginseite.php");  	
          echo '<p><font color="#ff0000">Bitte erst anmelden!', 
     	 "</font>  ";
  	 exit; 
 } 
 if($eintragen) {      	
        header("Location: tour.php$sid1"); 
     	exit;  
} 
 if($changepass) {      	
    header("Location: changepassword.php$sid1");      	
    exit;
  } 
 if($preise){  		
header("Location: preise.php$sid1");  		
exit;  	 
} 
 if($logout){ 
   header ("Location: abmelden.php");  		
        exit; 
   }       
?>  
<form method="post" action="start.php"> 
 <input type="submit" value="tour"    name="tour" /> 
 <input type="submit" value="preise"    name="abfragen" />  
<input type="submit" value="Passwort ändern"    name="changepass" /><p>  
<input  style="color:#FF0000" type="submit"  value="Abmelden" name="logout"/ >  
</form>
 
Zuletzt bearbeitet:
1. Um eine Session aufrecht zu erhalten, muss in jeder Datei auf die verlinkt wird in der ersten Zeile (noch über dem DOCOTYPE) ein session_start(); stehen.

2. PHP-Code wird nur ausgeführt, wenn die Datei mit .php endet, nicht wie deine index.html

3. Wenn's ohne Cookies nicht funktioniert, musst du an jedem Link die Session-ID (nicht $_SESSION["ID"])mit anhängen.

Beispiel:
index.php?page=blub&".session_name()."=".session_id();

Ich hoffe, das hilft dir

mfg
split
 
vielen Dank!

jetzt funktioniert ohne cookies (also mit session). Aber ich habe
auf mozilla getestet. Mozilla ist ok! Aber wenn ich auf opera
cookies blockiere und diese Seite aufrufe funktioniert nicht mehr.
Gibt's unterschied zwischen Browsern bei Cookies?


Was ist mit meine zweite Problem kannst dazu auch was sagen?
meine zweite Problem ist. In diesem Frame ist egal wo ich bin! Der landet immer
login seite wenn ich auf update/aktualiesieren button klicke!
Was kann ich tun?
danke danke noch mals!
gruss
 
Zuletzt bearbeitet:
Da du Frames verwendest wird beim Klick auf "Aktualisieren" einfach das gesamte Frameset neu geladen. Weil du die Login-Seite als Startseite für das Frameset angegeben hast, wird diese auch beim Neuladen der gesamten Seite angezeigt.

Da kannst du eigentlich nichts dagegen tun, es sei denn du verwendest keine Frames oder lädst - obwohl du Frames benutzt - immer das ganze Frameset neu und gibst diesem als Startseite jeweils die gewünschte Seite. Dann aber lieber gleich ohne Frames!

Zu deinem anderen Problem: Wenn du jedem Link session_name()."=".session_id() mitgibst, müsste das eigentlich in jedem Browser funktionieren - egal ob Cookies aktiviert sind oder nicht (vorausgesetzt du hast auf jeder Seite, auf der die Session aktiv sein soll in der ersten Zeile den session_start()-Befehl). Sollte das in Opera bei blockierten Cookies nicht funktionieren (wovon ich nicht ausgehe) bin ich leider ratlos :(
 
Zurück