[PHP] Na inloggen Sessie automatisch terug naar vorige page

Pagina: 1
Acties:
  • 285 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bor
  • Registratie: Februari 2001
  • Nu online

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
Hoi,

Ik ben aan het worstelen met een PHP inlog mechanisme op basis van sessies en mysql. Op zich werkt dit prima echter krijg ik het niet voor elkaar om iemand die is ingelogd automatisch door te sturen naar een nieuwe pagina, of liever nog terug te laten gaan naar de pagina waar ie vandaan kwam voordat hij op "log in" drukte.

Hieronder staat de code die ik voor het controlleren van de sessies en het inloggen gebruik (headers etc weggelaten):

code:
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
40
41
42
43
44
45
<?php 
session_start(); 
?>

<form action="login.php" method="post" name="LoginForm" id="LoginForm">
            <center>        
            Username <br>
            <input name="FormName" type="text" id="name"> <br>
            Password <br>
            <input name="FormPassword" type="password" id="password"> <br> <br>
            <input type="submit" name="Submit" value="Login"></center>
        </form>


<?php 

If (isset($_POST['Submit'])) 
{ 

    $DBHost = "dbhost"; 
    $DBLogin = "dblogin"; 
    $DBPassword = "dbpassword"; 
    $DBDatabase = "dbdatabase"; 

    mysql_connect("$DBHost", "$DBLogin", "$DBPassword") or die ("Could not connect to database.");
    @mysql_select_db("$DBDatabase"); 

    $name = addslashes($_POST['FormName']); 
    $password = addslashes($_POST['FormPassword']); 
    
    $Query = mysql_query("SELECT * FROM users WHERE name = '$name' AND password = '$password'"); 
    $Results = mysql_num_rows($Query); 

        if ($Results == '1') 
            {   $Login = "1"; 
                session_register("Login"); 
                echo "Welcome $name<br>";
                echo "Je bent ingelogd. Klik <a href=\"index.php\">hier</a> om verder te gaan.<br>"; 
            } 
        else 
            {   echo "Your username and/or password is incorrect.<br>"; 
            } 

} 
?>


Het is dus de bedoeling in dit deel van de code de persoon terug te sturen naar waar ie vandaan kwam, maar dan wel ingelogd zijn:

code:
1
2
3
4
5
6
7
8
9
if ($Results == '1') 
            {   $Login = "1"; 
                session_register("Login"); 
                echo "Welcome $name<br>";
                echo "Je bent ingelogd. Klik <a href=\"index.php\">hier</a> om verder te gaan.<br>"; 
            } 
        else 
            {   echo "Your username and/or password is incorrect.<br>"; 
            }

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum


Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 09-02-2023
In PHP kun je naar een pagina redirecten mbv de Header() functie. Het is wel zeer vervelend dat die Header() steeds moet opgeroepen worden voordat je ook maar 1 letter HTML gepost hebt, ofzoiets. Je moet er eens de handleiding op nalezen.

Een alternatief daarvoor is het zelf schrijven van een functie'tje in javascript/vbscript om te redirecten. Deze manier vind ik veel beter :)


Om te weten van welke pagina de gebruiker vandaan komt, kun je misschien de URL meegeven als queryvariabele. In asp.net wordt een dergelijke manier toegepast...

[ Voor 19% gewijzigd door Feyd-Rautha op 28-09-2003 16:50 ]

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Acties:
  • 0 Henk 'm!

  • dArtagnan
  • Registratie: Mei 2002
  • Laatst online: 09-06 23:36

dArtagnan

Een voor allen, allen voor een

PHP:
1
header("location: ".$_SERVER['HTTP_REFFERER']);

Of als je het automatisch wil laten gaan na x seconden (wel met javascript)
JavaScript:
1
setTimeOut("document.location='blaat.html'", 3000);

Ben niet helemaal zeker of dit ook werkt:
JavaScript:
1
setTimeOut("history.go(-1)", 3000);


Je kunt ook in het formulier een hidden field meegeven waar je de url zet van de huidge pagina
HTML:
1
<input type="hidden" name="redirect_url" value="<?=$_SERVER['PHP_SELF'];?>" />

[ Voor 32% gewijzigd door dArtagnan op 28-09-2003 16:55 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
header("Refresh: 2;URL=index.php");

werkt ook aardig hoor. En daarbij is Refresh dus de tijd die het duurt voordat ie reload.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Expander
  • Registratie: Februari 2001
  • Niet online
Koraalduivel schreef op 28 September 2003 @ 16:54:
PHP:
1
header("location: ".$_SERVER['HTTP_REFFERER']);

Of als je het automatisch wil laten gaan na x seconden (wel met javascript) ...
Kan met een header ook automatisch.

edit: oeps, nogal te laat

[ Voor 10% gewijzigd door Expander op 28-09-2003 18:28 ]

Expanding the inexpandable


Acties:
  • 0 Henk 'm!

  • Bor
  • Registratie: Februari 2001
  • Nu online

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
Thanks! De header refferer doet het inderdaad :) Ik had al gezocht maar waarschijnlijk de verkeerde keywords gebruikt.

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum


Acties:
  • 0 Henk 'm!

  • Bor
  • Registratie: Februari 2001
  • Nu online

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
Kun je trouwens javascript binnen php gebruiken?

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Bor_de_Wollef schreef op 28 September 2003 @ 19:51:
Kun je trouwens javascript binnen php gebruiken?
:?

Hoe bedoel je? Je kan met PHP Javascript naar het scherm schrijven. Maar PHP is serverside, Javascript is over het algemeen clientside.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

je kan gewoon javascript in php zetten, maar dit word net als html pas verwerkt NAdat het script is geparsed door de server en word volledig door de client.

Dit is dus waarschijnlijk niet geschikt voor wat jij wilt, het kan misschien wel maar word een heel stuk lastiger dan gewoon met php doen.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Bor
  • Registratie: Februari 2001
  • Nu online

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
Ik zat er aan te denken de header afhankelijk te maken van een timer, ofwel zoals

"Binnen 5 seconden wordt u automatisch teruggestuurd naar de homepage. Klik hier om direct naar de homepage te gaan"

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum


Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 11-04 11:18
Wat is er mis met een META refresh? werkt ook prima en werkt ook wanneer JS gedisabled is.

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • Bor
  • Registratie: Februari 2001
  • Nu online

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
Ik krijg met de header de volgende error:

PHP Warning: Cannot modify header information - headers already sent by (output started at c:\inetpub\wwwroot\UpperMenu.php:11

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Je moet ook de headers als eerste naar de client sturen. Staat waarschijnlijk andere output, spatie oid, voor de header opdracht.

[ Voor 40% gewijzigd door gorgi_19 op 28-09-2003 20:35 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 17-06 10:07

WPN

// Use of $_SESSION is preferred, as of PHP 4.1.0
$_SESSION["login"] = 1;

hoe heb je de header ingebouwt nu kan je dat laten zien?

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • Bor
  • Registratie: Februari 2001
  • Nu online

Bor

Coördinator Frontpage Admins / FP Powermod

01000010 01101111 01110010

Topicstarter
Peluso schreef op 28 September 2003 @ 21:00:
// Use of $_SESSION is preferred, as of PHP 4.1.0
$_SESSION["login"] = 1;

hoe heb je de header ingebouwt nu kan je dat laten zien?
Dat is gelukkig ook alweer opgelost (danzij jullie). Ik had inderdaad html voor het header commando gezet per ongeluk. Vandaar dat de headers al verzonden waren elke keer. Omdat het een puntje (.) was kon ik het niet vinden eerst.

Over Bor | Vraag & Aanbod feedback | Frontpagemoderatie Forum


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Bor_de_Wollef schreef op 28 September 2003 @ 20:03:
Ik zat er aan te denken de header afhankelijk te maken van een timer, ofwel zoals

"Binnen 5 seconden wordt u automatisch teruggestuurd naar de homepage. Klik hier om direct naar de homepage te gaan"
als je dat wil moet je gewoon een meta refresh gebruiken die je door laat sturen met een linkje erbij.

das toch wel heel basic hoor

Blog [Stackoverflow] [LinkedIn]

Pagina: 1