[PHP] header

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hi,

nu ben ik wel iets heel vaags tegen gekomen. direct maar de code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
session_start();
if ($_REQUEST['Logout']) {
    $_SESSION = array();
    session_destroy();
}
if ($_REQUEST['Login']) {
    include 'db.php';
    $username = $_REQUEST['username'];
    $password = $_REQUEST['password'];
    $query = mysql_query("SELECT ...");
    if (mysql_num_rows($query) == 1) {
        session_register('username');
        $_SESSION['username'] = $username;
    }
}
header("location: http://www.domein.nl/".$origin);


da's dus een in- en uitlog script. maar als ik inlog (dus de 2e 'if' doorloop) gaat-ie gewoon naar de juiste url, maar als ik uitlog niet (Forbidden - You don't have permission to access to this document on this server.) is dat geen typo trouwens?! "to access to this document", zal wel aan de tijd liggen.. 8)7

ik dacht, misschien ligt het aan de 2 regels om de sessie te destroyen (dat-ie dan alle variabelen destroyed ofzo) maar als ik die weglaat gebeurt er hetzelfde

ik heb zelfs de if's eens omgedraaid (ja ik moest er zelf ook om lachen :+)

anyone?

edit:

euh.. de titel is niet helemaal overgekomen..

[ Voor 11% gewijzigd door Verwijderd op 31-12-2003 03:37 ]


Acties:
  • 0 Henk 'm!

  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Uhm, ben niet echt bekend met PHP, maar heeft dat niet te maken met "session_destroy"? Ik bedoel dus dat $origin dan niet meer de waarde heeft die hij na inloggen wel heeft (is immers destroyed).

[ Voor 41% gewijzigd door Stamgastje op 31-12-2003 04:05 ]


Acties:
  • 0 Henk 'm!

  • Terranca
  • Registratie: April 2000
  • Laatst online: 18-09 18:25
PHP:
1
header("location: http://www.domein.nl/".$origin);


Waar haal je die $origin vandaan :? Als je die uit de session haalt verklaart t meteen een hoop nml ;)

[edit + ps]
Je code bevat wel overbodige dingen. session_register('username') is niet nodig als je hem vervolgens set met $_SESSION['username'] = $username. Volgens mij is je $_SESSION = Array () ook niet nodig als je session_destroy () oproept.

[ Voor 44% gewijzigd door Terranca op 31-12-2003 04:08 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
  • het ligt niet aan session_destroy() (zie TS)
  • $origin is geen session variabele
  • $origin komt van de (zelfde) vorige pagina (form)
nou ja, ik heb het wel opgelost door login en logout in 2 verschillende .php files te behandelen, maar dat was wel wat omslachtig.. tnx anyway!

[edit]
bedankt voor de opmerkingen, de session_register was inderdaad overbodig en
PHP:
1
2
3
4
if ($_REQUEST['Logout']) {
    $_SESSION = array();
    session_destroy();
}

heb ik gewoon maar netjes van php.net overgenomen.

[ Voor 34% gewijzigd door Verwijderd op 31-12-2003 11:50 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
wat me nu opvalt is dat ik altijd netjes al mijn variabelen uit een form ophaal met

PHP:
1
2
3
foreach($HTTP_POST_VARS AS $key => $value) {
    $$key = stripslashes($value);
}


maar alles wat je 'POST' met een html-form is dus automatisch al een variabele in PHP (zie $origin in TS). met de code in deze post wordt dan alleen alles nog even gestripped. zie ik dat goed? is deze foreach-lus verder overbodig?

Acties:
  • 0 Henk 'm!

  • _Sunnyboy_
  • Registratie: Januari 2003
  • Laatst online: 22:39

_Sunnyboy_

Mooooooooooooooooo!

welke waarde heeft $origin eigenlijk na het uitloggen. Heb je al geprobeerd om
PHP:
1
header("location: http://www.domein.nl/".$origin);

te vervangen door
PHP:
1
echo("location: http://www.domein.nl/".$origin);

Dan kan je zien wat ie eigenlijk probeert uit te voeren.

Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
sorry folks! heb de fout uit de TS gevonden, echt te dom.. *schaam* in het form om uit te loggen was ik de hidden field 'origin' vergeten (uiteraard). het was gisteravond gewoon te laat.. excuse me

Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
Dat houdt dus in dat je het field wel moet aanroepen als $_REQUEST['origin'] :)

[ Voor 10% gewijzigd door Alex op 31-12-2003 13:20 ]

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
nou, dat dacht ik ook, maar hij doet het dus zonder $_REQUEST ook.. (code is nu zoals TS)

Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
Dat blijft het ranzig, de ene keer wel GLOBALS gebruiken en de andere keer niet...

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Acties:
  • 0 Henk 'm!

Verwijderd

Inderdaad, ik zou register_globals uitzetten (ik maak hieruit op dat je hem aan hebt staan) zodat je wel $_POST, $_GET of $_REQUEST etc. moet gebruiken ...

Het is nog veiliger om register_globals uit te hebben ook...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
aha, ik heb dat ff nagelezen hier en hier en mijn host maar eens even geinformeerd ;)

het staat namelijk automatisch uit vanaf PHP 4.2.0, dus is er vast een oudere versie geinstalleerd

bedankt voor de info :)

Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
offtopic:
versie kun je checken met phpinfo();

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • creative8500
  • Registratie: September 2001
  • Laatst online: 01-02 14:14

creative8500

freedom.

PHP:
1
2
3
4
5
if (version_compare (phpversion (), '4.2.0'))
{
    // code ...
}
else die ('To run this script you need PHP 4.2.0 or a newer version.');

of:
PHP:
1
2
if (!version_compare ('4.2.0', phpversion ())
    die ('To run this script you need PHP 4.2.0 or a newer version.');

Acties:
  • 0 Henk 'm!

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07 12:07
voor al dat soort zaken gebruik ik gewoon global functions zoals:

gGetSessionVariable()
gGetInputVariable(); //eerst post dan get

etc.

Zodoende kan de volgende versie van PHP niet WEER eens alles overhoop gooien. Doe ik al heel lang en zit nu toch een paar versies verder zonder ooit een probleem te zijn tegengekomen (behalve de call-by-ref natuurlijk).

Overal waar een INI of versie iets uitmaakt zet ik het in een functie. En als je dan een compiling template engine gebruikt heb je helemaal geen overhead.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok tnx, ik zal nog eens kijken

Dit zag ik trouwens bij phpMyAdmin 2.2.6 staan:
Furthermore, we encountered crashes of the php module / binary when working with PHP 4.2.0 (tested with PHP 4.2.0 RC1 to RC4) and trying to download a (zipped) dump file using MS Internet Explorer. That is why we recommend not to run phpMyAdmin with PHP 4.2.0.
edit:

maar we zitten ondertussen al bij versie 4.3.4 :) alleen toevallig dat het weer precies versie 4.2.0 was

[ Voor 15% gewijzigd door Verwijderd op 31-12-2003 15:58 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
uhmmm..

nu staat er dus toch een nieuwere versie van PHP op mijn host: PHP Version 4.3.1

scroll.. scroll.. en inderdaad: register_globals staat On.

voegt weinig toe aan dit topic, maar ik wou het toch even kwijt :)
Pagina: 1