Pagina refresh
Ik heb een vraagje over het refreshen van de site. Mijn site bestaat uit 3 frames:
1. boven.php
2. links.php
3. hoofd.php
Als ik in het linker frame een login-script include werkt dit perfect, maar als er ingelogd is, moet hij de site vernieuwen en dat werkt niet. Heeft iemand een idee hoe dit moet?? Bijvoorbeeld als ik inlog wil ik in het bovenste frame een menu te zien krijgen die alleen te zien is voor gebruikers die zijn ingelogd. Dus in het linker frame log ik in en dan wil ik de site refreshen om vervolgens in het bovenste frame een menu te laten zien voor gebruikers die zijn ingelogd.
Ik hoop dat iemand mij kan helpen.
Alvast vriendelijk bedankt,
groeten Domi
dus
<form method="post" action="" target="_parent">
loginscript
</form>
Stuur een GET-variabele mee in de action regel. Dus index.php?actie=login
Als hij is ingelogd geef je hem sessievariabele mee.
b.v. $_SESSION['ingelogd'] = 1;
Dan kan je de menu's veranderen in je kop.php dmv
Code (php)
Vergeet niet de session_start() regel bovenaan iedere pagina te zetten.
<form name="form1" method="post" action="inloggen.php">
script
</form>
Ik maak ook al gebruik van sessies, ik heb in het bovenste frame dus ook gebruik gemaakt van:
if(isset($_SESSION['sgebruiker'])) {
/* hier moet dan het menu komen voor de ingelogde gebruiker */
}
session_start() heb ik boven aan de pagina staan.
Wat doe ik fout? Of snap ik niet wat je bedoelt?
http://members.lycos.nl/dominique_zwols/Frame_site/index1.html
Als je inlogd zou de tekst je bent ingelogd al gelijk tevoorschijn moeten komen. Nu komt die pas als je op vernieuwen drukt. Dit is even ipv het menu, maar met hetzelfde principe.
Groeten Domi.
<form name="form1" method="post" action="inloggen.php" target="_parent">
Dit moet normaal gesproken werken om alles te laten refreshen. Als je het verkeerd schrijft, dan opent hij inderdaad een nieuw venster.
Het is 'Onthoud mijn gegevens' :D
Maare kijk nu nog maar eens op de site, de regel is nu letterlijk (gekopieert):
<form name="form1" method="post" action="inloggen.php" target="_parent">
Maar wat hij nu doet is alleen het linker frame, waar je dus inlogd, in een venster openen, nu zie je het boven en het hoofd frame nergens meer.
EDIT
Wat eventueel ook zou kunnen werken is de indexpagina includen in je inloggen.php. Doe dit dan wel nadat de controle is uitgevoerd.
Gewijzigd op 08/11/2005 14:27:00 door Robert Deiman
Bij deze code opent hij een nieuw venster
<form name="form1" method="post" action="" target="_parent">
en bij deze code geen nieuw venster, maar gewoon zoals het hoort in het frame, maar de pagina wordt nog niet ververst
<form name="form1" method="post" action="" target="">
Gewijzigd op 08/11/2005 14:41:00 door Dominique
Groeten Domi
<form name="form1" method="post" action="" target="TOP">
Het enige dat die dan niet doet is de hele pagina verversen, maar zoals je het in je laatste reply omschrijft wil je dat het topframe dan verandert.
gewoon de hoofdpagina opnieuw laten openen
ps. Als ik de target vernader in de naam van het bovenste frame, dan opent hij alles wat ie in het linkerframe moet openen in het bovenste frame, dat is ook niet wat ik wil. In het linkerframe staat dan bijvoorbeeld dat je bent ingelogd en in het bovenste frame komt het menu te voorschijn.
Dan kan je in een "tussenpagina" (hoeft de gebruiker niets van te zien) controleerd of de gegevens goed zijn en een sessie aanmaakt en een sessievariabele ($_SESSION) gaat vullen, kan je met de header functie opnieuw de pagina laden. Het verschil zit hem in de aangemaakte sessie. Die is op te halen in alle delen van je pagina.
Code (php)
1
2
3
4
2
3
4
<?
header("Location: http://www.adresvanjesite.nl/");
// verander dit in het adres van jouw site
?>
header("Location: http://www.adresvanjesite.nl/");
// verander dit in het adres van jouw site
?>
Als je dan in je navigatie frame en in je topframe contoleerd op die sessie, dan kan je indien de sessie goed is weergeven wat je weer wilt geven wanneer iemand is ingelogd, anders dan krijgt iemand gewoon weer het oude menu terug ;)
Gewijzigd op 08/11/2005 22:16:00 door Robert Deiman
Code (php)
1
2
3
4
2
3
4
<?
header("Location: http://www.adresvanjesite.nl/");
// verander dit in het adres van jouw site
?>
header("Location: http://www.adresvanjesite.nl/");
// verander dit in het adres van jouw site
?>
En vervolgens deze pagina includen als er op de submit knop wordt gedrukt? Dat van die target op _parent dat klopt, wordt er een nieuwe pagina geopent :) Nu dus nog de index.html ergens in de header.
www.google.nl opent:
Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\domi_site\frame_site\inloggen.php:69) in c:\apache\htdocs\domi_site\frame_site\tussen_pagina.php on line 2
Deze foutmelding krijg ik in plaats dat ie een andere pagina bv. Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\domi_site\frame_site\inloggen.php:69) in c:\apache\htdocs\domi_site\frame_site\tussen_pagina.php on line 2
Als je inlogt en op submit drukt kun je het formulier gewoon naar hetzelfde frame sturen en checken.
Alleen moet je dit stukje javascript in de headers van het linkerframe zetten.
Alleen even de paginanaam.php veranderen in de naam van het bestand dat je wilt openen in het topframe en framenaam veranderen in de naam van dat topframe.
<head>
<SCRIPT type="text/javascript" LANGUAGE="JavaScript">
<!--
open("paginanaam.php", "framenaam");
//-->
</script>
</head>
ob_start();
moest plaatsen. Alleen ik heb nu nog een klein probleem, namelijk de index.1.html wordt opnieuw geopent, dit moet ook, maar vervolgens komt er dmv een 'loop' de tekst die in het bovenste frame staat in het linker frame te staan. In een oneindige loop dus. Weet iemand dit op te lossen?
groeten Domi
Mijn pagina bestaat dus uit 3 frames. In het linker frame moet je de code:
bovenaan de pagina plaatsen. En vervolgens moet je controleren of er op de submit knop wordt gedrukt van je inlogscherm, zo ja dan moet er een nieuw venster geopent worden (in het form bij target de keuze _parent kiezen) door middel van een include van een tussenscherm. In dat tussenscherm staat alleen de volgende code:
Als je alles eens wist van tevoren :)
ThnX iedereen !!
Dominique:
Oke dan, ik ben er uit. Bedankt allemaal voor de hulp. Het was wel even puzzelen, maar dan heb je ook wat :-)
Mijn pagina bestaat dus uit 3 frames. In het linker frame moet je de code:
bovenaan de pagina plaatsen. En vervolgens moet je controleren of er op de submit knop wordt gedrukt van je inlogscherm, zo ja dan moet er een nieuw venster geopent worden (in het form bij target de keuze _parent kiezen) door middel van een include van een tussenscherm. In dat tussenscherm staat alleen de volgende code:
Als je alles eens wist van tevoren :)
ThnX iedereen !!
Mijn pagina bestaat dus uit 3 frames. In het linker frame moet je de code:
bovenaan de pagina plaatsen. En vervolgens moet je controleren of er op de submit knop wordt gedrukt van je inlogscherm, zo ja dan moet er een nieuw venster geopent worden (in het form bij target de keuze _parent kiezen) door middel van een include van een tussenscherm. In dat tussenscherm staat alleen de volgende code:
Als je alles eens wist van tevoren :)
ThnX iedereen !!
Euh, maar als ik het goed begrijp, werkt dit dan ook wanneer ik een foute username en password invoert? Je zegt dat er gecontroleerd wordt of je op de submitknop drukt van je inlogscherm, maar zou je niet moeten controleren of de inloggegevens wel kloppen?
Nee, dan werkt het niet. Er wordt op elk stuk van de pagina dmv sessies gecontroleerd of je bent ingelogd of niet. Als je wel bent ingelogd, dan opent ie een nieuw scherm, met de gegevens die je alleen mag zien als je bent ingelogd. Als er geen sessie is, dan ben je dus nog niet ingelogd en blijf je gewoon het inlogscherm zien. Wel wordt de pagina opnieuw geladen, maar dat maakt niet uit, je kunt niks beginnen zolang je niet bent ingelogd.
Oké, dan is het goed.. was al bang :P dat dat nu nog geregeld zou moeten worden.. Maar het werkt nu :D