Toon posts:

[PHP] Frame refresh / Inlogsysteem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mensen,

Ik heb me rotgezocht op dit forum en op php.net, maar nog niets gevonden wat ik zoek.

Het volgende:

Ik heb een inlogsysteem die gebruik maakt van sessies en een MYSQL db. Dit werkt allemaal perfect.

Ik heb een site die gebruik maakt van frames. De inlogpagina wordt in het main venster geopend. Als gebruikers nu inloggen worden ze dmv.
PHP:
1
 header("Location: beveiligd.php");
doorgestuurd naar een beveiligde pagina. Daar worden ze welkom geheten etc. Werkt allemaal goed.

Nu heb ik in mijn bovenste frame ook een inlog link staan. Als gebruikers ingelogt zijn komt hier ook een welkomswoordje te staan en een uitloglink. Dit werkt op zich wel, maar dan moet ik eerst het bovenste frame handmatig refreshen. Ik zou graag willen dat dit automatisch gebeurt.

Onder staat de php code. Iemand een idee? En alsjeblieft geen opmerking dat ik van de frames af moet, want dat gaat niet. Ik moet het met frames doen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
session_start(); // sessie beginnen
// controleren of pagina correct is aangeroepen.
if (!empty($_POST)){
    include("inc_connect.php");
    $query = "SELECT * FROM gebruikers 
                WHERE gebruikersnaam='" . $_POST["gebruikersnaam"] ."' 
                AND wachtwoord='". $_POST["wachtwoord"]. "'"; 
    $result = mysql_query($query) or die("FOUT : " . mysql_error()); 
    if (mysql_num_rows($result) > 0){
        // gebruikersnaam gevonden, registreer gegevens in session
                $gebruikersnaam = $_POST["gebruikersnaam"];
                $wachtwoord = $_POST["wachtwoord"]; 
        session_register("gebruikersnaam"); 
                session_register("wachtwoord");
                   // Doorsturen naar beveiligde pagina
        header("Location: beveiligd.php"); 
        exit(); 
    }else{
            // geen gebruikersnaam adres gevonden, of ongeldig wachtwoord.
        $tekst = "U hebt geen geldige combinatie van gebruikersnaam en 
                wachtwoord opgegeven. Maak een keuze: <br>
                <a href=\"login.php\">Opnieuw inloggen</a><br>
                <a href=\"register.php\">Hier registreren</a><br>";
            die($tekst);
        }
}else{
    // pagina was incorrect aangeroepen, direct doorsturen naar login.php
    header("Location: login.php");  
?> 
}

?>

  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

PHP:
1
// Doorsturen naar beveiligde pagina 

wordt
PHP:
1
echo "<script type='text/javascript'>top.frames.['framenaam'].location.reload()</script>";

[ Voor 19% gewijzigd door André op 09-02-2004 12:52 ]


Verwijderd

Topicstarter
Werkt helaas niet.

Ik krijg als ik het boven de php header code zet een foutmelding. Als ik hem daaronder zet blijft het hetzelfde.

Foutmelding:

Warning: Cannot modify header information - headers already sent by (output started at D:\Websites\www\familie\login\login2.php:23) in D:\Websites\www\familie\login\login2.php on line 24

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op 09 februari 2004 @ 13:05:
Werkt helaas niet.

Ik krijg als ik het boven de php header code zet een foutmelding. Als ik hem daaronder zet blijft het hetzelfde.
Ik neem aan dat je deze regel
PHP:
1
 header("Location: beveiligd.php");

vervangen hebt door de regel van André?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

- Zet de regel van Andre in beveiligd.php.

- Zorg ervoor dat je geen output stuurt naar de browser voordat je een header() stuurt. Dus ook geen lege regels aan de eind van de includes.

- op regel 30 staat een ?> te veel.... ( misschien is die bij het pasten gekomen )

Programmer - an organism that turns coffee into software.


Verwijderd

Topicstarter
Euhh nee, ik wil ze graag allebei behouden. Dus dat ie doorgestuurd wordt naar beveiligd.php en dat het bovenste frame gerefresht wordt.

Als ik de regel vervang krijg ik deze:

=====================
Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
=====================

Ik gebruik overigens Apache 2.048 en PHP 4.2.3.

Verwijderd

Topicstarter
Die ?> te veel kwam inderdaad door het pasten.

Ik heb de regel in beveiligd.php gezet, maar heeft geen uitwerking. :'( Blijft zoals hetwas, zonder foutmeldingen.

De code voor beveiligd.php is als volgt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php session_start(); 
?>
<HTML>
<HEAD>
<TITLE>blabla</TITLE>

<link rel="stylesheet" href="blabla" type="text/css">

<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</HEAD>

<BODY>

<?php 
if (!isset($_SESSION["gebruikersnaam"])){
    $tekst = "<h2>U bent nog niet aangemeld.</h2>
        U kunt <a href=\"login.php\">hier inloggen</a> of<br>
        U kunt zich <a href=\"register.php\">hier registreren</a>";
    echo($tekst);
}else{?>
<table width="100%" border="0" cellspacing="5">
  <tr> 
    <td>
      <h1>Beveiligde pagina</h1>
    </td>
    <td align="right"><a href="logout.php">Uitloggen</a></td>
  </tr>
  <tr>
    <td>Welkom <?php echo($_SESSION["gebruikersnaam"]);?></td>
    <td>&nbsp;</td>
  </tr>
</table>
<?php
}
?>
<hr>
</body>
</html>

  • waik
  • Registratie: Mei 2003
  • Laatst online: 01-01 19:22
ik heb precies hetzelfde, en bij mij werkt het wel maar dan met dit javascript regeltje erbij:

PHP:
1
2
3
4
5
<script language="JavaScript" type="text/javascript">
<!--
parent.[naam van de frame].window.location.href="[relatieve link]";
//-->
</script>


wat tussen de [] staat moet je natuurlijk zelf ff invullen. en de javascript moet natuurlijk in de header of tussen de header en de body :-)

[edit: syntaxhighlighting + de opmerking dat dit in elke browser werkt :-) [/edit]

[ Voor 28% gewijzigd door waik op 09-02-2004 13:32 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

flikker eens een ob_start() bovenin je script en je bent van al het header-gezeik af ;)

Verwijderd

Topicstarter
WAik,

Waar moet ik deze code neerzetten? In het loginscript of de pagina beveiligd.php. Ik heb het beide geprobeerd, maar krijg het niet aan de gang. Ook geen foutmelding oid.

Bosmonster een ob_start() ? ik heb ff gezocht op php.net, maar wordt er niet veel wijzer van. Hoe werkt dit en waar moet ik deze plaatsen?

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Dat is vies, dan vang je eerst alle output af, en dan pas print ie em op je beeld. Niet zo netjes :p

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik heb het idee dat je de essentie van de oplossingen die worden aangeboden niet helemaal begrijpt.
Hoe goed is je javascript kennis?

Het idee is simpelweg dat je na het laden van die beveiligd.php een scripje draait dat het bovenste frame refresht. Als je binnen de <head> tags nu eens een stukje javascript code zet die dit voor je afhandelt.
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
   <head>
      <script type="text/javascript">
          function doRefreshTop() {
             // zet hier een van de scrippies die je hierboven zo gracieus kreeg aangereikt. bv:
            top.frames.['framenaam'].location.reload();

            // niet vergeten framenaam te vervangen door de naam van het bovenste frame
          }
      </script>
   </head>
   <body ... onload="javascript:doRefreshTop();">
   ...etc
</html>


Deze code wordt na het laden van beveiligd.php automatisch uitgevoerd.
Oh ja, ook niet vergeten de drie puntjes (...) te vervangen door jouw eigen zut.

[ Voor 27% gewijzigd door bigbeng op 09-02-2004 18:31 ]


  • waik
  • Registratie: Mei 2003
  • Laatst online: 01-01 19:22
precies zoals de vorige poster het uitlegde bedoelde ik het ook. of je het in een functie gooit of niet maakt niet veel uit. dat 'parent.window..'-etc gedoe werkt toch wel. je moet het trouwens in beveiligd.php gooien, omdat deze wordt uitgevoerd en dus er voor kan zorgen dat de javascript client-side wordt uitgevoerd zodat alles tegelijk wordt gefreshed. 'maar dat is logisch' [johan-cruijf-stemmetje :o ]

Verwijderd

Topicstarter
YES! Ik heb 'm! Thanx a lot!! _/-\o_

Mijn javascript en php kennis is nog niet zo heel goed :D
Pagina: 1